Hello world

First open source release of Campfire 🎉
This commit is contained in:
Kevin McConnell
2025-08-15 11:02:42 +01:00
commit df76a227dc
664 changed files with 36235 additions and 0 deletions

49
.dockerignore Normal file
View File

@@ -0,0 +1,49 @@
# See https://docs.docker.com/engine/reference/builder/#dockerignore-file for more about ignoring files.
# Ignore git directory.
/.git/
/.git*
# Ignore bundler config.
/.bundle
# Ignore all environment files.
/.env*
!/.env.example
# Ignore all logfiles and tempfiles.
/log/*
/tmp/*
!/log/.keep
!/tmp/.keep
# Ignore pidfiles, but keep the directory.
/tmp/pids/*
!/tmp/pids/
!/tmp/pids/.keep
# Ignore storage (uploaded files in development and any SQLite databases).
/storage/*
!/storage/
!/storage/.keep
# Ignore development credentials
/config/credentials.yml.enc
# Ignore deployment files
/config/deploy*.yml
/bin/deploy
/bin/deploy-*
/bin/release
# Ignore master.key (should be set in environment)
/config/master.key
# Ignore editor noise
/.vscode
# Ignore ignore
.dockerignore
# Ignore test files
/test/

4
.env.erb Normal file
View File

@@ -0,0 +1,4 @@
<% if (session_token = `op signin --account basecamp --raw`.strip) != "" %># Generated by mrsk envify
MRSK_REGISTRY_PASSWORD=<%= `op read "op://Deploy/Docker Hub MRSK/password" -n --session #{session_token}` %>
RAILS_MASTER_KEY=<%= `op read "op://Development/Chat-in-a-box/RAILS_MASTER_KEY" -n --session #{session_token}` %>
<% else raise ArgumentError, "Session token missing" end %>

7
.gitattributes vendored Normal file
View File

@@ -0,0 +1,7 @@
# See https://git-scm.com/docs/gitattributes for more about git attribute files.
# Mark the database schema as having been generated.
db/schema.rb linguist-generated
# Mark any vendored files as having been vendored.
vendor/* linguist-vendored

91
.github/workflows/ci.yml vendored Normal file
View File

@@ -0,0 +1,91 @@
name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: .ruby-version
bundler-cache: true
- name: Scan for security vulnerabilities
run: bin/brakeman
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: .ruby-version
bundler-cache: true
- name: Lint code for consistent style
run: bin/rubocop
test:
runs-on: ubuntu-latest
services:
redis:
image: redis
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
steps:
- name: Install packages
run: sudo apt-get update && sudo apt-get install --no-install-recommends -y libsqlite3-0 libvips curl ffmpeg
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
env:
REDIS_URL: redis://localhost:6379/0
with:
ruby-version: .ruby-version
bundler-cache: true
- name: Run tests
run: bin/rails db:setup test
test_system:
runs-on: ubuntu-latest
services:
redis:
image: redis
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
steps:
- name: Install packages
run: sudo apt-get update && sudo apt-get install --no-install-recommends -y libsqlite3-0 libvips curl ffmpeg
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
env:
REDIS_URL: redis://localhost:6379/0
with:
ruby-version: .ruby-version
bundler-cache: true
- name: Run tests
run: bin/rails db:setup test:system

44
.gitignore vendored Normal file
View File

@@ -0,0 +1,44 @@
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
#
# If you find yourself ignoring temporary files generated by your text editor
# or operating system, you probably want to add a global ignore instead:
# git config --global core.excludesfile '~/.gitignore_global'
# Ignore bundler config.
/.bundle
# Ignore the default SQLite database.
/db/*.sqlite3
/db/*.sqlite3-*
# Ignore all logfiles and tempfiles.
/log/*
/tmp/*
!/log/.keep
!/tmp/.keep
# Ignore pidfiles, but keep the directory.
/tmp/pids/*
!/tmp/pids/
!/tmp/pids/.keep
# Ignore uploaded files in development.
/storage/*
!/storage/.keep
/tmp/storage/*
!/tmp/storage/
!/tmp/storage/.keep
/public/assets
# Ignore master key for decrypting credentials and more.
/config/master.key
# Ignore production envs
/.env
# Ignore dartsass builds
app/assets/builds/*
# Ignore our exported zipfiles
/*.zip

5
.pumaenv Normal file
View File

@@ -0,0 +1,5 @@
CONFIG=./config/puma_dev.rb
# Mitigate Ruby crash on macOS (see https://github.com/rails/rails/issues/38560)
export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

2
.rubocop.yml Normal file
View File

@@ -0,0 +1,2 @@
# Omakase Ruby styling for Rails
inherit_gem: { rubocop-rails-omakase: rubocop.yml }

1
.ruby-version Normal file
View File

@@ -0,0 +1 @@
3.3.1

67
Dockerfile Normal file
View File

@@ -0,0 +1,67 @@
# syntax = docker/dockerfile:1
# Make sure it matches the Ruby version in .ruby-version and Gemfile
ARG RUBY_VERSION=3.3.1
FROM ruby:$RUBY_VERSION-slim AS base
# Rails app lives here
WORKDIR /rails
# Set production environment
ENV RAILS_ENV="production" \
BUNDLE_DEPLOYMENT="1" \
BUNDLE_PATH="/usr/local/bundle" \
BUNDLE_WITHOUT="development"
# Throw-away build stage to reduce size of final image
FROM base AS build
# Install packages need to build gems
RUN apt-get update -qq && \
apt-get install -y build-essential git pkg-config
# Install application gems
COPY Gemfile Gemfile.lock ./
RUN bundle install && \
rm -rf ~/.bundle/ "${BUNDLE_PATH}"/ruby/*/cache "${BUNDLE_PATH}"/ruby/*/bundler/gems/*/.git
# Copy application code
COPY . .
# Precompiling assets for production without requiring secret RAILS_MASTER_KEY
RUN SECRET_KEY_BASE_DUMMY=1 ./bin/rails assets:precompile
# Final stage for app image
FROM base
# Configure environment defaults
ENV HTTP_IDLE_TIMEOUT=60
ENV HTTP_READ_TIMEOUT=300
ENV HTTP_WRITE_TIMEOUT=300
# Install packages needed to run the application
RUN apt-get update -qq && \
apt-get install --no-install-recommends -y libsqlite3-0 libvips curl ffmpeg redis && \
rm -rf /var/lib/apt/lists /var/cache/apt/archives
# Run and own the application files as a non-root user for security
RUN useradd rails
USER rails:rails
# Copy built artifacts: gems, application
COPY --from=build --chown=rails:rails /usr/local/bundle /usr/local/bundle
COPY --from=build --chown=rails:rails /rails /rails
# Set version and revision
ARG APP_VERSION
ENV APP_VERSION=$APP_VERSION
ARG GIT_REVISION
ENV GIT_REVISION=$GIT_REVISION
# Expose ports for HTTP and HTTPS
EXPOSE 80 443
# Start the server by default, this can be overwritten at runtime
CMD ["bin/boot"]

59
Gemfile Normal file
View File

@@ -0,0 +1,59 @@
source "https://rubygems.org"
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
git_source(:bc) { |repo| "https://github.com/basecamp/#{repo}" }
# Rails
gem "rails", github: "rails/rails", branch: "main"
# Drivers
gem "sqlite3", "~> 1.4"
gem "redis", "~> 4.0"
# Deployment
gem "puma", "~> 6.4"
# Jobs
gem "resque", "~> 2.6.0"
gem "resque-pool", "~> 0.7.1"
# Assets
gem "propshaft", github: "rails/propshaft"
gem "importmap-rails", github: "rails/importmap-rails"
# Hotwire
gem "turbo-rails", github: "hotwired/turbo-rails"
gem "stimulus-rails"
# Media handling
gem "image_processing", ">= 1.2"
# Telemetry
gem "sentry-ruby"
gem "sentry-rails"
# Other
gem "bcrypt"
gem "web-push"
gem "rqrcode"
gem "rails_autolink"
gem "geared_pagination"
gem "jbuilder"
gem "net-http-persistent"
gem "kredis"
gem "platform_agent"
gem "thruster"
group :development, :test do
gem "debug"
gem "rubocop-rails-omakase", require: false
gem "faker", require: false
gem "brakeman", require: false
end
group :test do
gem "capybara"
gem "mocha"
gem "selenium-webdriver"
gem "webmock", require: false
end

407
Gemfile.lock Normal file
View File

@@ -0,0 +1,407 @@
GIT
remote: https://github.com/hotwired/turbo-rails.git
revision: d7155dd51d8aeaa7128ab50a62b5cd3cb91b84f1
specs:
turbo-rails (2.0.0)
actionpack (>= 6.0.0)
activejob (>= 6.0.0)
railties (>= 6.0.0)
GIT
remote: https://github.com/rails/importmap-rails.git
revision: be74dead314957833f5d09e05a8daaa3526a964b
specs:
importmap-rails (2.0.1)
actionpack (>= 6.0.0)
activesupport (>= 6.0.0)
railties (>= 6.0.0)
GIT
remote: https://github.com/rails/propshaft.git
revision: e7cdbcd4aa9c9a390dade263bbd7c7cedc0c6442
specs:
propshaft (0.8.0)
actionpack (>= 7.0.0)
activesupport (>= 7.0.0)
rack
railties (>= 7.0.0)
GIT
remote: https://github.com/rails/rails.git
revision: 776626ff987a96201b0bdbd86d716ca6698fa8b3
branch: main
specs:
actioncable (7.2.0.alpha)
actionpack (= 7.2.0.alpha)
activesupport (= 7.2.0.alpha)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6)
actionmailbox (7.2.0.alpha)
actionpack (= 7.2.0.alpha)
activejob (= 7.2.0.alpha)
activerecord (= 7.2.0.alpha)
activestorage (= 7.2.0.alpha)
activesupport (= 7.2.0.alpha)
mail (>= 2.8.0)
actionmailer (7.2.0.alpha)
actionpack (= 7.2.0.alpha)
actionview (= 7.2.0.alpha)
activejob (= 7.2.0.alpha)
activesupport (= 7.2.0.alpha)
mail (>= 2.8.0)
rails-dom-testing (~> 2.2)
actionpack (7.2.0.alpha)
actionview (= 7.2.0.alpha)
activesupport (= 7.2.0.alpha)
nokogiri (>= 1.8.5)
racc
rack (>= 2.2.4)
rack-session (>= 1.0.1)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
useragent (~> 0.16)
actiontext (7.2.0.alpha)
actionpack (= 7.2.0.alpha)
activerecord (= 7.2.0.alpha)
activestorage (= 7.2.0.alpha)
activesupport (= 7.2.0.alpha)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (7.2.0.alpha)
activesupport (= 7.2.0.alpha)
builder (~> 3.1)
erubi (~> 1.11)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
activejob (7.2.0.alpha)
activesupport (= 7.2.0.alpha)
globalid (>= 0.3.6)
activemodel (7.2.0.alpha)
activesupport (= 7.2.0.alpha)
activerecord (7.2.0.alpha)
activemodel (= 7.2.0.alpha)
activesupport (= 7.2.0.alpha)
timeout (>= 0.4.0)
activestorage (7.2.0.alpha)
actionpack (= 7.2.0.alpha)
activejob (= 7.2.0.alpha)
activerecord (= 7.2.0.alpha)
activesupport (= 7.2.0.alpha)
marcel (~> 1.0)
activesupport (7.2.0.alpha)
base64
bigdecimal
concurrent-ruby (~> 1.0, >= 1.0.2)
connection_pool (>= 2.2.5)
drb
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0, >= 2.0.5)
rails (7.2.0.alpha)
actioncable (= 7.2.0.alpha)
actionmailbox (= 7.2.0.alpha)
actionmailer (= 7.2.0.alpha)
actionpack (= 7.2.0.alpha)
actiontext (= 7.2.0.alpha)
actionview (= 7.2.0.alpha)
activejob (= 7.2.0.alpha)
activemodel (= 7.2.0.alpha)
activerecord (= 7.2.0.alpha)
activestorage (= 7.2.0.alpha)
activesupport (= 7.2.0.alpha)
bundler (>= 1.15.0)
railties (= 7.2.0.alpha)
railties (7.2.0.alpha)
actionpack (= 7.2.0.alpha)
activesupport (= 7.2.0.alpha)
irb
rackup (>= 1.0.0)
rake (>= 12.2)
thor (~> 1.0, >= 1.2.2)
zeitwerk (~> 2.6)
GEM
remote: https://rubygems.org/
specs:
addressable (2.8.6)
public_suffix (>= 2.0.2, < 6.0)
ast (2.4.2)
base64 (0.2.0)
bcrypt (3.1.20)
bigdecimal (3.1.6)
brakeman (6.1.1)
racc
builder (3.2.4)
capybara (3.39.2)
addressable
matrix
mini_mime (>= 0.1.3)
nokogiri (~> 1.8)
rack (>= 1.6.0)
rack-test (>= 0.6.3)
regexp_parser (>= 1.5, < 3.0)
xpath (~> 3.2)
chunky_png (1.4.0)
concurrent-ruby (1.2.3)
connection_pool (2.4.1)
crack (0.4.5)
rexml
crass (1.0.6)
date (3.3.4)
debug (1.9.1)
irb (~> 1.10)
reline (>= 0.3.8)
drb (2.2.0)
ruby2_keywords
erubi (1.12.0)
faker (3.2.2)
i18n (>= 1.8.11, < 2)
ffi (1.16.3)
geared_pagination (1.2.0)
activesupport (>= 5.0)
addressable (>= 2.5.0)
globalid (1.2.1)
activesupport (>= 6.1)
hashdiff (1.1.0)
i18n (1.14.1)
concurrent-ruby (~> 1.0)
image_processing (1.12.2)
mini_magick (>= 4.9.5, < 5)
ruby-vips (>= 2.0.17, < 3)
io-console (0.7.2)
irb (1.11.1)
rdoc
reline (>= 0.4.2)
jbuilder (2.11.5)
actionview (>= 5.0.0)
activesupport (>= 5.0.0)
json (2.7.1)
jwt (2.7.1)
kredis (1.7.0)
activemodel (>= 6.0.0)
activesupport (>= 6.0.0)
redis (>= 4.2, < 6)
language_server-protocol (3.17.0.3)
loofah (2.22.0)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
mail (2.8.1)
mini_mime (>= 0.1.1)
net-imap
net-pop
net-smtp
marcel (1.0.2)
matrix (0.4.2)
mini_magick (4.12.0)
mini_mime (1.1.5)
minitest (5.22.1)
mocha (2.1.0)
ruby2_keywords (>= 0.0.5)
mono_logger (1.1.2)
multi_json (1.15.0)
mustermann (3.0.0)
ruby2_keywords (~> 0.0.1)
net-http-persistent (4.0.2)
connection_pool (~> 2.2)
net-imap (0.4.9.1)
date
net-protocol
net-pop (0.1.2)
net-protocol
net-protocol (0.2.2)
timeout
net-smtp (0.4.0.1)
net-protocol
nio4r (2.7.0)
nokogiri (1.16.2-aarch64-linux)
racc (~> 1.4)
nokogiri (1.16.2-arm64-darwin)
racc (~> 1.4)
nokogiri (1.16.2-x86_64-darwin)
racc (~> 1.4)
nokogiri (1.16.2-x86_64-linux)
racc (~> 1.4)
openssl (3.2.0)
parallel (1.24.0)
parser (3.3.0.3)
ast (~> 2.4.1)
racc
platform_agent (1.0.1)
activesupport (>= 5.2.0)
useragent (~> 0.16.3)
psych (5.1.2)
stringio
public_suffix (5.0.4)
puma (6.4.2)
nio4r (~> 2.0)
racc (1.7.3)
rack (2.2.8)
rack-protection (3.2.0)
base64 (>= 0.1.0)
rack (~> 2.2, >= 2.2.4)
rack-session (1.0.2)
rack (< 3)
rack-test (2.1.0)
rack (>= 1.3)
rackup (1.0.0)
rack (< 3)
webrick
rails-dom-testing (2.2.0)
activesupport (>= 5.0.0)
minitest
nokogiri (>= 1.6)
rails-html-sanitizer (1.6.0)
loofah (~> 2.21)
nokogiri (~> 1.14)
rails_autolink (1.1.8)
actionview (> 3.1)
activesupport (> 3.1)
railties (> 3.1)
rainbow (3.1.1)
rake (13.1.0)
rdoc (6.6.2)
psych (>= 4.0.0)
redis (4.8.1)
redis-namespace (1.11.0)
redis (>= 4)
regexp_parser (2.9.0)
reline (0.4.2)
io-console (~> 0.5)
resque (2.6.0)
mono_logger (~> 1.0)
multi_json (~> 1.0)
redis-namespace (~> 1.6)
sinatra (>= 0.9.2)
resque-pool (0.7.1)
rake (>= 10.0, < 14.0)
resque (>= 1.22, < 3)
rexml (3.2.6)
rqrcode (2.2.0)
chunky_png (~> 1.0)
rqrcode_core (~> 1.0)
rqrcode_core (1.2.0)
rubocop (1.59.0)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
parser (>= 3.2.2.4)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.30.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.30.0)
parser (>= 3.2.1.0)
rubocop-minitest (0.34.4)
rubocop (>= 1.39, < 2.0)
rubocop-ast (>= 1.30.0, < 2.0)
rubocop-performance (1.20.2)
rubocop (>= 1.48.1, < 2.0)
rubocop-ast (>= 1.30.0, < 2.0)
rubocop-rails (2.23.1)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
rubocop-ast (>= 1.30.0, < 2.0)
rubocop-rails-omakase (1.0.0)
rubocop
rubocop-minitest
rubocop-performance
rubocop-rails
ruby-progressbar (1.13.0)
ruby-vips (2.2.0)
ffi (~> 1.12)
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
selenium-webdriver (4.16.0)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0)
sentry-rails (5.16.1)
railties (>= 5.0)
sentry-ruby (~> 5.16.1)
sentry-ruby (5.16.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
sinatra (3.2.0)
mustermann (~> 3.0)
rack (~> 2.2, >= 2.2.4)
rack-protection (= 3.2.0)
tilt (~> 2.0)
sqlite3 (1.7.0-aarch64-linux)
sqlite3 (1.7.0-arm64-darwin)
sqlite3 (1.7.0-x86_64-darwin)
sqlite3 (1.7.0-x86_64-linux)
stimulus-rails (1.3.3)
railties (>= 6.0.0)
stringio (3.1.0)
thor (1.3.0)
thruster (0.1.7-aarch64-linux)
thruster (0.1.7-arm64-darwin)
thruster (0.1.7-x86_64-darwin)
thruster (0.1.7-x86_64-linux)
tilt (2.3.0)
timeout (0.4.1)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
unicode-display_width (2.5.0)
useragent (0.16.10)
web-push (3.0.1)
jwt (~> 2.0)
openssl (~> 3.0)
webmock (3.19.1)
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
webrick (1.8.1)
websocket (1.2.10)
websocket-driver (0.7.6)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.6.13)
PLATFORMS
aarch64-linux
arm64-darwin
x86_64-darwin
x86_64-linux
DEPENDENCIES
bcrypt
brakeman
capybara
debug
faker
geared_pagination
image_processing (>= 1.2)
importmap-rails!
jbuilder
kredis
mocha
net-http-persistent
platform_agent
propshaft!
puma (~> 6.4)
rails!
rails_autolink
redis (~> 4.0)
resque (~> 2.6.0)
resque-pool (~> 0.7.1)
rqrcode
rubocop-rails-omakase
selenium-webdriver
sentry-rails
sentry-ruby
sqlite3 (~> 1.4)
stimulus-rails
thruster
turbo-rails!
web-push
webmock
BUNDLED WITH
2.5.9

20
MIT-LICENSE Normal file
View File

@@ -0,0 +1,20 @@
Copyright (c) 37signals, LLC
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

3
Procfile Normal file
View File

@@ -0,0 +1,3 @@
web: bundle exec thrust bin/start-app
redis: redis-server config/redis.conf
workers: FORK_PER_JOB=false INTERVAL=0.1 bundle exec resque-pool

51
README.md Normal file
View File

@@ -0,0 +1,51 @@
# Campfire
Campfire is web-based chat application. It supports many of the features you'd
expect, including:
- Multiple rooms, with access controls
- Direct messages
- File attachments with previews
- Search
- Notifications (via Web Push)
- @mentions
- API, with support for bot integrations
Campfire is single-tenant: any rooms designated "public" will be accessible by
all users in the system. To support entirely distinct groups of customers, you
would deploy multiple instances of the application.
## Running in development
bin/setup
bin/rails server
## Deploying with Docker
Campfire's Docker image contains everything needed for a fully-functional,
single-machine deployment. This includes the web app, background jobs, caching,
file serving, and SSL.
To persist storage of the database and file attachments, map a volume to `/rails/storage`.
To configure additional features, you can set the following environment variables:
- `SSL_DOMAIN` - enable automatic SSL via Let's Encrypt for the given domain name.
- `DISABLE_SSL` - alternatively, set `DISABLE_SSL` to serve over plain HTTP
- `VAPID_PUBLIC_KEY`/`VAPID_PRIVATE_KEY` - set these to a valid keypair to
allow sending Web Push notifications. You can generate a new keypair by running
`/script/admin/create-vapid-key`
For example:
docker build -t campfire .
docker run \
--publish 80:80 --publish 443:443 \
--restart unless-stopped \
--volume campfire:/rails/storage \
--env SECRET_KEY_BASE=$YOUR_SECRET_KEY_BASE \
--env VAPID_PUBLIC_KEY=$YOUR_PUBLIC_KEY \
--env VAPID_PRIVATE_KEY=$YOUR_PRIVATE_KEY \
--env SSL_DOMAIN=chat.example.com \
campfire

6
Rakefile Normal file
View File

@@ -0,0 +1,6 @@
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
require_relative "config/application"
Rails.application.load_tasks

0
app/assets/images/.keep Normal file
View File

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m0 12a1.5 1.5 0 0 0 1.5 1.5h8.75a.25.25 0 0 1 .25.25v8.75a1.5 1.5 0 0 0 3 0v-8.75a.25.25 0 0 1 .25-.25h8.75a1.5 1.5 0 0 0 0-3h-8.75a.25.25 0 0 1 -.25-.25v-8.75a1.5 1.5 0 0 0 -3 0v8.75a.25.25 0 0 1 -.25.25h-8.75a1.5 1.5 0 0 0 -1.5 1.5z"/></svg>

After

Width:  |  Height:  |  Size: 312 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m23.119 20-9.347-17.85a2 2 0 0 0 -3.543 0l-9.348 17.85a2 2 0 0 0 1.772 2.928h18.694a2 2 0 0 0 1.772-2.928zm-12.119-11.577a1 1 0 0 1 2 0v6a1 1 0 1 1 -2 0zm1.05 11.51h-.028a1.528 1.528 0 0 1 -1.522-1.47 1.476 1.476 0 0 1 1.448-1.53h.028a1.527 1.527 0 0 1 1.524 1.467 1.475 1.475 0 0 1 -1.45 1.533z"/></svg>

After

Width:  |  Height:  |  Size: 373 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m22.334 10.127a2.6 2.6 0 0 0 -3.689-.066l-3.716 3.872a.25.25 0 0 1 -.43-.173v-11.621a2.277 2.277 0 0 0 -2.499-2.039c-.817 0-2.516.449-2.5 2v11.681a.251.251 0 0 1 -.427.177l-3.741-3.73a2.616 2.616 0 0 0 -3.659.1 2.6 2.6 0 0 0 -.1 3.659l9.717 9.623a.988.988 0 0 0 .7.289h.01a.993.993 0 0 0 .705-.3l9.7-9.791a2.61 2.61 0 0 0 -.071-3.681z"/></svg>

After

Width:  |  Height:  |  Size: 412 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m21.864 9.5h-11.607a.25.25 0 0 1 -.174-.43l3.864-3.721a2.609 2.609 0 0 0 -.075-3.682 2.612 2.612 0 0 0 -3.68-.077l-9.792 9.699a1 1 0 0 0 -.008 1.411l9.625 9.724a2.66 2.66 0 0 0 3.755-3.757l-3.729-3.733a.25.25 0 0 1 .177-.427h11.673c1.556 0 2-1.675 2-2.51a2.28 2.28 0 0 0 -2.029-2.497z"/></svg>

After

Width:  |  Height:  |  Size: 362 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m23.6 11.289-9.793-9.7a2.607 2.607 0 0 0 -3.679.075 2.638 2.638 0 0 0 -.068 3.689l3.871 3.714a.25.25 0 0 1 -.173.43h-11.623a2.28 2.28 0 0 0 -2.035 2.503c0 .815.448 2.51 2 2.51h11.679a.25.25 0 0 1 .177.427l-3.731 3.733a2.66 2.66 0 0 0 3.758 3.754l9.625-9.72a1 1 0 0 0 -.008-1.415z"/></svg>

After

Width:  |  Height:  |  Size: 357 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m22.41 10.2-9.704-9.8a.99.99 0 0 0 -.706-.3.992.992 0 0 0 -.7.289l-9.727 9.631a2.6 2.6 0 0 0 .1 3.657 2.59 2.59 0 0 0 3.657.1l3.743-3.732a.25.25 0 0 1 .426.178v11.666c-.016 1.559 1.665 2.011 2.501 2.011a2.276 2.276 0 0 0 2.5-2.034v-11.625a.25.25 0 0 1 .431-.173l3.722 3.881a2.658 2.658 0 0 0 3.757-3.749z"/></svg>

After

Width:  |  Height:  |  Size: 382 B

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 24 24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m14.2 15.2c.1-.7-.4-1.4-1.1-1.5-1.8-.2-3.5.8-4.2 2.5-.5 1.2-1 1.1-1.5.9-2.7-.7-4.6-3.1-4.8-5.8.1-3.5 3.6-6.3 7.9-6.3 1.7 0 3.3.4 4.7 1.3.6.4 1.5.2 1.9-.4s.2-1.5-.4-1.9c-1.9-1.1-4-1.7-6.1-1.7-6-.1-10.6 4-10.6 9 .2 3.9 2.8 7.3 6.6 8.4 1.9.7 4-.2 4.7-2.1 0-.1.1-.2.1-.3.2-.6.8-.9 1.4-.9s1.3-.5 1.4-1.2z"/><circle cx="6.1" cy="12.8" r="1.3"/><circle cx="7.4" cy="8.4" r="1.3"/><circle cx="11.8" cy="7.5" r="1.3"/><path d="m21.8 4.4c-.3-.2-.6-.2-.9-.1s-.5.4-.5.7c0 1.1-.6 2.1-1.5 2.6-1.3 1-2.2 2-1.8 3.7.1.4.3.8.5 1.1s.2.6.1.9l-4.5 8.9c-.3.7-.1 1.5.6 1.8s1.5.1 1.8-.6l4.7-9.3c.1-.2.3-.4.6-.5.9-.2 1.6-.8 2.2-1.5.8-1.1 1.1-2.5.8-3.8-.2-1.6-1-2.9-2.1-3.9z"/></svg>

After

Width:  |  Height:  |  Size: 760 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m21.843 3.455a6.961 6.961 0 0 0 -9.846 0l-10.378 10.377a5.128 5.128 0 0 0 7.252 7.252l8.429-8.431a3.293 3.293 0 1 0 -4.654-4.653l-5.189 5.184a1 1 0 1 0 1.414 1.416l5.189-5.191a1.294 1.294 0 0 1 1.829 1.83l-8.432 8.431a3.128 3.128 0 0 1 -4.424-4.424l10.378-10.377a4.962 4.962 0 1 1 7.018 7.018l-7.783 7.783a1 1 0 1 0 1.414 1.414l7.783-7.784a6.96 6.96 0 0 0 0-9.846z"/></svg>

After

Width:  |  Height:  |  Size: 442 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m19.75 6h3.5a.5.5 0 0 0 .475-.658l-1.75-5a.5.5 0 0 0 -.95 0l-1.75 5a.5.5 0 0 0 .475.658z"/><path d="m16.5 2h-12.5a.5.5 0 0 0 -.5.5v19a.5.5 0 0 0 .5.5h12.5a.5.5 0 0 0 .5-.5v-19a.5.5 0 0 0 -.5-.5zm-9 8.5v-3a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v3a.5.5 0 0 1 -.5.5h-5a.5.5 0 0 1 -.5-.5z"/><path d="m2 2h-.5a1.5 1.5 0 0 0 -1.5 1.5v17a1.5 1.5 0 0 0 1.5 1.5h.5a.5.5 0 0 0 .5-.5v-19a.5.5 0 0 0 -.5-.5z"/><rect height="12.5" rx=".5" width="5" x="19" y="7"/><path d="m23.5 20.5h-4a.5.5 0 0 0 -.5.5v.5a2.5 2.5 0 1 0 5 0v-.5a.5.5 0 0 0 -.5-.5z"/></svg>

After

Width:  |  Height:  |  Size: 607 B

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 24 24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m16.5 14.1c-.5-.3-1.1-.1-1.4.4-.6 1.2-1.8 1.9-3.1 2-1.3 0-2.5-.8-3.1-2-.3-.5-.9-.6-1.4-.3-.5.2-.6.8-.4 1.3 1 1.8 2.8 3 4.9 3s3.9-1.2 4.9-3c.2-.5.1-1.1-.4-1.4z"/><circle cx="8" cy="9" r="2"/><circle cx="16" cy="9" r="2"/><path d="m6.9 1.1c-6 2.9-8.4 10.1-5.5 16 2.3 4.6 7.2 7.3 12.3 6.6.1 0 .2 0 .3-.1.5-.2.7-.8.5-1.3-.2-.4-.6-.6-1-.6-5.5.7-10.5-3.1-11.2-8.6s3.1-10.4 8.5-11.1 10.5 3.1 11.2 8.6c.2 1.2.1 2.4-.2 3.6-.1.5.2 1.1.7 1.2s1.1-.2 1.2-.7c1.6-6.4-2.4-12.9-8.9-14.5-2.6-.6-5.4-.3-7.9.9z"/><path d="m18.1 22.8c0 .7.6 1.2 1.2 1.2s1.2-.6 1.2-1.2v-2c0-.1.1-.2.2-.2h2c.7 0 1.2-.6 1.2-1.2s-.3-1.4-1-1.4h-2c-.1 0-.2-.1-.2-.2v-2c0-.7-.6-1.2-1.2-1.2s-1.2.6-1.2 1.2v2c0 .1-.1.2-.2.2h-2c-.7 0-1.2.6-1.2 1.2s.6 1.2 1.2 1.2h2c.1 0 .2.1.2.2v2.2z"/></svg>

After

Width:  |  Height:  |  Size: 848 B

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 24 24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12 0c1.2 0 2.2 1 2.2 2.2 0 .8-.4 1.5-1.1 1.9v1.4h1.1c4.2 0 7.6 3.4 7.6 7.6h1.1c.6 0 1.1.5 1.1 1.1v3.3c0 .6-.5 1.1-1.1 1.1h-1.1v1.1c0 1.2-1 2.2-2.2 2.2h-15.2c-1.2 0-2.2-1-2.2-2.2v-1.1h-1.1c-.6 0-1.1-.5-1.1-1.1v-3.3c0-.6.5-1.1 1.1-1.1h1.1c0-4.2 3.4-7.6 7.6-7.6h1.1v-1.4c-.6-.4-1.1-1.1-1.1-1.9 0-1.2 1-2.2 2.2-2.2m-4.9 12c-1.5 0-2.7 1.2-2.7 2.7s1.2 2.7 2.7 2.7 2.7-1.2 2.7-2.7-1.2-2.7-2.7-2.7m9.8 0c-1.5 0-2.7 1.2-2.7 2.7s1.2 2.7 2.7 2.7 2.7-1.2 2.7-2.7-1.2-2.7-2.7-2.7z"/></svg>

After

Width:  |  Height:  |  Size: 580 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m23.183 15.264-4.773-3.819a4.93 4.93 0 0 0 -4.21-.945.5.5 0 0 1 -.467-.133l-.819-.819a2.418 2.418 0 0 0 -2.236-.607.5.5 0 0 1 -.463-.134l-8.51-8.516a1 1 0 0 0 -1.405 1.418l8.487 8.491a.5.5 0 0 1 .133.474 2.35 2.35 0 0 0 .627 2.24l.819.819a.5.5 0 0 1 .133.467 4.926 4.926 0 0 0 .945 4.207l3.82 4.774a2.185 2.185 0 0 0 1.707.819 2.161 2.161 0 0 0 1.117-.309 16.382 16.382 0 0 0 5.6-5.6 2.186 2.186 0 0 0 -.505-2.827zm-1.359 2.041c-.052.083-.113.178-.182.283a.5.5 0 0 1 -.771.076l-2.339-2.339a.75.75 0 0 0 -1.06 1.06l2.528 2.53a.5.5 0 0 1 .008.7q-.2.207-.416.417a.5.5 0 0 1 -.7-.007l-2.508-2.508a.75.75 0 0 0 -1.061 1.061l2.312 2.311a.5.5 0 0 1 -.076.77c-.094.063-.179.118-.253.165a.5.5 0 0 1 -.658-.11l-3.641-4.554a2.955 2.955 0 0 1 4.153-4.154l4.553 3.643a.5.5 0 0 1 .111.656z"/><path d="m5.25 10.25a.5.5 0 0 1 -.5-.5.75.75 0 0 0 -1.5 0 .5.5 0 0 1 -.5.5.75.75 0 0 0 0 1.5.5.5 0 0 1 .5.5.75.75 0 0 0 1.5 0 .5.5 0 0 1 .5-.5.75.75 0 0 0 0-1.5z"/><path d="m10.25 21.25a.5.5 0 0 1 -.5-.5.75.75 0 0 0 -1.5 0 .5.5 0 0 1 -.5.5.75.75 0 0 0 0 1.5.5.5 0 0 1 .5.5.75.75 0 0 0 1.5 0 .5.5 0 0 1 .5-.5.75.75 0 0 0 0-1.5z"/><path d="m12.25 4h.75a.5.5 0 0 1 .5.5v.75a.75.75 0 0 0 1.5 0v-.75a.5.5 0 0 1 .5-.5h.75a.75.75 0 0 0 0-1.5h-.75a.5.5 0 0 1 -.5-.5v-.75a.75.75 0 0 0 -1.5 0v.75a.5.5 0 0 1 -.5.5h-.75a.75.75 0 0 0 0 1.5z"/><circle cx="3.5" cy="18.5" r="1"/><circle cx="21.5" cy="6" r="1"/></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 48 48" height="48" width="48"><defs><linearGradient id="a" x1="3.2173" y1="15" x2="44.7812" y2="15" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#d93025"/><stop offset="1" stop-color="#ea4335"/></linearGradient><linearGradient id="b" x1="20.7219" y1="47.6791" x2="41.5039" y2="11.6837" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fcc934"/><stop offset="1" stop-color="#fbbc04"/></linearGradient><linearGradient id="c" x1="26.5981" y1="46.5015" x2="5.8161" y2="10.506" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1e8e3e"/><stop offset="1" stop-color="#34a853"/></linearGradient></defs><circle cx="24" cy="23.9947" r="12" style="fill:#fff"/><path d="M3.2154,36A24,24,0,1,0,12,3.2154,24,24,0,0,0,3.2154,36ZM34.3923,18A12,12,0,1,1,18,13.6077,12,12,0,0,1,34.3923,18Z" style="fill:none"/><path d="M24,12H44.7812a23.9939,23.9939,0,0,0-41.5639.0029L13.6079,30l.0093-.0024A11.9852,11.9852,0,0,1,24,12Z" style="fill:url(#a)"/><circle cx="24" cy="24" r="9.5" style="fill:#1a73e8"/><path d="M34.3913,30.0029,24.0007,48A23.994,23.994,0,0,0,44.78,12.0031H23.9989l-.0025.0093A11.985,11.985,0,0,1,34.3913,30.0029Z" style="fill:url(#b)"/><path d="M13.6086,30.0031,3.218,12.006A23.994,23.994,0,0,0,24.0025,48L34.3931,30.0029l-.0067-.0068a11.9852,11.9852,0,0,1-20.7778.007Z" style="fill:url(#c)"/></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 48 48" height="48" width="48"><defs><linearGradient id="a" x1="3.2173" y1="15" x2="44.7812" y2="15" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#d93025"/><stop offset="1" stop-color="#ea4335"/></linearGradient><linearGradient id="b" x1="20.7219" y1="47.6791" x2="41.5039" y2="11.6837" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fcc934"/><stop offset="1" stop-color="#fbbc04"/></linearGradient><linearGradient id="c" x1="26.5981" y1="46.5015" x2="5.8161" y2="10.506" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1e8e3e"/><stop offset="1" stop-color="#34a853"/></linearGradient></defs><circle cx="24" cy="23.9947" r="12" style="fill:#fff"/><path d="M3.2154,36A24,24,0,1,0,12,3.2154,24,24,0,0,0,3.2154,36ZM34.3923,18A12,12,0,1,1,18,13.6077,12,12,0,0,1,34.3923,18Z" style="fill:none"/><path d="M24,12H44.7812a23.9939,23.9939,0,0,0-41.5639.0029L13.6079,30l.0093-.0024A11.9852,11.9852,0,0,1,24,12Z" style="fill:url(#a)"/><circle cx="24" cy="24" r="9.5" style="fill:#1a73e8"/><path d="M34.3913,30.0029,24.0007,48A23.994,23.994,0,0,0,44.78,12.0031H23.9989l-.0025.0093A11.985,11.985,0,0,1,34.3913,30.0029Z" style="fill:url(#b)"/><path d="M13.6086,30.0031,3.218,12.006A23.994,23.994,0,0,0,24.0025,48L34.3931,30.0029l-.0067-.0068a11.9852,11.9852,0,0,1-20.7778.007Z" style="fill:url(#c)"/></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 31 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 75.591 75.591" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(0 -54.944 -54.944 0 23.62 79.474)" gradientUnits="userSpaceOnUse" x2="1"><stop offset="0" stop-color="#ff1b2d"/><stop offset=".3" stop-color="#ff1b2d"/><stop offset=".614" stop-color="#ff1b2d"/><stop offset="1" stop-color="#a70014"/></linearGradient><linearGradient id="b" gradientTransform="matrix(0 -48.595 -48.595 0 37.854 76.235)" gradientUnits="userSpaceOnUse" x2="1"><stop offset="0" stop-color="#9c0000"/><stop offset=".7" stop-color="#ff4b4b"/><stop offset="1" stop-color="#ff4b4b"/></linearGradient><g transform="matrix(1.3333 0 0 -1.3333 0 107.2)"><path d="m28.346 80.398c-15.655 0-28.346-12.691-28.346-28.346 0-15.202 11.968-27.609 26.996-28.313.44848-.02115.89766-.03314 1.3504-.03314 7.2574 0 13.876 2.7289 18.891 7.2137-3.3227-2.2036-7.2074-3.4715-11.359-3.4715-6.7504 0-12.796 3.3488-16.862 8.6297-3.1344 3.6999-5.1645 9.1691-5.3028 15.307v1.3349c.13821 6.1377 2.1683 11.608 5.302 15.307 4.0666 5.2809 10.112 8.6297 16.862 8.6297 4.1526 0 8.038-1.2679 11.361-3.4729-4.9904 4.4643-11.569 7.1876-18.786 7.2144-.03596 0-.07122.0014-.10718.0014z" fill="url(#a)"/><path d="m19.016 68.025c2.6013 3.0709 5.9607 4.9227 9.631 4.9227 8.2524 0 14.941-9.356 14.941-20.897s-6.6891-20.897-14.941-20.897c-3.6703 0-7.0297 1.851-9.6303 4.922 4.0659-5.2809 10.111-8.6297 16.862-8.6297 4.1519 0 8.0366 1.2679 11.359 3.4715 5.802 5.1906 9.4554 12.735 9.4554 21.133 0 8.397-3.6527 15.941-9.4533 21.131-3.3234 2.205-7.2088 3.4729-11.361 3.4729-6.7504 0-12.796-3.3488-16.862-8.6297" fill="url(#b)"/></g></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><circle cx="14.75" cy="13.125" r="3.75"/><path d="m21.444 6.125h-1.316a.534.534 0 0 1 -.481-.346c-.618-1.304-1.257-2.654-2.647-2.654h-5c-1.071 0-1.636.778-2.659 2.191-.384.527-.51.809-.844.809h-6c-2.063 0-2.497 1.209-2.497 2.223v10.388a2.254 2.254 0 0 0 2.556 2.389h18.888a2.254 2.254 0 0 0 2.556-2.389v-10.388c0-1.014-.443-2.223-2.556-2.223zm-.944 7a5.75 5.75 0 1 1 -5.75-5.75 5.756 5.756 0 0 1 5.75 5.75zm-15.5-3.25a1.25 1.25 0 1 1 -1.25-1.25 1.25 1.25 0 0 1 1.25 1.25z"/><path d="m2.5 5.109 3 .016a.5.5 0 0 0 .5-.5v-.25a1.5 1.5 0 0 0 -1.5-1.5h-1a1.5 1.5 0 0 0 -1.5 1.5v.234a.5.5 0 0 0 .5.5z"/></svg>

After

Width:  |  Height:  |  Size: 662 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m23.146 5.4-2.792-2.8a.5.5 0 0 0 -.708 0l-11.792 11.8a.5.5 0 0 1 -.708 0l-2.792-2.8a.5.5 0 0 0 -.708 0l-2.792 2.8a.5.5 0 0 0 0 .707l6.292 6.293a.5.5 0 0 0 .708 0l15.292-15.3a.5.5 0 0 0 0-.7z"/></svg>

After

Width:  |  Height:  |  Size: 268 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m21.414 4.914-4.328-4.328a2 2 0 0 0 -1.414-.586h-11.672a2 2 0 0 0 -2 2v20a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-15.672a2 2 0 0 0 -.586-1.414zm-10.414 14.586h-4.5a1 1 0 0 1 0-2h4.5a1 1 0 0 1 0 2zm4.5-4h-9a1 1 0 0 1 0-2h9a1 1 0 0 1 0 2zm0-4h-9a1 1 0 0 1 0-2h9a1 1 0 0 1 0 2z"/></svg>

After

Width:  |  Height:  |  Size: 344 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m13.4 4.727a.251.251 0 0 0 .2.265 1.089 1.089 0 0 1 .824 1.108v1.4a1.244 1.244 0 0 0 1.244 1.244 1.244 1.244 0 0 0 1.245-1.244v-3.525a1.494 1.494 0 0 0 -1.5-1.494h-1.724a.246.246 0 0 0 -.177.074.249.249 0 0 0 -.073.177c.002.473.001 1.492-.039 1.995z"/><path d="m8.954 21.262a1.244 1.244 0 0 0 -1.244-1.244h-4.226a1.073 1.073 0 0 1 -1-1.136v-12.782a1.086 1.086 0 0 1 .842-1.115.25.25 0 0 0 .2-.258c-.039-.766-.051-1.6-.055-2a.25.25 0 0 0 -.25-.247h-1.721a1.494 1.494 0 0 0 -1.5 1.495v17.037a1.493 1.493 0 0 0 1.494 1.493h6.216a1.244 1.244 0 0 0 1.244-1.243z"/><path d="m11.937 4.472v-1.988a.5.5 0 0 0 -.5-.5h-.758a.251.251 0 0 1 -.249-.222 1.989 1.989 0 0 0 -3.953 0 .249.249 0 0 1 -.249.222h-.755a.5.5 0 0 0 -.5.5v1.988a.5.5 0 0 0 .5.5h5.967a.5.5 0 0 0 .497-.5z"/><path d="m19.02 17.269h-3.979a.75.75 0 1 0 0 1.5h3.979a.75.75 0 1 0 0-1.5z"/><path d="m14.291 14.54a.75.75 0 0 0 .75.749h2.486a.75.75 0 1 0 0-1.5h-2.486a.75.75 0 0 0 -.75.751z"/><path d="m23.5 13.46a1.991 1.991 0 0 0 -.584-1.409l-1.406-1.4a1.994 1.994 0 0 0 -1.41-.584h-7.606a1.993 1.993 0 0 0 -1.994 1.988v9.945a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2zm-11-.4a1 1 0 0 1 1-1h6.187a1 1 0 0 1 .707.292l.818.816a1 1 0 0 1 .293.708v7.124a1 1 0 0 1 -1 1h-7a1 1 0 0 1 -1-1z"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m24 6.25a3 3 0 1 0 -4.258 2.714c-.47 1.376-1.536 3.786-3.242 3.786-2.3 0-2.967-3.142-3.53-6.175a3 3 0 1 0 -1.94 0c-.56 3.1-1.239 6.175-3.53 6.175-1.706 0-2.772-2.41-3.242-3.786a3.008 3.008 0 1 0 -2.129.141l1.635 9.809a1 1 0 0 0 .986.836h14.5a1 1 0 0 0 .986-.836l1.635-9.809a2.992 2.992 0 0 0 2.129-2.855z"/><path d="m19.25 21.25h-14.5a1 1 0 0 0 0 2h14.5a1 1 0 0 0 0-2z"/></svg>

After

Width:  |  Height:  |  Size: 446 B

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 17 17" viewBox="0 0 17 17" xmlns="http://www.w3.org/2000/svg"><path d="m0 0h17v17h-17z" fill="#fff"/><path d="m0 0h17v17h-17z" fill-opacity=".33"/><path d="m10.9 11.9-.5-.2c-.2-.4-.2-.8-.1-1.2.9-.9 1.3-2.1 1.2-3.3 0-1.8-1.3-3.2-3.1-3.2s-3 1.4-3 3.2c-.1 1.1.3 2.4 1.2 3.3.2.4.2.8-.1 1.2l-.5.2c-1.9.7-3.4 1.1-3.9 2-.3.9-.6 1.8-.6 2.7 0 .2.2.4.4.4h12.9c.2 0 .4-.2.4-.4 0-.9-.2-1.8-.6-2.7-.3-.8-1.8-1.3-3.7-2z" fill-opacity=".5"/></svg>

After

Width:  |  Height:  |  Size: 464 B

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 18 18" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg"><path d="m0 0h18v18h-18z" fill="#fff"/><path d="m0 0h18v18h-18z" fill-opacity=".33"/><g fill-opacity=".5"><path d="m14.9 15.2-3.3-.6s0-.9 0-1.1-.8-.1-.8-.1v-.3c.1 0 .2-.1.2-.1s.1-.1.2-.2h.6v.3l.4-.2v-1.1l-.4-.4.5-.1.2-1.1h.3l.2-1.8-.3-.2.1-.2s.1-.9-.5-2.3c-.7-1.7-3.1-2.5-3.1-2.5h-.4c-.4.1-2.4 1-3.1 2.5-.6 1.3-.4 2.2-.4 2.2l.1.2-.4.3.3 1.9h.3l.2 1.1.5.1-.4.4v1.1l.4.2v-.3h.6c0 .1 0 .1.1.2 0 0 .1.1.2.1v.3s-.8-.1-.8.1v1.1l-3.3.6s-.9 1-.8 2.8h13.5c0-1.9-.9-2.9-.9-2.9zm-7.1-5.5c-.5 0-.8-.4-.8-.8-.1-.5.3-.9.8-.9s.8.4.8.8c0 .5-.4.9-.8.9zm1.8 2.2h-1.2v-.4h1.1zm.6-2.2c-.5 0-.8-.4-.8-.8 0-.5.4-.9.8-.9.5 0 .8.4.8.8.1.5-.3.9-.8.9z"/><path d="m7.8 8.6c-.1 0-.2.1-.2.2s.1.2.2.2c.1.1.2 0 .2-.2 0-.1-.1-.2-.2-.2z"/><path d="m10.2 8.6c-.1 0-.2.1-.2.2s.1.2.2.2.2-.1.2-.2c.1-.1 0-.2-.2-.2z"/></g></svg>

After

Width:  |  Height:  |  Size: 884 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m7.207 23.751 12.471-10.984a1.066 1.066 0 0 0 0-1.539l-12.471-10.979a.987.987 0 0 0 -1.414.107l-1.557 1.85a1.028 1.028 0 0 0 .111 1.438l9.453 8.165a.25.25 0 0 1 0 .379l-9.45 8.168a1.021 1.021 0 0 0 -.349.7 1 1 0 0 0 .238.741l1.558 1.851a.989.989 0 0 0 1.414.107z"/></svg>

After

Width:  |  Height:  |  Size: 340 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m22.667 16.938a1.212 1.212 0 0 0 -1.212 1.212v1.855a1.572 1.572 0 0 1 -1.571 1.57h-15.768a1.572 1.572 0 0 1 -1.571-1.57v-1.855a1.212 1.212 0 0 0 -2.424 0v1.855a4 4 0 0 0 3.995 4h15.768a4 4 0 0 0 4-4v-1.855a1.212 1.212 0 0 0 -1.217-1.212z"/><path d="m12 0a1.939 1.939 0 0 0 -1.939 1.939v9.066a.25.25 0 0 1 -.25.25h-2.659a.97.97 0 0 0 -.732 1.606l4.848 5.576a.969.969 0 0 0 1.464 0l4.848-5.576a.97.97 0 0 0 -.732-1.606h-2.659a.25.25 0 0 1 -.25-.25v-9.066a1.939 1.939 0 0 0 -1.939-1.939z"/></svg>

After

Width:  |  Height:  |  Size: 562 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m23.888 5.832a.182.182 0 0 0 -.2.039l-9.747 9.745a2.75 2.75 0 0 1 -3.888 0l-9.743-9.745a.18.18 0 0 0 -.2-.039.182.182 0 0 0 -.11.168v12a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2v-12a.181.181 0 0 0 -.112-.168z"/><path d="m11.115 14.556a1.252 1.252 0 0 0 1.768 0l9.686-9.686a.5.5 0 0 0 .121-.511c-.11-.329-.416-.359-.69-.359h-20c-.275 0-.583.03-.691.359a.5.5 0 0 0 .121.511z"/></svg>

After

Width:  |  Height:  |  Size: 439 B

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 24 24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m5.1.6c1.4 0 2.6 1.2 2.6 2.6s-1.1 2.5-2.6 2.5-2.5-1.1-2.5-2.5 1.1-2.6 2.5-2.6m0 6c2.8 0 5.1 1.2 5.1 2.6v1.1h-10.2v-1.1c0-1.5 2.3-2.6 5.1-2.6z"/><path d="m18.9.6c1.4 0 2.6 1.2 2.6 2.6s-1.2 2.6-2.6 2.6-2.6-1.2-2.6-2.6 1.1-2.6 2.6-2.6m0 6c2.8 0 5.1 1.2 5.1 2.6v1.1h-10.3v-1.1c0-1.5 2.3-2.6 5.2-2.6z"/><path d="m5.1 14.3c1.4 0 2.6 1.2 2.6 2.6s-1.2 2.6-2.6 2.6-2.6-1.2-2.6-2.6 1.2-2.6 2.6-2.6m0 6c2.8 0 5.1 1.2 5.1 2.6v1.1h-10.2v-1.1c0-1.5 2.3-2.6 5.1-2.6z"/><path d="m18.9 14.3c1.4 0 2.6 1.2 2.6 2.6s-1.2 2.6-2.6 2.6-2.6-1.2-2.6-2.6 1.1-2.6 2.6-2.6m0 6c2.8 0 5.1 1.2 5.1 2.6v1.1h-10.3v-1.1c0-1.5 2.3-2.6 5.2-2.6z"/></svg>

After

Width:  |  Height:  |  Size: 720 B

1
app/assets/images/external/gear.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 22 22" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg"><path d="m20.3 4.7h-2.8c-.1 0-.3-.1-.3-.3v-2.7c0-.4-.4-.8-.8-.8s-.8.4-.8.8v2.8c0 .1-.1.3-.3.3h-2.8c-.4 0-.8.4-.8.8s.4.8.8.8h2.8c.1 0 .3.1.3.3v2.8c0 .4.4.8.8.8s.8-.4.8-.8v-3c0-.1.1-.3.3-.3h2.8c.4 0 .8-.4.8-.8 0-.3-.3-.7-.8-.7z"/><path d="m8.2 1.6c.4 0 .8.3.8.8v5.8c0 .4-.3.8-.8.8h-5.9c-.4 0-.8-.3-.8-.8v-5.9c0-.4.3-.8.8-.8h5.9m0-1.5h-5.9c-1.2 0-2.3 1.1-2.3 2.3v5.8c0 1.3 1.1 2.3 2.3 2.3h5.8c1.3 0 2.3-1.1 2.3-2.3v-5.8c.1-1.2-1-2.3-2.2-2.3z"/><path d="m8.2 13.1c.4 0 .8.3.8.8v5.8c0 .4-.3.8-.8.8h-5.9c-.4 0-.8-.3-.8-.8v-5.8c0-.4.3-.8.8-.8zm0-1.6h-5.9c-1.3 0-2.3 1.1-2.3 2.3v5.8c0 1.3 1.1 2.4 2.3 2.4h5.8c1.3 0 2.3-1.1 2.3-2.3v-5.8c.1-1.3-1-2.4-2.2-2.4z"/><path d="m19.7 13.1c.4 0 .8.3.8.8v5.8c0 .4-.3.8-.8.8h-5.8c-.4 0-.8-.3-.8-.8v-5.8c0-.4.3-.8.8-.8zm0-1.6h-5.8c-1.3 0-2.3 1.1-2.3 2.3v5.8c0 1.3 1.1 2.3 2.3 2.3h5.8c1.3 0 2.3-1.1 2.3-2.3v-5.8c0-1.2-1.1-2.3-2.3-2.3z"/></svg>

After

Width:  |  Height:  |  Size: 965 B

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 24 24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m20.3 16.9c0 .1-.1.2-.2.2h-16.1c-.1 0-.2-.1-.2-.2v-9.8c-.1-.1 0-.2.2-.2h5.8c0-.1 0-.2 0-.3 0-.6.1-1.1.2-1.7h-6.3c-1.1 0-2 .9-2 2v11.7c0 1.1.9 2 2 2h7.1c.1 0 .2.1.2.2v1c0 .1-.1.2-.2.2h-4.9c-.5 0-1 .4-1 1 0 .5.4 1 1 1h12.2c.5 0 1-.4 1-1 0-.5-.4-1-1-1h-4.9c-.1 0-.2-.1-.2-.2v-1c0-.1.1-.2.2-.2h7.1c1.1 0 2-.9 2-2v-5.8c-.6.5-1.2.8-2 1.1z"/><path d="m17.5.1c-3 0-5.6 2.1-6.3 4.9-.1.4-.2 1-.2 1.6v.3c.2 3.4 3 6.2 6.5 6.2 1 0 2-.2 2.8-.6.7-.4 1.4-.8 2-1.4 1-1.3 1.7-2.8 1.7-4.5 0-3.6-2.9-6.5-6.5-6.5zm2.4 7.3-2 2.5c-.2.2-.5.3-.7.1 0 0-.1 0-.1-.1l-2-2.5c-.2-.2-.1-.5.1-.7.1-.1.2-.1.3-.1h.8c.1 0 .2-.1.2-.2v-2.8c0-.6.4-1 1-1s1 .4 1 1v2.8c0 .1.1.2.2.2h.8c.3 0 .5.2.5.5 0 .1 0 .2-.1.3z"/></svg>

After

Width:  |  Height:  |  Size: 785 B

1
app/assets/images/external/share.svg vendored Normal file
View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12 1-4 4h3v9h2v-9h3m2 18h-12c-1.11 0-2-.9-2-2v-12a2 2 0 0 1 2-2h3v2h-3v12h12v-12h-3v-2h3a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2z"/></svg>

After

Width:  |  Height:  |  Size: 200 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m8 13c-1.86 0-3.41 1.28-3.86 3h-2.14v2h2.14c.45 1.72 2 3 3.86 3s3.41-1.28 3.86-3h10.14v-2h-10.14c-.45-1.72-2-3-3.86-3m0 6c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2m11.86-13c-.45-1.72-2-3-3.86-3s-3.41 1.28-3.86 3h-10.14v2h10.14c.45 1.72 2 3 3.86 3s3.41-1.28 3.86-3h2.14v-2zm-3.86 3c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"/></svg>

After

Width:  |  Height:  |  Size: 403 B

1
app/assets/images/external/switch.svg vendored Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6zm0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4zM7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z" /></svg>

After

Width:  |  Height:  |  Size: 278 B

1
app/assets/images/external/web.svg vendored Normal file
View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m16.36 14c.08-.66.14-1.32.14-2s-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2m-5.15 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95c-.96 1.65-2.49 2.93-4.33 3.56m-.25-5.56h-4.68c-.1-.66-.16-1.32-.16-2s.06-1.35.16-2h4.68c.09.65.16 1.32.16 2s-.07 1.34-.16 2m-2.34 5.96c-.83-1.2-1.5-2.53-1.91-3.96h3.82c-.41 1.43-1.08 2.76-1.91 3.96m-4-11.96h-2.92c.95-1.66 2.49-2.94 4.32-3.56-.6 1.11-1.05 2.31-1.4 3.56m-2.92 8h2.92c.35 1.25.8 2.45 1.4 3.56-1.83-.63-3.37-1.91-4.32-3.56m-.82-2c-.16-.64-.26-1.31-.26-2s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2s.06 1.34.14 2m4.36-9.97c.83 1.2 1.5 2.54 1.91 3.97h-3.82c.41-1.43 1.08-2.77 1.91-3.97m6.92 3.97h-2.95c-.32-1.25-.78-2.45-1.38-3.56 1.84.63 3.37 1.9 4.33 3.56m-6.92-6c-5.53 0-10 4.5-10 10a10 10 0 0 0 10 10 10 10 0 0 0 10-10 10 10 0 0 0 -10-10z"/></svg>

After

Width:  |  Height:  |  Size: 859 B

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 24 24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><circle cx="12.2" cy="12.1" fill="#4183bf" r="9.3"/><path d="m17.9 17.4c-.3-.8-1-1.4-1.9-1.4h-1v-3c0-.6-.4-1-1-1h-6v-2h2c.6 0 1-.4 1-1v-2h2c1.1 0 2-.9 2-2v-.4c2.9 1.2 5 4.1 5 7.4 0 2.1-.8 4-2.1 5.4m-6.9 2.5c-3.9-.5-7-3.9-7-7.9 0-.6.1-1.2.2-1.8l4.8 4.8v1c0 1.1.9 2 2 2m1-16c-5.5 0-10 4.5-10 10s4.5 10 10 10 10-4.5 10-10-4.5-10-10-10z" fill="#40c149"/></svg>

After

Width:  |  Height:  |  Size: 450 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12 0a12 12 0 1 0 12 12 12.013 12.013 0 0 0 -12-12zm0 19a1.5 1.5 0 1 1 1.5-1.5 1.5 1.5 0 0 1 -1.5 1.5zm1.6-6.08a1 1 0 0 0 -.6.917 1 1 0 1 1 -2 0 3 3 0 0 1 1.8-2.75 2 2 0 1 0 -2.8-1.832 1 1 0 1 1 -2 0 4 4 0 1 1 5.6 3.666z"/></svg>

After

Width:  |  Height:  |  Size: 298 B

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 24 24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><ellipse cx="12" cy="21.4" rx="2.6" ry="2.6"/><path d="m12 0c-3.9 0-7 3.1-7 7 0 1 .8 1.7 1.8 1.7s1.7-.8 1.7-1.7c0-1.4.8-2.6 2.1-3.2 1.8-.8 3.8 0 4.6 1.8s0 3.8-1.8 4.6c-1.9.8-3.2 2.7-3.1 4.8 0 1 .8 1.7 1.8 1.7s1.8-.8 1.8-1.7c0-.7.4-1.3 1-1.6 2.5-1.1 4.1-3.6 4.1-6.4 0-3.9-3.1-7-7-7z"/></svg>

After

Width:  |  Height:  |  Size: 384 B

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 24 24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.3 23.9 1.7-1.7c.1-.1.1-.2.1-.3v-10.6c3-1.1 4.6-4.5 3.5-7.6-1.1-3-4.5-4.6-7.6-3.5s-4.6 4.7-3.5 7.7c.6 1.6 1.9 2.9 3.5 3.5v2.6l-1.4.7c-.4.2-.5.7-.3 1.1.1.1.1.2.2.3l1.5 1.1v.8l-1.2.4c-.4.2-.6.6-.5 1 .1.2.2.3.4.4l1.3.7v1.4c0 .1 0 .2.1.3l1.7 1.7c.1.1.3.1.5 0zm-1.1-19.4c-.5-.5-.5-1.2 0-1.7s1.2-.5 1.7 0 .5 1.2 0 1.7-1.3.5-1.7 0z"/></svg>

After

Width:  |  Height:  |  Size: 439 B

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 200 276" viewBox="0 0 200 276" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="#bebcbb" stroke-miterlimit="10" stroke-width="2"><path d="m135.3 268.8h-69.5c-5.1 0-9.3-4.2-9.3-9.3s4.2-9.3 9.3-9.3h69.5c5.1 0 9.3 4.2 9.3 9.3-0 5.2-4.2 9.3-9.3 9.3z"/><ellipse cx="16.7" cy="259.5" rx="9.3" ry="9.3" transform="matrix(.9999 -.01514628 .01514628 .9999 -3.9285 .2827)"/><circle cx="182.7" cy="259.5" r="9.3"/></g><path d="m149.9 2-16.6 104.7c0 4-3.3 7.3-7.3 7.3h-49.8c-4 0-7.3-3.3-7.3-7.3l16.7-104.7z" fill="#222"/><circle cx="100" cy="180.3" fill="none" r="5.6"/><path d="m119.2 138.5c11.1 0 20.1-9 20.1-20.1s-9-20.1-20.1-20.1h-38.4c-11.1 0-20.1 9-20.1 20.1s9 20.1 20.1 20.1h5.1c.6-1.5 2-2.5 3.7-2.5h20.9c1.7 0 3.1 1 3.7 2.5z" fill="none"/><path d="m114.4 147.9v-1.2h4.8c15.6 0 28.4-12.8 28.4-28.4s-12.8-28.4-28.4-28.4h-38.4c-15.6 0-28.4 12.8-28.4 28.4s12.8 28.4 28.4 28.4h4.8v1.2c0 2 1.5 3.6 3.3 3.9l-.7 2.6h-.2c-2.5 0-4.6 2.1-4.6 4.6 0 1.8 1.1 3.4 2.6 4.1l-7.7 31c-.2.9.4 1.9 1.4 2.1h.3 2.2l-7.7 30.9h11.8l6.7-26.6h12.2c5.1 8.7 14.5 26.6 14.7 37.2.1 4.1-1.2 7.4-3.9 10.2-4.2 4.3-10.6 5.9-13.7 5.9-6.5 0-10.8-1.9-13.6-4.6h-13.5c2.3 5.5 5.9 8.9 9.1 11.1 6.6 4.4 14.1 5 18 5 6.3 0 15.5-2.9 21.8-9.3 4.8-4.9 7.3-11.3 7.2-18.4-.2-9.1-4.9-20.8-9.4-30.2h14.4c5.1 0 9.3-4.2 9.3-9.3s-4.2-9.3-9.3-9.3h-16l-6.1-25.9c1.4-.8 2.3-2.3 2.3-3.9 0-2.4-1.9-4.4-4.3-4.5l-.7-2.8c1.7-.5 2.9-2 2.9-3.8zm-14.4 38c-3.1 0-5.6-2.5-5.6-5.6s2.5-5.6 5.6-5.6 5.6 2.5 5.6 5.6-2.5 5.6-5.6 5.6zm10.4-49.9h-20.8c-1.7 0-3.1 1-3.7 2.5h-5.1c-11.1 0-20.1-9-20.1-20.1s9-20.1 20.1-20.1h38.5c11.1 0 20.1 9 20.1 20.1s-9 20.1-20.1 20.1h-5.1c-.7-1.5-2.1-2.5-3.8-2.5z" fill="#777"/><path d="m84.1 236.3 2.3-9.1h-11.8l-1.9 7.7v.7c0 5.5 1 10 2.5 13.6h13.6c-3.5-3.5-4.6-8.4-4.7-12.9z" fill="#aaa"/><path d="m115.5 2 16.6 104.7c0 4-3.3 7.3-7.3 7.3h-49.7c-4 0-7.3-3.3-7.3-7.3l-16.6-104.7z" fill="#333"/></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m23.3 20.691-2.1-6.83a1.486 1.486 0 0 0 -.339-.56 2.639 2.639 0 0 0 .643-1.717v-8.666a2.669 2.669 0 0 0 -2.673-2.667h-13.667a2.67 2.67 0 0 0 -2.664 2.667v8.666a2.64 2.64 0 0 0 .641 1.716 1.486 1.486 0 0 0 -.339.56l-2.074 6.755a2.167 2.167 0 0 0 1.938 3.136h18.662a2.153 2.153 0 0 0 1.844-1.028 2.1 2.1 0 0 0 .128-2.032zm-7.793.457a.5.5 0 0 1 -.4.208h-6.207a.5.5 0 0 1 -.474-.658l.6-1.8a.5.5 0 0 1 .474-.342h5a.5.5 0 0 1 .475.342l.6 1.8a.5.5 0 0 1 -.075.45zm-11.007-18.23a.667.667 0 0 1 .667-.667h13.664a.667.667 0 0 1 .666.667v8.666a.667.667 0 0 1 -.666.667h-13.667a.667.667 0 0 1 -.667-.667z"/></svg>

After

Width:  |  Height:  |  Size: 670 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m19.79 15.41c.95-2.17.95-4.66 0-6.82l-2.74 1.24c.6 1.38.6 2.95.01 4.34zm-4.37-11.2c-2.17-.95-4.66-.95-6.83 0l1.24 2.73c1.39-.59 2.96-.59 4.35.01zm-11.21 4.37c-.95 2.18-.95 4.66 0 6.84l2.74-1.25c-.6-1.38-.6-2.96 0-4.35zm4.38 11.21c2.17.95 4.66.95 6.83-.01l-1.24-2.73c-1.38.6-2.96.6-4.34.01zm3.41-17.79a10 10 0 0 1 10 10 10 10 0 0 1 -10 10 10 10 0 0 1 -10-10 10 10 0 0 1 10-10m0 6a4 4 0 0 0 -4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0 -4-4z"/></svg>

After

Width:  |  Height:  |  Size: 515 B

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 24 24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m9.4 14.5c-2.3-2.3-2.3-5.9 0-8.2l4.6-4.6c1.1-1 2.6-1.7 4.2-1.7s3 .5 4.1 1.7c2.3 2.3 2.3 5.9 0 8.2l-2.7 2.3c-.5.5-1.2.5-1.8 0-.5-.5-.5-1.2 0-1.7l2.7-2.3c1.4-1.3 1.4-3.4 0-4.7-.7-.7-1.5-.9-2.3-.9s-1.8.4-2.5.9l-4.7 4.5c-1.4 1.3-1.4 3.4 0 4.7.5.5.5 1.2 0 1.7-.1.3-.4.4-.8.4s-.5-.1-.8-.3z"/><path d="m1.7 22.3c-2.3-2.3-2.3-5.9 0-8.2l2.6-2.5c.5-.5 1.2-.5 1.8 0 .5.5.5 1.2 0 1.7l-2.6 2.5c-1.4 1.3-1.4 3.4 0 4.7.7.7 1.5.9 2.3.9s1.8-.4 2.3-.9l4.6-4.6c1.4-1.3 1.4-3.4 0-4.7-.5-.4-.5-1.2 0-1.7s1.2-.5 1.8 0c2.3 2.3 2.3 5.9 0 8.2l-4.6 4.6c-1 1-2.5 1.7-4.1 1.7s-3-.7-4.1-1.7z"/></svg>

After

Width:  |  Height:  |  Size: 674 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m19.5 9.5h-.75v-2.75a6.75 6.75 0 0 0 -13.5 0v2.75h-.75a2 2 0 0 0 -2 2v10.5a2 2 0 0 0 2 2h15a2 2 0 0 0 2-2v-10.5a2 2 0 0 0 -2-2zm-9.5 6a2 2 0 1 1 3 1.723v2.277a1 1 0 0 1 -2 0v-2.277a1.994 1.994 0 0 1 -1-1.723zm-2.25-8.75a4.25 4.25 0 0 1 8.5 0v2.25a.5.5 0 0 1 -.5.5h-7.5a.5.5 0 0 1 -.5-.5z"/></svg>

After

Width:  |  Height:  |  Size: 365 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>login-keys</title><path d="M13.5,9A5.975,5.975,0,0,0,12,5.036V2.5a2.5,2.5,0,0,0-5,0v.521A6,6,0,0,0,5.5,14.652v.641l-.854.853A.5.5,0,0,0,4.5,16.5a.505.505,0,0,0,.146.354l.854.854v.586l-.854.854a.5.5,0,0,0,0,.707l.854.853V22a.5.5,0,0,0,.146.354l1.5,1.5a.5.5,0,0,0,.708,0l1.5-1.5A.5.5,0,0,0,9.5,22V14.652A6.019,6.019,0,0,0,13.5,9Zm-6-3a1,1,0,1,1-1,1A1,1,0,0,1,7.5,6Zm2-5A1.5,1.5,0,0,1,11,2.5V4.13a5.988,5.988,0,0,0-2-.94V5H8V2.5A1.5,1.5,0,0,1,9.5,1Z"/><path d="M22.354,18.026l-5.2-5.2a5.946,5.946,0,0,0-2.123-7.592.5.5,0,0,0-.728.628,7.471,7.471,0,0,1-2.774,9.45.5.5,0,0,0,.269.921h.006a6.023,6.023,0,0,0,2.541-.589l.65.577V17.5a.5.5,0,0,0,.5.5h1.286l.214.224V19.5a.5.5,0,0,0,.5.5h1.119l.917.864a.5.5,0,0,0,.343.136H22a.5.5,0,0,0,.5-.5V18.379A.5.5,0,0,0,22.354,18.026Z"/></svg>

After

Width:  |  Height:  |  Size: 841 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m17.508 18.5a1 1 0 0 0 -1 1v.5a.5.5 0 0 1 -.5.5h-5.5a.5.5 0 0 1 -.5-.5v-16a.5.5 0 0 1 .5-.5h5.5a.5.5 0 0 1 .5.5v1a1 1 0 0 0 2 0v-2.5a1 1 0 0 0 -1-1h-7.5v-1a.5.5 0 0 0 -.608-.488l-9 2a.5.5 0 0 0 -.392.488v19a.5.5 0 0 0 .392.489l9 2a.506.506 0 0 0 .421-.1.5.5 0 0 0 .187-.39v-1h7.5a1 1 0 0 0 1-1v-2a1 1 0 0 0 -1-.999zm-10-6a1.5 1.5 0 1 1 -1.5-1.5 1.5 1.5 0 0 1 1.5 1.5z"/><path d="m23.546 11.668-4.875-3.25a1 1 0 0 0 -1.554.832v1.75h-4.125a1.5 1.5 0 0 0 0 3h4.125v1.75a1 1 0 0 0 1.554.832l4.875-3.25a1 1 0 0 0 0-1.664z"/></svg>

After

Width:  |  Height:  |  Size: 594 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><circle cx="3.25" cy="12" r="3.25"/><circle cx="12" cy="12" r="3.25"/><circle cx="20.75" cy="12" r="3.25"/></svg>

After

Width:  |  Height:  |  Size: 173 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="3.25" r="3.25"/><circle cx="12" cy="12" r="3.25"/><circle cx="12" cy="20.75" r="3.25"/></svg>

After

Width:  |  Height:  |  Size: 173 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><rect height="3" rx="1" width="23" x=".5" y="2.5"/><rect height="3" rx="1" width="23" x=".5" y="10.5"/><rect height="3" rx="1" width="23" x=".5" y="18.5"/></svg>

After

Width:  |  Height:  |  Size: 221 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m17.5 9.5a7.932 7.932 0 0 1 3.992 1.077.249.249 0 0 0 .228.012.254.254 0 0 0 .143-.18 7.4 7.4 0 0 0 .137-1.409c0-4.962-4.935-9-11-9s-11 4.038-11 9a8.08 8.08 0 0 0 2.657 5.854l-1.627 4.475a.5.5 0 0 0 .662.632l5.832-2.429a13.155 13.155 0 0 0 1.7.34.25.25 0 0 0 .2-.063.254.254 0 0 0 .081-.2c0-.037 0-.075 0-.113a8.009 8.009 0 0 1 7.995-7.996z"/><path d="m17.5 11a6.5 6.5 0 1 0 6.5 6.5 6.508 6.508 0 0 0 -6.5-6.5zm.75 9a.75.75 0 0 1 -1.5 0v-1.5a.25.25 0 0 0 -.25-.25h-1.5a.75.75 0 0 1 0-1.5h1.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5a.25.25 0 0 0 .25.25h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0 -.25.25z"/></svg>

After

Width:  |  Height:  |  Size: 688 B

View File

@@ -0,0 +1 @@
<svg fill="none" height="175" width="188" xmlns="http://www.w3.org/2000/svg"><path d="m30.408 133.432 1.8-3.59-3.116-2.532a65.255 65.255 0 0 1 -24.092-49.587c.026-39.037 38.975-72.36 88.95-72.36 49.992 0 88.95 33.337 88.95 72.399 0 39.061-38.959 72.406-88.95 72.406h-.011a107.064 107.064 0 0 1 -29.792-4.16l-1.796-.516-1.694.789-47.862 22.276zm-18.79 37.472v.002z" stroke="#000" stroke-width="10"/><path d="m85.079 91.359-.049-2.827c-.162-2.307.033-4.37.585-6.19s1.495-3.46 2.827-4.923c1.365-1.495 3.152-2.892 5.362-4.192 2.112-1.267 3.752-2.42 4.922-3.46 1.203-1.04 2.047-2.129 2.535-3.266.487-1.137.731-2.47.731-3.997v-.048c0-1.593-.39-2.974-1.17-4.143-.78-1.203-1.868-2.145-3.266-2.827-1.364-.683-2.973-1.024-4.825-1.024s-3.477.374-4.874 1.121c-1.397.748-2.502 1.771-3.314 3.07-.813 1.3-1.268 2.795-1.365 4.485l-.049.39h-13.209v-.487c.13-3.802 1.121-7.198 2.974-10.187 1.884-3.022 4.565-5.394 8.042-7.117 3.477-1.722 7.7-2.583 12.672-2.583 4.647 0 8.693.796 12.137 2.388 3.477 1.593 6.174 3.802 8.091 6.63 1.95 2.826 2.925 6.108 2.925 9.845v.049c0 2.437-.39 4.646-1.17 6.629-.78 1.982-1.95 3.785-3.51 5.41-1.527 1.592-3.444 3.07-5.751 4.435-2.145 1.235-3.818 2.388-5.02 3.46-1.203 1.04-2.047 2.145-2.535 3.315-.487 1.137-.731 2.486-.731 4.046v1.998zm6.677 23.347c-2.21 0-4.094-.731-5.654-2.193-1.527-1.495-2.29-3.315-2.29-5.459 0-2.145.763-3.948 2.29-5.411 1.56-1.494 3.445-2.242 5.654-2.242 2.242 0 4.127.748 5.654 2.242 1.56 1.463 2.34 3.266 2.34 5.411 0 2.144-.78 3.964-2.34 5.459-1.527 1.462-3.412 2.193-5.654 2.193z" fill="#000"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12 .836c-6.617 0-12 4.474-12 9.975a9.01 9.01 0 0 0 3.057 6.658l-2.126 4.244a1 1 0 0 0 1.316 1.355l5.981-2.784a14.243 14.243 0 0 0 3.772.5c6.617 0 12-4.475 12-9.975s-5.383-9.973-12-9.973zm0 17.95a12.189 12.189 0 0 1 -3.562-.524 1 1 0 0 0 -.714.05l-3.07 1.429a.25.25 0 0 1 -.329-.339l.869-1.735a1 1 0 0 0 -.269-1.228 7.214 7.214 0 0 1 -2.925-5.628c0-4.4 4.486-7.975 10-7.975s10 3.577 10 7.975-4.486 7.975-10 7.975z"/></svg>

After

Width:  |  Height:  |  Size: 491 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12 1.337c-6.341 0-11.5 4.25-11.5 9.474a8.6 8.6 0 0 0 3.175 6.54l-2.3 4.587a.5.5 0 0 0 .659.677l6.149-2.862a13.717 13.717 0 0 0 3.817.533c6.341 0 11.5-4.25 11.5-9.475s-5.159-9.474-11.5-9.474z"/></svg>

After

Width:  |  Height:  |  Size: 269 B

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 24 24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m14.5 14.3h6.7c.6 0 1.1-.5 1.1-1.1v-2.3c0-.6-.5-1.1-1.1-1.1h-6.7-5-6.7c-.6 0-1.1.5-1.1 1.1v2.3c0 .6.5 1.1 1.1 1.1h6.7z"/></svg>

After

Width:  |  Height:  |  Size: 230 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m17 .034h-10a3 3 0 0 0 -3 3v17.932a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3v-17.932a3 3 0 0 0 -3-3zm-5 22.432a1 1 0 1 1 1-1 1 1 0 0 1 -1 1zm6-4.5a1 1 0 0 1 -1 1h-10a1 1 0 0 1 -1-1v-14.432a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1z"/></svg>

After

Width:  |  Height:  |  Size: 287 B

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 24 24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m17 20.5c0 .2 0 .3-.1.5.1-.1.1-.3.1-.5z"/><path d="m14.1 9.1c.1-.2.2-.3.3-.4-.1.1-.2.2-.3.4l-2.2 4.2z"/><path d="m14 6.6c.6-.3 1.2-.4 1.8-.4h.2c-1.2-1.6-3-2.7-5-3.1v-2.1c0-.6-.4-1-1-1s-1 .4-1 1v2.1c-3.9.7-6.6 4.1-6.5 8.1v4.8c0 .8-.7 1.5-1.5 1.5-.6 0-1 .4-1 1s.4 1 1 1h5.4l5.9-11.3c.4-.7 1-1.3 1.7-1.6z"/><path d="m23.8 21.3-6.4-12.2c0-.1-.1-.1-.1-.2s-.1-.1-.2-.2c0 0-.1-.1-.1-.1s-.1-.1-.1-.1c-.1 0-.1-.1-.2-.1 0 0-.1 0-.1-.1-.1-.1-.3-.1-.4-.2h-.1-.1c-.1 0-.2 0-.3 0s0 0-.1 0c0 0 0 0-.1 0h-.1c-.1 0-.1 0-.2 0h-.1c-.1 0-.3.1-.4.1-.3.2-.6.4-.8.8l-5.2 10.5-.8 1.5-.2.3c-.1.2-.1.4-.2.5-.1.4 0 .9.2 1.3.4.6 1 .9 1.6.9h.7 12.2c.6 0 1.2-.3 1.6-.9.3-.5.3-1.2 0-1.8zm-8.7-3.6c-.1-.1-.2-.2-.2-.3v-.1c0-.1-.1-.2-.1-.3v-3.2c0-.1 0-.2.1-.3v-.1c0-.1.1-.1.1-.2 0 0 0 0 .1-.1.2-.2.4-.3.6-.3.5 0 1 .4 1 1v3.2c0 .5-.4 1-1 1-.2 0-.4-.1-.6-.3zm.7 4.1c.4 0 .7-.1.9-.4-.3.2-.6.4-.9.4-.7 0-1.3-.6-1.3-1.3 0-.1 0-.3.1-.4 0-.1 0-.1.1-.1 0-.1.1-.1.1-.1.1-.1.2-.2.3-.3s.2-.1.3-.2c.1 0 .3-.1.4-.1.3 0 .5.1.7.3.3.2.5.6.5 1 0 .6-.5 1.2-1.2 1.2z"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m21 17.5a1.5 1.5 0 0 1 -1.5-1.5v-4.862a7.957 7.957 0 0 0 -6.5-8.065v-2.073a1 1 0 0 0 -2 0v2.073a7.957 7.957 0 0 0 -6.5 8.065v4.862a1.5 1.5 0 0 1 -1.5 1.5 1 1 0 0 0 0 2h18a1 1 0 0 0 0-2z"/><path d="m14.236 21h-4.472a.25.25 0 0 0 -.248.222 2.319 2.319 0 0 0 -.016.278 2.5 2.5 0 1 0 5 0 2.319 2.319 0 0 0 -.016-.278.248.248 0 0 0 -.248-.222z"/></svg>

After

Width:  |  Height:  |  Size: 416 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m2 5.27 1.28-1.27 16.72 16.72-1.27 1.28-3.08-3.08c-1.15.38-2.37.58-3.65.58-5 0-9.27-3.11-11-7.5.69-1.76 1.79-3.31 3.19-4.54zm10 3.73a3 3 0 0 1 3 3c0 .35-.06.69-.17 1l-3.83-3.83c.31-.11.65-.17 1-.17m0-4.5c5 0 9.27 3.11 11 7.5-.82 2.08-2.21 3.88-4 5.19l-1.42-1.43c1.36-.94 2.48-2.22 3.24-3.76-1.65-3.36-5.06-5.5-8.82-5.5-1.09 0-2.16.18-3.16.5l-1.54-1.53c1.44-.62 3.03-.97 4.7-.97m-8.82 7.5c1.65 3.36 5.06 5.5 8.82 5.5.69 0 1.37-.07 2-.21l-2.28-2.29c-1.43-.15-2.57-1.29-2.72-2.72l-3.4-3.41c-.99.85-1.82 1.91-2.42 3.13z"/></svg>

After

Width:  |  Height:  |  Size: 593 B

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 24 24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12 4.9.6.1c2.9.5 5 3.1 4.9 6v5c0 .5.1 1 .3 1.5h-11.6c.2-.5.3-1 .3-1.5v-4.9c-.1-3 2-5.5 4.9-6zm0-4.9c-.6 0-1 .4-1 1v2.1c-3.9.7-6.6 4.1-6.5 8.1v4.8c0 .8-.7 1.5-1.5 1.5-.6 0-1 .4-1 1s.4 1 1 1h18c.6 0 1-.4 1-1s-.4-1-1-1c-.8 0-1.5-.7-1.5-1.5v-4.9c.1-3.9-2.6-7.3-6.5-8.1v-2c0-.6-.4-1-1-1z"/><path d="m14.2 21h-4.5c-.1 0-.2.1-.2.2v.3c0 1.4 1.1 2.5 2.5 2.5s2.5-1.1 2.5-2.5c0-.1 0-.2 0-.3s-.1-.2-.3-.2z"/></svg>

After

Width:  |  Height:  |  Size: 506 B

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 24 24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m7 16.4c0-5 4-9 9-9 1.1 0 2.2.2 3.2.6-.6-1.8-1.8-3.3-3.3-4.4-.7-.5-1.5-.8-2.3-.9v-1.2c-.1-.8-.8-1.5-1.6-1.5s-1.5.7-1.5 1.5v1.1c-1 .2-2 .6-2.9 1.3-2.2 1.8-3.4 4.4-3.3 7.2v.8c0 2.5-.6 5.1-1.7 7.3-.1.2 0 .5.2.7 0 .1.1.1.2.1h4.7c-.4-1.1-.7-2.3-.7-3.6z"/><path d="m22.1 11.4c-1.6-1.6-3.9-2.4-6.2-2.3-4.1 0-7.4 3.3-7.4 7.4s3.3 7.4 7.4 7.4c.7 0 1.5-.1 2.2-.3.5-.1.8-.7.6-1.2s-.7-.8-1.2-.6c-2.9.9-6-.7-6.9-3.6s.7-6 3.6-6.9c.5-.2 1.1-.2 1.6-.2 1.8-.1 3.5.5 4.8 1.7.9.9 1.4 2.1 1.4 3.4s-.6 2.6-1.5 2.6c-.1 0-.2 0-.3 0v-5c0-.5-.4-.9-.9-.9-.3 0-.6.2-.8.5-.7-.6-1.6-.9-2.5-.9-2.3 0-4.1 1.8-4.1 4.1s1.8 4.1 4.1 4.1c1 0 1.9-.3 2.6-1 .1.2.2.3.3.4.5.4 1.1.6 1.7.6 2 0 3.4-1.9 3.4-4.5 0-1.8-.7-3.5-1.9-4.8zm-6.2 7.4c-1.2 0-2.2-1-2.2-2.2s1-2.2 2.2-2.2 2.2 1 2.2 2.2-1 2.2-2.2 2.2z"/></svg>

After

Width:  |  Height:  |  Size: 873 B

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 24 24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m15.9 19.5-11-11c-.3.8-.4 1.7-.4 2.6v4.9c0 .8-.7 1.5-1.5 1.5-.6 0-1 .4-1 1s.4 1 1 1z"/><path d="m9.5 21.2v.3c0 1.4 1.1 2.5 2.5 2.5s2.5-1.1 2.5-2.5c0-.1 0-.2 0-.3s-.1-.2-.2-.2h-4.5c-.2 0-.3.1-.3.2z"/><path d="m23.7 23.7c.4-.4.4-1 0-1.4l-2.8-2.8h.1c.6 0 1-.4 1-1s-.4-1-1-1c-.8 0-1.5-.7-1.5-1.5v-4.9c.1-3.9-2.6-7.4-6.5-8.1v-2c0-.6-.4-1-1-1s-1 .4-1 1v2.1c-1.6.3-3.1 1-4.3 2.3l-5-5c-.4-.4-1-.4-1.4 0-.4.4-.4 1 0 1.4l22 22c.2.2.4.3.7.3.3-.1.5-.2.7-.4z"/></svg>

After

Width:  |  Height:  |  Size: 557 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>building-1</title><path d="M3.5,3.5h17a.5.5,0,0,0,.391-.812L19.19.563A1.492,1.492,0,0,0,18.02,0H5.98A1.492,1.492,0,0,0,4.81.563l-1.7,2.125A.5.5,0,0,0,3.5,3.5Z"/><path d="M20.5,5H3.5a.5.5,0,0,0-.5.5v17A1.5,1.5,0,0,0,4.5,24h5a.5.5,0,0,0,.5-.5v-2a2,2,0,0,1,4,0v2a.5.5,0,0,0,.5.5h5A1.5,1.5,0,0,0,21,22.5V5.5A.5.5,0,0,0,20.5,5ZM8,16.5a.5.5,0,0,1-.5.5h-2a.5.5,0,0,1-.5-.5v-2a1.5,1.5,0,0,1,3,0Zm0-6a.5.5,0,0,1-.5.5h-2a.5.5,0,0,1-.5-.5v-2a1.5,1.5,0,0,1,3,0Zm5.5,6a.5.5,0,0,1-.5.5H11a.5.5,0,0,1-.5-.5v-2a1.5,1.5,0,0,1,3,0Zm0-6a.5.5,0,0,1-.5.5H11a.5.5,0,0,1-.5-.5v-2a1.5,1.5,0,0,1,3,0Zm5.5,6a.5.5,0,0,1-.5.5h-2a.5.5,0,0,1-.5-.5v-2a1.5,1.5,0,0,1,3,0Zm0-6a.5.5,0,0,1-.5.5h-2a.5.5,0,0,1-.5-.5v-2a1.5,1.5,0,0,1,3,0Z"/></svg>

After

Width:  |  Height:  |  Size: 777 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m21.5 2.5h-19-.00000011c-1.38071.00000006-2.5 1.11929-2.5 2.5v14 .00000038c.00000021 1.38071 1.11929 2.5 2.5 2.5h19 .00000011c1.38071-.00000027 2.5-1.11929 2.5-2.5v-14c0-1.38071-1.11929-2.5-2.5-2.5zm-.5 12.25h-4-.00000003c-.414214-.00000002-.75-.335786-.75-.75.00000002-.414214.335786-.75.75-.75h4-.00000003c.414214-.00000002.75.335786.75.75.00000002.414214-.335786.75-.75.75zm-6.469-1.28c.292711.292294.293049.766535.00075431 1.05925-.00025126.00025162-.0005027.00050305-.00075431.00075431l-.00000003.00000002c-.29683.283557-.76417.283557-1.061-.00000005l-1.293-1.293-.00000001-.00000001c-.0975674-.0972627-.255433-.0972627-.353.00000002l-1.293 1.293.00000001-.00000001c-.294501.28931-.766499.28931-1.061.00000002l.00000002.00000002c-.292711-.292294-.293049-.766535-.00075434-1.05925.00025126-.00025162.0005027-.00050305.00075431-.00075431l1.293-1.293.00000001-.00000001c.0977544-.0975076.0979545-.255799.00044687-.353553-.00014878-.00014915-.00029774-.00029812-.00044689-.00044689l-1.293-1.293-.00000005-.00000006c-.28762-.298073-.279147-.772871.0189256-1.06049.290776-.280579.751564-.280362 1.04207.00049142l1.293 1.293c.0975674.0972627.255433.0972627.353-.00000001l1.293-1.293.00000005-.00000005c.297801-.287901.772607-.279876 1.06051.0179256.280853.290511.28107.751299.00049121 1.04207l-1.293 1.293-.00000003.00000003c-.0977544.0975076-.0979544.255799-.00044684.353553.00014878.00014915.00029774.00029812.00044689.00044689zm-7 0c.292711.292294.293049.766535.00075431 1.05925-.00025126.00025162-.0005027.00050305-.00075431.00075431l.00000003-.00000003c-.294812.287593-.765187.287593-1.06.00000005l-1.294-1.293c-.0981335-.0968348-.255866-.0968348-.354 0l-1.293 1.293.00000001-.00000001c-.296698.282921-.763302.282921-1.06.00000002l.00000002.00000002c-.292711-.292294-.293049-.766535-.00075434-1.05925.00025126-.00025162.0005027-.00050305.00075431-.00075431l1.293-1.293c.0968348-.0981335.0968348-.255866-.00000001-.354l-1.293-1.293-.00000002-.00000002c-.282379-.303043-.265627-.777621.0374166-1.06.28803-.268389.734554-.268389 1.02258.00000004l1.293 1.293c.0981335.0968348.255866.0968348.354.00000001l1.293-1.293.00000002-.00000002c.303043-.282379.777621-.265627 1.06.0374166.268389.28803.268389.734554-.00000003 1.02258l-1.293 1.293c-.0968348.0981335-.0968348.255866 0 .354z"/></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m2.649 16.4a.5.5 0 0 0 -.841.245l-1.414 6.365a.5.5 0 0 0 .134.462.509.509 0 0 0 .462.135l6.364-1.414a.5.5 0 0 0 .245-.842z"/><path d="m17.852 7.208-10.96 10.96a.252.252 0 0 0 0 .354l1.768 1.768a.507.507 0 0 0 .707 0l10.607-10.607a.5.5 0 0 0 0-.707l-1.768-1.768a.252.252 0 0 0 -.354 0z"/><path d="m16.792 5.794-1.768-1.767a.5.5 0 0 0 -.707 0l-10.607 10.606a.5.5 0 0 0 0 .707l1.768 1.768a.252.252 0 0 0 .354 0l10.96-10.96a.252.252 0 0 0 0-.354z"/><path d="m22.449 1.552a4.005 4.005 0 0 0 -5.658 0l-.707.707a.5.5 0 0 0 0 .707l4.95 4.949a.513.513 0 0 0 .707 0l.708-.707a4 4 0 0 0 0-5.656z"/></svg>

After

Width:  |  Height:  |  Size: 662 B

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 17 21.1" viewBox="0 0 17 21.1" xmlns="http://www.w3.org/2000/svg"><path d="m7.9 17c0-2.8 2.2-5 5-5 1.4 0 2.6.6 3.5 1.4 0-.2-.1-.3-.1-.5-.6-1.1-2.4-1.8-4.8-2.7l-.6-.2c-.2-.5-.3-1.1-.1-1.6 1.1-1.2 1.6-2.7 1.5-4.3 0-2.4-1.6-4.2-3.8-4.2s-3.8 1.9-3.8 4.3c-.1 1.5.4 3.1 1.5 4.3.2.5.2 1.1-.1 1.6l-.6.2c-2.4.9-4.2 1.5-4.8 2.6-.4 1.2-.7 5.4-.7 6.6 0 .3.2.5.5.5h8.5c-.7-.8-1.1-1.8-1.1-3z"/><path d="m12.9 12.9c-2.3 0-4.1 1.8-4.1 4.1s1.8 4.1 4.1 4.1 4.1-1.8 4.1-4.1-1.8-4.1-4.1-4.1zm2.8 4.1c0 .3-.3.6-.6.6h-1.4c-.1 0-.2.1-.2.2v1.4c0 .3-.3.6-.6.6s-.6-.3-.6-.6v-1.4c0-.1-.1-.2-.2-.2h-1.4c-.3 0-.6-.3-.6-.6s.3-.6.6-.6h1.4c.1 0 .2-.1.2-.2v-1.4c0-.3.3-.6.6-.6s.6.3.6.6v1.4c0 .1.1.2.2.2h1.4c.4 0 .6.3.6.6z"/></svg>

After

Width:  |  Height:  |  Size: 729 B

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 17 17" viewBox="0 0 17 17" xmlns="http://www.w3.org/2000/svg"><path d="m11.5 10.3-.6-.2c-.2-.5-.3-1.1-.1-1.6 1.1-1.2 1.6-2.7 1.5-4.3 0-2.4-1.6-4.2-3.8-4.2s-3.8 1.8-3.8 4.2c-.1 1.5.4 3.1 1.5 4.3.2.5.2 1.1-.1 1.6l-.6.2c-2.4.9-4.2 1.5-4.8 2.6-.4 1.2-.7 2.4-.7 3.6 0 .3.2.5.5.5h16c.3 0 .5-.2.5-.5 0-1.2-.3-2.4-.7-3.5-.6-1.1-2.4-1.8-4.8-2.7z"/></svg>

After

Width:  |  Height:  |  Size: 377 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m4 4h6v6h-6zm16 0v6h-6v-6zm-6 11h2v-2h-2v-2h2v2h2v-2h2v2h-2v2h2v3h-2v2h-2v-2h-3v2h-2v-4h3zm2 0v3h2v-3zm-12 5v-6h6v6zm2-14v2h2v-2zm10 0v2h2v-2zm-10 10v2h2v-2zm-2-5h2v2h-2zm5 0h4v4h-2v-2h-2zm2-5h2v4h-2zm-9-4v4h-2v-4a2 2 0 0 1 2-2h4v2zm20-2a2 2 0 0 1 2 2v4h-2v-4h-4v-2zm-20 18v4h4v2h-4a2 2 0 0 1 -2-2v-4zm20 4v-4h2v4a2 2 0 0 1 -2 2h-4v-2z"/></svg>

After

Width:  |  Height:  |  Size: 413 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m6.177 6.167a8.233 8.233 0 0 1 8.351-2.027 1.249 1.249 0 1 0 .76-2.38 10.751 10.751 0 0 0 -13.242 14.273.248.248 0 0 1 -.094.3l-1.4.922a1 1 0 0 0 .348 1.816l4.407.908a.99.99 0 0 0 .2.021 1 1 0 0 0 .979-.8l.914-4.406a1 1 0 0 0 -1.529-1.037l-1.339.881a.25.25 0 0 1 -.376-.133 8.269 8.269 0 0 1 2.021-8.338z"/><path d="m23.883 5.832a1 1 0 0 0 -.763-.807l-4.388-1a1 1 0 0 0 -1.2.752l-1 4.387a1 1 0 0 0 1.507 1.069l1.443-.906a.247.247 0 0 1 .218-.027.252.252 0 0 1 .153.159 8.249 8.249 0 0 1 -10.285 10.424 1.25 1.25 0 1 0 -.737 2.388 10.75 10.75 0 0 0 13.154-14.271.248.248 0 0 1 .1-.3l1.346-.846a1 1 0 0 0 .452-1.022z"/></svg>

After

Width:  |  Height:  |  Size: 692 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12 0a12 12 0 1 0 12 12 12.014 12.014 0 0 0 -12-12zm5.49 16.076a1 1 0 1 1 -1.414 1.414l-3.9-3.9a.252.252 0 0 0 -.354 0l-3.9 3.9a1.012 1.012 0 0 1 -1.414 0 1 1 0 0 1 0-1.414l3.9-3.9a.249.249 0 0 0 0-.353l-3.9-3.9a1 1 0 0 1 1.416-1.413l3.9 3.9a.25.25 0 0 0 .354 0l3.9-3.9a1 1 0 1 1 1.412 1.414l-3.9 3.9a.249.249 0 0 0 0 .353z"/></svg>

After

Width:  |  Height:  |  Size: 401 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m22.664 5.578a1.5 1.5 0 0 0 0-2.121l-2.121-2.121a1.5 1.5 0 0 0 -2.122 0l-6.244 6.245a.251.251 0 0 1 -.354 0l-6.244-6.245a1.5 1.5 0 0 0 -2.122 0l-2.121 2.121a1.5 1.5 0 0 0 0 2.121l6.245 6.245a.252.252 0 0 1 0 .354l-6.245 6.245a1.5 1.5 0 0 0 0 2.121l2.121 2.121a1.5 1.5 0 0 0 2.122 0l6.244-6.245a.251.251 0 0 1 .354 0l6.244 6.245a1.5 1.5 0 0 0 2.122 0l2.121-2.121a1.5 1.5 0 0 0 0-2.121l-6.245-6.245a.252.252 0 0 1 0-.354z"/></svg>

After

Width:  |  Height:  |  Size: 497 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m19.618 10.679c-3.011-2.67-7.125-2.853-8.859-2.793a.249.249 0 0 1 -.259-.25v-2.572a1 1 0 0 0 -1.642-.764l-7.494 6.366a1 1 0 0 0 -.364.772.986.986 0 0 0 .351.76l7.513 6.637a1 1 0 0 0 1.636-.773v-3.035a.249.249 0 0 1 .2-.244c1.908-.4 8.135-1.158 11.36 4.89a.5.5 0 0 0 .94-.235c0-3.821-1.138-6.767-3.382-8.759z"/></svg>

After

Width:  |  Height:  |  Size: 385 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 KiB

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m23.414 20.591-4.645-4.645a10.256 10.256 0 1 0 -2.828 2.829l4.645 4.644a2.025 2.025 0 0 0 2.828 0 2 2 0 0 0 0-2.828zm-13.164-17.586a7.25 7.25 0 1 1 -7.25 7.25 7.258 7.258 0 0 1 7.25-7.25z"/></svg>

After

Width:  |  Height:  |  Size: 265 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m22.421 9.763-1.266-.449.00000012.00000004c-.715005-.254175-1.08858-1.03985-.834406-1.75486.015863-.0446231.0340224-.0883962.0544056-.131144l.576-1.213.00000009-.0000002c.562362-1.18562.0571125-2.60264-1.12851-3.165-.644423-.305662-1.39207-.305662-2.03649.0000002l-1.213.577.00000003-.00000002c-.686103.325481-1.50615.0331379-1.83163-.652965-.0199623-.0420799-.0377737-.0851469-.0533652-.129034l-.45-1.265.00000005.00000014c-.440698-1.23601-1.79994-1.88074-3.03595-1.44005-.671828.239539-1.20051.768217-1.44005 1.44005l-.45 1.266v-.00000001c-.254689.715408-1.04111 1.08889-1.75652.834205-.0436977-.0155566-.0865803-.0333144-.128483-.0532053l-1.213-.577-.00000004-.00000002c-1.18562-.562362-2.60264-.0571125-3.165 1.12851-.305662.644423-.305662 1.39207.00000004 2.03649l.576 1.213.00000005.0000001c.326289.685719.0349133 1.50611-.650806 1.8324-.0421276.0200458-.0852481.0379345-.129194.0535967l-1.266.45-.00000004.00000001c-1.23574.439828-1.88095 1.79814-1.44112 3.03388.239375.672547.768575 1.20175 1.44112 1.44112l1.266.45-.00000004-.00000002c.714925.2544 1.08825 1.04019.833853 1.75512-.0157227.0441846-.0336974.0875352-.0538533.129882l-.576 1.213.00000006-.00000012c-.562362 1.18562-.0571127 2.60264 1.12851 3.165.644423.305662 1.39207.305662 2.03649.00000011l1.213-.576-.00000004.00000002c.6845-.32628 1.5039-.0358847 1.83018.648616.0205653.0431439.0388639.0873322.0548208.132384l.45 1.265-.00000012-.00000034c.440698 1.23601 1.79994 1.88074 3.03595 1.44005.671828-.239539 1.20051-.768217 1.44005-1.44004l.45-1.266.00000007-.00000021c.2544-.714925 1.04019-1.08825 1.75512-.833853.0441846.0157227.0875352.0336974.129882.0538534l1.213.576-.00000014-.00000007c1.18562.562362 2.60264.0571127 3.165-1.12851.305662-.644423.305662-1.39207.00000014-2.03649l-.576-1.213-.00000001-.00000001c-.326132-.685182-.035064-1.50501.650118-1.83115.0423464-.020156.085697-.0381306.129882-.0538533l1.266-.451-.00000016.00000006c1.23574-.439828 1.88095-1.79814 1.44112-3.03388-.239375-.672547-.768575-1.20175-1.44112-1.44112zm-10.421 7.022h-.00000027c-1.92881-.0279814-3.66412-1.17834-4.441-2.944l-.00000007-.00000017c-1.01279-2.45242.150189-5.26191 2.6-6.281l-.00000002.00000001c2.45232-.980726 5.23932.172946 6.281 2.6l.00000007.00000018c1.01279 2.45242-.150189 5.26191-2.6 6.281l-.00000033.00000014c-.583184.239869-1.20955.356971-1.84.344z"/></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m20.5 9a2 2 0 0 0 -2-2h-3.25a.25.25 0 0 0 -.25.25v1.5a.25.25 0 0 0 .25.25h2.75a.5.5 0 0 1 .5.5v12a.5.5 0 0 1 -.5.5h-12a.5.5 0 0 1 -.5-.5v-12a.5.5 0 0 1 .5-.5h2.75a.25.25 0 0 0 .25-.251v-1.5a.25.25 0 0 0 -.252-.249h-3.248a2 2 0 0 0 -2 2v13a2 2 0 0 0 2 2h13a2 2 0 0 0 2-2z"/><path d="m10.5 11a1.5 1.5 0 0 0 3 0v-5.251a.25.25 0 0 1 .25-.25h1.75a1 1 0 0 0 .7-1.707l-3.5-3.5a1 1 0 0 0 -1.414 0l-3.5 3.5a1 1 0 0 0 .714 1.708h1.75a.25.25 0 0 1 .25.25z"/></svg>

After

Width:  |  Height:  |  Size: 522 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

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