Compare commits

...

No commits in common. "v0.2.1-beta" and "development" have entirely different histories.

580 changed files with 114762 additions and 19007 deletions

16
.babelrc Normal file
View File

@ -0,0 +1,16 @@
{
"presets": [
[
"@babel/env",
{
"targets": {
"chrome": "122",
"node": "20.9.0"
}
}
]
],
"plugins": [
"@babel/proposal-class-properties"
]
}

View File

@ -1,24 +0,0 @@
{
"env": {
"development": {
"application/javascript": {
"presets": [
["env", { "targets": { "electron": "1.4" } }],
"react"
],
"plugins": ["transform-async-to-generator"],
"sourceMaps": "inline"
}
},
"production": {
"application/javascript": {
"presets": [
["env", { "targets": { "electron": "1.4" } }],
"react"
],
"plugins": ["transform-async-to-generator"],
"sourceMaps": "none"
}
}
}
}

12
.editorconfig Normal file
View File

@ -0,0 +1,12 @@
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false

3
.eslintignore Normal file
View File

@ -0,0 +1,3 @@
node_modules
_scripts
dist

124
.eslintrc.js Normal file
View File

@ -0,0 +1,124 @@
const path = require('path')
const { readFileSync } = require('fs')
const activeLocales = JSON.parse(readFileSync(path.join(__dirname, './static/locales/activeLocales.json')))
module.exports = {
// https://eslint.org/docs/user-guide/configuring#using-configuration-files-1
root: true,
// https://eslint.org/docs/user-guide/configuring#specifying-environments
env: {
browser: true,
node: true
},
// https://eslint.org/docs/user-guide/configuring#specifying-parser
parser: 'vue-eslint-parser',
// https://eslint.vuejs.org/user-guide/#faq
parserOptions: {
parser: '@babel/eslint-parser',
ecmaVersion: 2022,
sourceType: 'module'
},
overrides: [
{
files: ['*.json'],
parser: 'jsonc-eslint-parser',
extends: ['plugin:jsonc/base'],
rules: {
'no-tabs': 'off',
'comma-spacing': 'off'
}
},
{
files: ['*.yaml', '*.yml'],
parser: 'yaml-eslint-parser',
extends: ['plugin:yml/recommended'],
rules: {
'yml/no-irregular-whitespace': 'off'
}
}
],
// https://eslint.org/docs/user-guide/configuring#extending-configuration-files
// order matters: from least important to most important in terms of overriding
// Prettier + Vue: https://medium.com/@gogl.alex/how-to-properly-set-up-eslint-with-prettier-for-vue-or-nuxt-in-vscode-e42532099a9c
extends: [
'prettier',
'eslint:recommended',
'plugin:vue/recommended',
'standard',
'plugin:jsonc/recommended-with-json',
'plugin:vuejs-accessibility/recommended',
'plugin:@intlify/vue-i18n/recommended'
],
// https://eslint.org/docs/user-guide/configuring#configuring-plugins
plugins: ['vue', 'vuejs-accessibility', 'n', 'unicorn', '@intlify/vue-i18n'],
rules: {
'space-before-function-paren': 'off',
'comma-dangle': ['error', 'only-multiline'],
'vue/no-v-html': 'off',
'no-console': ['error', { allow: ['warn', 'error'] }],
'no-unused-vars': 'warn',
'no-undef': 'warn',
'object-shorthand': 'off',
'vue/no-template-key': 'warn',
'vue/no-useless-template-attributes': 'off',
'vue/multi-word-component-names': 'off',
'vuejs-accessibility/no-onchange': 'off',
'vuejs-accessibility/label-has-for': ['error', {
required: {
some: ['nesting', 'id']
}
}],
'vuejs-accessibility/no-static-element-interactions': 'off',
'n/no-callback-literal': 'warn',
'n/no-path-concat': 'warn',
'unicorn/better-regex': 'error',
'unicorn/no-array-push-push': 'error',
'unicorn/prefer-keyboard-event-key': 'error',
'unicorn/prefer-regexp-test': 'error',
'unicorn/prefer-string-replace-all': 'error',
'@intlify/vue-i18n/no-dynamic-keys': 'error',
// TODO: enable at a later date. currently disabled to prevent massive conflicts for initial PR
// '@intlify/vue-i18n/no-unused-keys': [
// 'error',
// {
// extensions: ['.js', '.vue', 'yaml']
// }
// ],
'@intlify/vue-i18n/no-duplicate-keys-in-locale': 'error',
'@intlify/vue-i18n/no-raw-text': [
'error',
{
attributes: {
'/.+/': [
'title',
'aria-label',
'aria-placeholder',
'aria-roledescription',
'aria-valuetext',
'tooltip',
'message'
],
input: ['placeholder', 'value'],
img: ['alt']
},
ignoreText: ['-', '•', '/', 'YouTube', 'Invidious', 'FreeTube']
}
],
'vue/require-explicit-emits': 'error',
'vue/no-unused-emit-declarations': 'error',
},
settings: {
'vue-i18n': {
localeDir: `./static/locales/{${activeLocales.join(',')}}.yaml`,
messageSyntaxVersion: '^8.0.0'
}
}
}

3
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1,3 @@
# These are supported funding model platforms
liberapay: FreeTube

136
.github/ISSUE_TEMPLATE/bug_report.yaml vendored Normal file
View File

@ -0,0 +1,136 @@
name: Bug Report
description: Report an issue or unexpected behavior that occurs within the application
title: "[Bug]: "
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
**README: Before You Submit Your Issue**
- Issues are not a place to go ask support questions or start discussions. Please ask support questions or start discussions on the [discussions page](https://github.com/FreeTubeApp/FreeTube/discussions).
- type: checkboxes
attributes:
label: Guidelines
description: Please ensure you've completed all of the following.
options:
- label: I have encountered this bug in the [latest release of FreeTube](https://github.com/FreeTubeApp/FreeTube/releases).
required: true
- label: I have encountered this bug in the [official downloads of FreeTube](https://github.com/FreeTubeApp/FreeTube#official-downloads).
required: true
- label: I have searched the issue tracker for [open](https://github.com/FreeTubeApp/FreeTube/issues?q=is%3Aopen+is%3Aissue) and [closed](https://github.com/FreeTubeApp/FreeTube/issues?q=is%3Aissue+is%3Aclosed) issues that are similar to the bug report I want to file, without success.
required: true
- label: I have searched the [documentation](https://docs.freetubeapp.io/) for information that matches the description of the bug I want to file, without success.
required: true
- label: This issue contains only one bug.
required: true
- type: textarea
attributes:
label: Describe the bug
description: A clear and concise description of what the bug is.
placeholder: |
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
validations:
required: true
- type: textarea
attributes:
label: Expected Behavior
description: A clear and concise description of what you expected to happen.
validations:
required: true
- type: dropdown
attributes:
label: 'Issue Labels'
description: Please select a label that fits this bug report. Choose multiple, if applicable.
multiple: true
options:
- accessibility issue
- API issue
- causes crash
- content not loading
- data loss
- feature stopped working
- inconsistent behavior
- keyboard control not working
- only happens in developer mode
- race condition
- text/string issue
- usability issue
- visual bug
validations:
required: true
- type: input
attributes:
label: FreeTube Version
description: |
If using releases, enter the version.
If using nightly builds, enter commit hash or build number, you can find it via about page in the FreeTube application.
placeholder: v0.14.0, 8c4278
validations:
required: true
- type: input
attributes:
label: Operating System Version
description: What operating system version are you using? On Windows, click Start button > Settings > System > About. On macOS, click the Apple Menu > About This Mac. On Linux, use lsb_release or uname -a.
placeholder: "e.g. Windows 10 version 1909, macOS Catalina 10.15.7, or Ubuntu 20.04"
validations:
required: true
- type: dropdown
attributes:
label: Installation Method
description: When you select an unofficial installation method, you must have verified that the bug is also present in one of the official installation methods. Please make sure you uninstall the unofficial installation before installing one of the official installations. If you can't reproduce this in one of the official installation methods, you should report the bug to the maintainer of the unofficial installation method you used.
options:
- .apk (Alpine Linux Package)
- .AppImage
- .deb
- .dmg
- .exe
- Flathub
- .pacman
- Portable
- .rpm
- .zip
- .apk (FreeTubeAndroid Unofficial)
- AUR (Unofficial)
- Chocolatey (Unofficial)
- Homebrew (Unofficial)
- MPR (Unofficial)
- Nix (Unofficial)
- PortableApps (Unofficial)
- Scoop (Unofficial)
- Snapcraft (Unofficial)
- WAPT (Unofficial)
- winget (Unofficial)
- other
validations:
required: true
- type: dropdown
attributes:
label: Primary API used
description: What is the primary API being used?
multiple: false
options:
- Local API
- Invidious API
validations:
required: true
- type: input
attributes:
label: 'Last Known Working FreeTube Version (If Any)'
description: What is the last version of FreeTube this worked in, if applicable?
placeholder: v0.14.0
- type: textarea
attributes:
label: Additional Information
description: |
Add additional information here.
You may drag-and-drop screenshots/videos and log files here, or paste the log file in code blocks.
- type: checkboxes
attributes:
label: Nightly Build
description: Please ensure you've completed the following, if applicable.
options:
- label: I have encountered this bug in the latest [nightly build](https://docs.freetubeapp.io/development/nightly-builds).
required: false

17
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1,17 @@
blank_issues_enabled: false
contact_links:
- name: Discussions
url: https://github.com/FreeTubeApp/FreeTube/discussions/categories/general
about: View discussions or start one yourself
- name: Questions
url: https://github.com/FreeTubeApp/FreeTube/discussions/categories/q-a
about: Ask and answer questions
- name: Matrix Community
url: https://matrix.to/#/+freetube:matrix.org
about: 'Join our Matrix chatroom - "Note: Bugs and Feature requests should be made on GitHub and not in the Matrix room"'
- name: Translate FreeTube
url: https://hosted.weblate.org/engage/free-tube/
about: Help translate FreeTube on Weblate
- name: FreeTube Documentation
url: https://docs.freetubeapp.io/
about: View the Documentation to find all relevant information about FreeTube

View File

@ -0,0 +1,61 @@
name: Feature request
description: Suggest an idea for FreeTube which you would like to see in a future release
title: "[Feature Request]: "
labels: "enhancement"
body:
- type: markdown
attributes:
value: |
**README: Before You Submit Your Issue**
- Issues are not a place to go ask support questions or start discussions. Please ask support questions or start discussions on the [discussions page](https://github.com/FreeTubeApp/FreeTube/discussions).
- type: checkboxes
attributes:
label: Guidelines
description: Please ensure you've completed all of the following.
options:
- label: I have searched the issue tracker for [open](https://github.com/FreeTubeApp/FreeTube/issues?q=is%3Aopen+is%3Aissue) and [closed](https://github.com/FreeTubeApp/FreeTube/issues?q=is%3Aissue+is%3Aclosed) issues that are similar to the feature request I want to file, without success.
required: true
- label: I have searched the [documentation](https://docs.freetubeapp.io/) for information that matches the description of the feature request I want to file, without success.
required: true
- label: This issue contains only one feature request.
required: true
- type: textarea
attributes:
label: Problem Description
description: Please add a clear and concise description of the problem you are seeking to solve with this feature request.
validations:
required: true
- type: textarea
attributes:
label: Proposed Solution
description: Describe the solution you'd like in a clear and concise manner.
validations:
required: true
- type: textarea
attributes:
label: Alternatives Considered
description: A clear and concise description of any alternative solutions or features you've considered.
validations:
required: true
- type: dropdown
attributes:
label: 'Issue Labels'
description: Please select a label that fits this feature request. Choose multiple, if applicable.
multiple: true
options:
- display more information to user
- ease of use improvement
- improvement to existing feature
- new feature
- new keyboard shortcut
- new optional setting
- support for external software
- visual improvement
validations:
required: true
- type: textarea
attributes:
label: Additional Information
description: |
Add any other context or screenshots/videos about the feature request here.
You may drag-and-drop screenshots.

36
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,36 @@
# Title
<!-- Thanks for sending a pull request! Make sure to follow the contributing guidelines. -->
<!-- Important note, we may remove your pull request if you do not use this provided PR template correctly. -->
## Pull Request Type
<!-- Please select what type of pull request this is: [x] -->
- [ ] Bugfix
- [ ] Feature Implementation
- [ ] Documentation
- [ ] Other
## Related issue
<!-- Please link the issue your pull request is referring to. -->
<!-- If this pull request fully resolves the relevant issue, put "closes" before the issue number. -->
<!-- Example: "closes #123456". -->
## Description
<!-- Please write a clear and concise description of what the pull request does. -->
## Screenshots <!-- If appropriate -->
<!-- Please add before and after screenshots if there is a visible change. -->
## Testing <!-- for code that is not small enough to be easily understandable -->
<!-- Has this pull request been tested? -->
<!-- Please describe shortly how you tested it. -->
<!-- Are there any ramifications remaining? -->
## Desktop
<!-- Please complete the following information-->
- **OS:**
- **OS Version:**
- **FreeTube version:**
## Additional context
<!-- Add any other context about the pull request here. -->

9
.github/auto-merge.yml vendored Normal file
View File

@ -0,0 +1,9 @@
minApprovals:
COLLABORATOR: 2
maxRequestedChanges:
COLLABORATOR: 0
mergeMethod: squash
requiredBaseBranches:
- development
- test
reportStatus: true

38
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,38 @@
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
labels:
- "PR: waiting for review"
- "PR: dependencies"
open-pull-requests-limit: 15
groups:
babel:
patterns:
- "@babel/*"
- "babel-*"
eslint:
patterns:
- "eslint"
- "eslint-*"
- "yaml-eslint-parser"
- "vue-eslint-parser"
stylelint:
patterns:
- "stylelint"
- "stylelint-*"
- "postcss"
- "postcss-*"
- "@double-great/stylelint-a11y"
fortawesome:
patterns:
- "@fortawesome/*"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
labels:
- "PR: waiting for review"
- "PR: dependencies"

65
.github/issue-labeler.yml vendored Normal file
View File

@ -0,0 +1,65 @@
'B: visual':
- '(visual bug)'
'B: Unofficial Download':
- '(AUR \(Unofficial\)|Chocolatey \(Unofficial\)|\.apk \(FreeTubeAndroid Unofficial\)|Homebrew \(Unofficial\)|PortableApps \(Unofficial\)|WAPT \(Unofficial\)|winget \(Unofficial\)|Scoop \(Unofficial\)|Snapcraft \(Unofficial\)|MPR \(Unofficial\)|Nix \(Unofficial\))'
'B: keyboard control':
- '(keyboard control not working)'
'B: text/string':
- '(text/string issue)'
'B: content not loading':
- '(content not loading)'
'B: accessibility':
- '(accessibility issue)'
'B: usability':
- '(usability issue)'
'B: crash':
- '(causes crash)'
'B: feature stopped working':
- '(feature stopped working)'
'B: inconsistent behavior':
- '(inconsistent behavior)'
'B: data loss':
- '(data loss)'
'B: race condition':
- '(race condition)'
'B: API issue':
- '(API issue)'
'B: developer mode':
- '(only happens in developer mode)'
'E: improvement existing feature':
- '(improvement to existing feature)'
'E: new optional setting':
- '(new optional setting)'
'E: visual improvement':
- '(visual improvement)'
'E: display more information':
- '(display more information to user)'
'E: ease of use improvement':
- '(ease of use improvement)'
'E: support external software':
- '(support for external software)'
'E: new feature':
- '(new feature)'
'E: keyboard shortcut':
- '(new keyboard shortcut)'

8
.github/pr-labeler.yml vendored Normal file
View File

@ -0,0 +1,8 @@
'PR: waiting for review':
- changed-files:
- any-glob-to-any-file: '**'
'PR: dependencies':
- any:
- changed-files:
- any-glob-to-any-file: ['yarn.lock', 'package.json']

View File

@ -0,0 +1,16 @@
name: "Label Duplicate"
on:
issue_comment:
types: [created]
jobs:
test:
if: github.event.comment.author_association == 'MEMBER' || github.event.comment.author_association == 'OWNER'
runs-on: ubuntu-latest
steps:
- name: Check Comment Author
uses: Amwam/issue-comment-action@v1.3.1
with:
keywords: '["duplicate of #", "duplicate of https://github.com/FreeTubeApp/FreeTube/issues/", "duplicate of https://github.com/FreeTubeApp/FreeTube/pulls/"]'
labels: '["U: duplicate"]'
github-token: "${{ secrets.GITHUB_TOKEN }}"

17
.github/workflows/autoMerge.yml vendored Normal file
View File

@ -0,0 +1,17 @@
name: Auto Merge PR
on:
pull_request_target:
types: [opened, synchronize, reopened, auto_merge_disabled, ready_for_review]
jobs:
build:
if: ${{ !github.event.pull_request.draft && (contains(github.event.pull_request.base.ref, 'development') || contains(github.event.pull_request.base.ref, 'RC')) }}
runs-on: ubuntu-latest
steps:
- name: Auto Merge PR
run: |
echo ${{ secrets.PUSH_TOKEN }} >> auth.txt
gh auth login --with-token < auth.txt
rm auth.txt
gh pr merge https://github.com/FreeTubeApp/FreeTube/pull/${{ github.event.pull_request.number }} --auto --squash

330
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,330 @@
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: Build
on:
push:
branches: [ master, development, '**-RC' ]
workflow_dispatch:
jobs:
build:
strategy:
matrix:
node-version: [20.x]
runtime:
- linux-x64
- linux-armv7l
- linux-arm64
- win-x64
- win-arm64
- osx-x64
# `osx-arm64` disabled due to "macOS gatekeeper"
# See details in https://github.com/FreeTubeApp/FreeTube/pull/2113
# - osx-arm64
include:
- runtime: linux-x64
os: ubuntu-latest
- runtime: linux-armv7l
os: ubuntu-latest
- runtime: linux-arm64
os: ubuntu-latest
- runtime: osx-x64
os: macOS-latest
# - runtime: osx-arm64
# os: macOS-latest
- runtime: win-x64
os: windows-latest
- runtime: win-arm64
os: windows-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "yarn"
- run: yarn run ci
- run: yarn run lint
- name: Get Version Number
id: getPackageInfo
uses: jaywcjlove/github-action-package@main
- name: Set Version Number Variable
id: versionNumber
uses: actions/github-script@v7
env:
IS_DEV: ${{ contains(github.ref, 'development') }}
IS_RC: ${{ contains(github.ref, 'RC') }}
VERSION_NUMBER_NIGHTLY: ${{ steps.getPackageInfo.outputs.version }}-nightly-${{ github.run_number }}
VERSION_NUMBER_RC: ${{ steps.getPackageInfo.outputs.version }}-RC-${{ github.run_number }}
VERSION_NUMBER: ${{ steps.getPackageInfo.outputs.version }}
with:
result-encoding: string
script: |
if (${{ env.IS_DEV }}) {
return "${{ env.VERSION_NUMBER_NIGHTLY }}"
} else if (${{ env.IS_RC }}) {
return "${{ env.VERSION_NUMBER_RC }}"
} else {
return "${{env.VERSION_NUMBER }}"
}
# script: if ${{ env.IS_DEV }} then echo "::set-output name=VERSION_NUMBER::${{ env.VERSION_NUMBER_NIGHTLY }}" else echo "::set-output name=VERSION_NUMBER::${{ env.VERSION_NUMBER }}" fi
- name: Update package.json version
uses: jaywcjlove/github-action-package@main
with:
version: ${{ steps.versionNumber.outputs.result }}
- name: Install libarchive-tools
if: startsWith(matrix.os, 'ubuntu')
run: sudo apt -y install libarchive-tools; echo "Version Number ${{ toJson(job) }} ${{ toJson(needs) }}"
- name: Build x64 with Node.js ${{ matrix.node-version}}
if: contains(matrix.runtime, 'x64')
run: yarn run build
- name: Build ARMv7l with Node.js ${{ matrix.node-version}}
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l')
run: yarn run build:arm32
- name: Build ARM64 with Node.js ${{ matrix.node-version}}
if: contains(matrix.runtime, 'arm64')
run: yarn run build:arm64
- name: Upload Linux .zip x64 Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
with:
name: freetube_${{ steps.versionNumber.outputs.result }}_linux_portable_x64
path: build/freetube-${{ steps.versionNumber.outputs.result }}.zip
- name: Upload Linux .7z x64 Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
with:
name: freetube_${{ steps.versionNumber.outputs.result }}_linux_portable_x64.7z
path: build/freetube-${{ steps.versionNumber.outputs.result }}.7z
- name: Upload Linux .zip ARMv7l Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l')
with:
name: freetube_${{ steps.versionNumber.outputs.result }}_linux_portable_armv7l
path: build/freetube-${{ steps.versionNumber.outputs.result }}-armv7l.zip
- name: Upload Linux .7z ARMv7l Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l')
with:
name: freetube_${{ steps.versionNumber.outputs.result }}_linux_portable_armv7l.7z
path: build/freetube-${{ steps.versionNumber.outputs.result }}-armv7l.7z
- name: Upload Linux .zip ARM64 Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64')
with:
name: freetube_${{ steps.versionNumber.outputs.result }}_linux_portable_arm64
path: build/freetube-${{ steps.versionNumber.outputs.result }}-arm64.zip
- name: Upload Linux .7z ARM64 Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64')
with:
name: freetube_${{ steps.versionNumber.outputs.result }}_linux_portable_arm64.7z
path: build/freetube-${{ steps.versionNumber.outputs.result }}-arm64.7z
- name: Upload .deb x64 Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
with:
name: freetube_${{ steps.versionNumber.outputs.result }}_amd64.deb
path: build/freetube_${{ steps.versionNumber.outputs.result }}_amd64.deb
- name: Upload .deb ARMv7l Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l')
with:
name: freetube_${{ steps.versionNumber.outputs.result }}_armv7l.deb
path: build/freetube_${{ steps.versionNumber.outputs.result }}_armv7l.deb
- name: Upload .deb ARM64 Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64')
with:
name: freetube_${{ steps.versionNumber.outputs.result }}_arm64.deb
path: build/freetube_${{ steps.versionNumber.outputs.result }}_arm64.deb
- name: Upload AppImage x64 Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
with:
name: freetube_${{ steps.versionNumber.outputs.result }}_amd64.AppImage
path: build/FreeTube-${{ steps.versionNumber.outputs.result }}.AppImage
- name: Upload AppImage ARMv7l Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l')
with:
name: freetube_${{ steps.versionNumber.outputs.result }}_armv7l.AppImage
path: build/FreeTube-${{ steps.versionNumber.outputs.result }}-armv7l.AppImage
- name: Upload AppImage ARM64 Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64')
with:
name: freetube_${{ steps.versionNumber.outputs.result }}_arm64.AppImage
path: build/FreeTube-${{ steps.versionNumber.outputs.result }}-arm64.AppImage
- name: Upload .rpm x64 Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
with:
name: freetube_${{ steps.versionNumber.outputs.result }}_amd64.rpm
path: build/freetube-${{ steps.versionNumber.outputs.result }}.x86_64.rpm
# rpm are not built for armv7l
- name: Upload .rpm ARM64 Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64')
with:
name: freetube_${{ steps.versionNumber.outputs.result }}_arm64.rpm
path: build/freetube-${{ steps.versionNumber.outputs.result }}.aarch64.rpm
- name: Upload Alpine .apk x64 Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
with:
name: freetube_${{ steps.versionNumber.outputs.result }}_alpine_amd64.apk
path: build/freetube-${{ steps.versionNumber.outputs.result }}.apk
- name: Upload Alpine .apk ARMv7l Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l')
with:
name: freetube_${{ steps.versionNumber.outputs.result }}_alpine_armv7l.apk
path: build/freetube-${{ steps.versionNumber.outputs.result }}-armv7l.apk
- name: Upload Alpine .apk ARM64 Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64')
with:
name: freetube_${{ steps.versionNumber.outputs.result }}_alpine_arm64.apk
path: build/freetube-${{ steps.versionNumber.outputs.result }}-arm64.apk
- name: Upload Pacman .pacman x64 Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
with:
name: freetube_${{ steps.versionNumber.outputs.result }}_amd64.pacman
path: build/freetube-${{ steps.versionNumber.outputs.result }}.pacman
# - name: Upload Web Build
# uses: actions/upload-artifact@v4
# if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
# with:
# name: freetube_${{ steps.versionNumber.outputs.result }}_static_web
# path: dist/web
- name: Upload Windows x64 .exe Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-x64')
with:
name: freetube-${{ steps.versionNumber.outputs.result }}-setup-x64.exe
path: build/freetube Setup ${{ steps.versionNumber.outputs.result }}.exe
- name: Upload Windows arm64 .exe Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-arm64')
with:
name: freetube-${{ steps.versionNumber.outputs.result }}-setup-arm64.exe
path: build/freetube Setup ${{ steps.versionNumber.outputs.result }}.exe
- name: Upload Windows x64 .zip Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-x64')
with:
name: freetube-${{ steps.versionNumber.outputs.result }}-win-x64-portable
path: build/freetube-${{ steps.versionNumber.outputs.result }}-win.zip
- name: Upload Windows x64 .7z Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-x64')
with:
name: freetube-${{ steps.versionNumber.outputs.result }}-win-x64-portable.7z
path: build/freetube-${{ steps.versionNumber.outputs.result }}-win.7z
- name: Upload Windows arm64 .zip Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-arm64')
with:
name: freetube-${{ steps.versionNumber.outputs.result }}-win-arm64-portable
path: build/freetube-${{ steps.versionNumber.outputs.result }}-arm64-win.zip
- name: Upload Windows arm64 .7z Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-arm64')
with:
name: freetube-${{ steps.versionNumber.outputs.result }}-win-arm64-portable.7z
path: build/freetube-${{ steps.versionNumber.outputs.result }}-arm64-win.7z
- name: Upload Windows x64 Portable Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-x64')
with:
name: freetube-${{ steps.versionNumber.outputs.result }}-portable-x64.exe
path: build/freetube ${{ steps.versionNumber.outputs.result }}.exe
- name: Upload Windows arm64 Portable Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-arm64')
with:
name: freetube-${{ steps.versionNumber.outputs.result }}-portable-arm64.exe
path: build/freetube ${{ steps.versionNumber.outputs.result }}.exe
- name: Upload Mac x64 .dmg Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-x64')
with:
name: freetube-${{ steps.versionNumber.outputs.result }}-mac-x64.dmg
path: build/freetube-${{ steps.versionNumber.outputs.result }}.dmg
# - name: Upload Mac arm64 .dmg Artifact
# uses: actions/upload-artifact@v4
# if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-arm64')
# with:
# name: freetube-${{ steps.versionNumber.outputs.result }}-mac-arm64.dmg
# path: build/freetube-${{ steps.versionNumber.outputs.result }}-arm64.dmg
- name: Upload Mac x64 .zip Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-x64')
with:
name: freetube-${{ steps.versionNumber.outputs.result }}-mac-x64.zip
path: build/freetube-${{ steps.versionNumber.outputs.result }}-mac.zip
- name: Upload Mac x64 .7z Artifact
uses: actions/upload-artifact@v4
if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-x64')
with:
name: freetube-${{ steps.versionNumber.outputs.result }}-mac-x64.7z
path: build/freetube-${{ steps.versionNumber.outputs.result }}-mac.7z
# - name: Upload Mac arm64 .zip Artifact
# uses: actions/upload-artifact@v4
# if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-arm64')
# with:
# name: freetube-${{ steps.versionNumber.outputs.result }}-mac-arm64.zip
# path: build/freetube-${{ steps.versionNumber.outputs.result }}-arm64-mac.zip

View File

@ -0,0 +1,28 @@
# Compress images on demand (workflow_dispatch), and at 12am every Sunday (schedule).
# Open a Pull Request if any images can be compressed.
name: Compress Images
on:
workflow_dispatch:
schedule:
- cron: '0 0 * * 0'
jobs:
build:
name: calibreapp/image-actions
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v4
- name: Compress Images
id: calibre
uses: calibreapp/image-actions@main
with:
githubToken: ${{ secrets.GITHUB_TOKEN }}
compressOnly: true
- name: Create New Pull Request If Needed
if: steps.calibre.outputs.markdown != ''
uses: peter-evans/create-pull-request@v6
with:
title: Compressed Images Nightly
branch-suffix: timestamp
commit-message: Compressed Images
body: ${{ steps.calibre.outputs.markdown }}

63
.github/workflows/codeql.yml vendored Normal file
View File

@ -0,0 +1,63 @@
name: "CodeQL"
on:
push:
branches: [ "development" ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ "development" ]
schedule:
- cron: '36 3 * * 5'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- name: Checkout repository
uses: actions/checkout@v4
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v3
# Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
# If the Autobuild fails above, remove it and uncomment the following three lines.
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
# - run: |
# echo "Run, Build Application using script"
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{matrix.language}}"

23
.github/workflows/conflicts.yml vendored Normal file
View File

@ -0,0 +1,23 @@
name: "Conflicts"
on:
# So that PRs touching the same files as the push are updated
push:
# So that the `dirtyLabel` is removed if conflicts are resolve
# We recommend `pull_request_target` so that github secrets are available.
# In `pull_request` we wouldn't be able to change labels of fork PRs
pull_request_target:
types: [synchronize]
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: check if prs are dirty
uses: eps1lon/actions-label-merge-conflict@releases/2.x
with:
dirtyLabel: "PR: merge conflicts / rebase needed"
removeOnDirtyLabel: "PR: waiting for review"
repoToken: "${{ secrets.GITHUB_TOKEN }}"
commentOnDirty: "This pull request has conflicts, please resolve those before we can evaluate the pull request."
commentOnClean: "Conflicts have been resolved. A maintainer will review the pull request shortly."

124
.github/workflows/flatpak.yml vendored Normal file
View File

@ -0,0 +1,124 @@
# This is a basic workflow that is manually triggered
name: Create Flatpak PR
# Controls when the action will run. Workflow runs when manually triggered using the UI
# or API.
on:
workflow_dispatch:
release:
types: [published]
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
repository: flathub/io.freetubeapp.FreeTube
token: ${{ secrets.FLATHUB_TOKEN }}
- name: GitHub API exec action
uses: moustacheful/github-api-exec-action@v0
id: api_results
with:
# Command to execute, (e.g: `pulls.create`), see https://octokit.github.io/rest.js/ for available commands
command: repos.getRelease
payload: >
{
"owner": "FreeTubeApp",
"repo": "FreeTube",
"release_id": ${{ secrets.UPLOAD_ID }}
}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Install xmlstarlet
run: sudo apt -y install xmlstarlet
- name: Create Version Variable
uses: bluwy/substitute-string-action@v3
id: sub
with:
_input-text: ${{ fromJson(steps.api_results.outputs.result).tag_name }}
-beta: ''
v: ''
- name: Create Release Branch
run: |
git checkout -b release-v${{ steps.sub.outputs.result }}
git push --set-upstream origin release-v${{ steps.sub.outputs.result }}
- name: Download x64 Release
uses: fabriciobastian/download-release-asset-action@v1.0.6
with:
version: v${{ steps.sub.outputs.result }}-beta
repository: FreeTubeApp/FreeTube
file: freetube-${{ steps.sub.outputs.result }}-linux-portable-x64.zip
- name: Download ARM Release
uses: fabriciobastian/download-release-asset-action@v1.0.6
with:
version: v${{ steps.sub.outputs.result }}-beta
repository: FreeTubeApp/FreeTube
file: freetube-${{ steps.sub.outputs.result }}-linux-portable-arm64.zip
- name: Set x64 Hash Variable
id: hash-x64
run: |
echo 'HASH_X64<<EOF' >> $GITHUB_ENV
sha256sum freetube-${{ steps.sub.outputs.result }}-linux-portable-x64.zip | awk '{print $1}' >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
- name: Set ARM Hash Variable
id: hash-arm64
run: |
echo 'HASH_ARM64<<EOF' >> $GITHUB_ENV
sha256sum freetube-${{ steps.sub.outputs.result }}-linux-portable-arm64.zip | awk '{print $1}' >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
- name: Set Date Variable
id: current-date
run: |
echo 'CURRENT_DATE<<EOF' >> $GITHUB_ENV
date +"%Y-%m-%d" >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
- name: Update x64 File Location in yml File
uses: mikefarah/yq@4.0.0-beta1
with:
# The Command which should be run
cmd: yq w -i io.freetubeapp.FreeTube.yml modules[0].sources[0].url 'https://github.com/FreeTubeApp/FreeTube/releases/download/v${{ steps.sub.outputs.result }}-beta/freetube-${{ steps.sub.outputs.result }}-linux-portable-x64.zip'
- name: Update x64 Hash in yml File
uses: mikefarah/yq@4.0.0-beta1
with:
# The Command which should be run
cmd: yq w -i io.freetubeapp.FreeTube.yml modules[0].sources[0].sha256 ${{ env.HASH_X64 }}
- name: Update ARM File Location in yml File
uses: mikefarah/yq@4.0.0-beta1
with:
# The Command which should be run
cmd: yq w -i io.freetubeapp.FreeTube.yml modules[0].sources[1].url 'https://github.com/FreeTubeApp/FreeTube/releases/download/v${{ steps.sub.outputs.result }}-beta/freetube-${{ steps.sub.outputs.result }}-linux-portable-arm64.zip'
- name: Update ARM Hash in yml File
uses: mikefarah/yq@4.0.0-beta1
with:
# The Command which should be run
cmd: yq w -i io.freetubeapp.FreeTube.yml modules[0].sources[1].sha256 ${{ env.HASH_ARM64 }}
- name: Add Patch Notes to XML File
run: xmlstarlet ed -L -i /application/releases/release[1] -t elem -n releaseTMP -v "" -i //releaseTMP -t attr -n version -v "${{ steps.sub.outputs.result }} Beta" -i //releaseTMP -t attr -n date -v "${{ env.CURRENT_DATE }}" -s //releaseTMP -t elem -n url -v "" -s //releaseTMP/url -t text -n "" -v "https://github.com/FreeTubeApp/FreeTube/releases/tag/v${{ steps.sub.outputs.result }}-beta" -r //releaseTMP -v "release" io.freetubeapp.FreeTube.metainfo.xml
- name: Remove Release Files
run: |
rm freetube-${{ steps.sub.outputs.result }}-linux-portable-x64.zip
rm freetube-${{ steps.sub.outputs.result }}-linux-portable-arm64.zip
- name: Commit Files
uses: stefanzweifel/git-auto-commit-action@v5
with:
# Optional but recommended
# Defaults to "Apply automatic changes"
commit_message: Update files for v${{ steps.sub.outputs.result }}
token: ${{ secrets.FLATHUB_TOKEN }}
# Optional options appended to `git-commit`
# See https://git-scm.com/docs/git-commit for a list of available options
commit_options: '--no-verify --signoff'
# Optional: Disable dirty check and always try to create a commit and push
skip_dirty_check: true
- name: Create PR
run: |
echo ${{ secrets.FLATHUB_TOKEN }} >> auth.txt
gh auth login --with-token < auth.txt
rm auth.txt
gh pr create --title "Release v${{ steps.sub.outputs.result }}" --body "This is an automated PR for the v${{ steps.sub.outputs.result }} release. This PR will be updated and merged once testing is complete."

18
.github/workflows/label-issue.yml vendored Normal file
View File

@ -0,0 +1,18 @@
name: "Issue Labeler"
on:
issues:
types: [opened]
permissions:
issues: write
contents: read
jobs:
triage:
runs-on: ubuntu-latest
steps:
- uses: github/issue-labeler@v3.4
with:
configuration-path: .github/issue-labeler.yml
enable-versioned-regex: 0
repo-token: ${{ secrets.GITHUB_TOKEN }}

17
.github/workflows/label-pr.yml vendored Normal file
View File

@ -0,0 +1,17 @@
name: "Pull Request Labeler"
on:
pull_request_target:
types: [opened, reopened, ready_for_review]
jobs:
triage:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
if: ${{ !github.event.pull_request.draft }}
steps:
- uses: actions/labeler@v5
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
configuration-path: .github/pr-labeler.yml

31
.github/workflows/linter.yml vendored Normal file
View File

@ -0,0 +1,31 @@
# This is a basic workflow to help you get started with Actions
name: Linter
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
pull_request:
branches: [ master, development ]
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
lint:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- uses: actions/checkout@v4
- name: Use Node.js 20.x
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: "yarn"
- run: yarn run ci
- run: yarn run lint
# let's verify that webpack is able to package the project
- run: yarn run pack
# verify that webpack is able to package the project using the web config
- run: yarn run pack:web

24
.github/workflows/no-response.yml vendored Normal file
View File

@ -0,0 +1,24 @@
name: No Response
# Both `issue_comment` and `scheduled` event types are required for this Action
# to work properly.
on:
issue_comment:
types: [created]
schedule:
# Run daily at midnight.
- cron: '0 0 * * *'
jobs:
noResponse:
runs-on: ubuntu-latest
steps:
- uses: lee-dohm/no-response@v0.5.0
with:
token: ${{ github.token }}
closeComment: >
This issue has been automatically closed because there has been no response to our request for more information from the original author.
With only the information that is currently in the issue, we don't have enough information to take action.
Please reach out if you have or find the answers we need so that we can investigate further.
daysUntilClose: 14
responseRequiredLabel: "U: Waiting for Response from Author"

352
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,352 @@
# This is a basic workflow that is manually triggered
name: Upload Release
# Controls when the action will run. Workflow runs when manually triggered using the UI
# or API.
on:
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
build:
strategy:
matrix:
node-version: [20.x]
runtime:
- linux-x64
- linux-armv7l
- linux-arm64
- win-x64
- win-arm64
- osx-x64
# `osx-arm64` disabled due to "macOS gatekeeper"
# See details in https://github.com/FreeTubeApp/FreeTube/pull/2113
# - osx-arm64
include:
- runtime: linux-x64
os: ubuntu-latest
- runtime: linux-armv7l
os: ubuntu-latest
- runtime: linux-arm64
os: ubuntu-latest
- runtime: osx-x64
os: macOS-latest
# - runtime: osx-arm64
# os: macOS-latest
- runtime: win-x64
os: windows-latest
- runtime: win-arm64
os: windows-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "yarn"
- run: yarn run ci
- run: yarn run lint
- name: Get Version Number
id: getPackageInfo
uses: jaywcjlove/github-action-package@main
- name: Build x64 with Node.js ${{ matrix.node-version}}
if: contains(matrix.runtime, 'x64')
run: yarn run build
- name: Build ARMv7l with Node.js ${{ matrix.node-version}}
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l')
run: yarn run build:arm32
- name: Build ARM64 with Node.js ${{ matrix.node-version}}
if: contains(matrix.runtime, 'arm64')
run: yarn run build:arm64
- name: Upload AppImage x64 Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube_${{ steps.getPackageInfo.outputs.version }}_amd64.AppImage
asset_path: build/FreeTube-${{ steps.getPackageInfo.outputs.version }}.AppImage
asset_content_type: application/vnd.appimage
- name: Upload Linux .zip x64 Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube-${{ steps.getPackageInfo.outputs.version }}-linux-portable-x64.zip
asset_path: build/freetube-${{ steps.getPackageInfo.outputs.version }}.zip
asset_content_type: application/zip
- name: Upload Linux .7z x64 Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube-${{ steps.getPackageInfo.outputs.version }}-linux-portable-x64.7z
asset_path: build/freetube-${{ steps.getPackageInfo.outputs.version }}.7z
asset_content_type: application/x-7z-compressed
- name: Upload Linux .zip ARMv7l Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube-${{ steps.getPackageInfo.outputs.version }}-linux-portable-armv7l.zip
asset_path: build/freetube-${{ steps.getPackageInfo.outputs.version }}-armv7l.zip
asset_content_type: application/zip
- name: Upload Linux .7z ARMv7l Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube-${{ steps.getPackageInfo.outputs.version }}-linux-portable-armv7l.7z
asset_path: build/freetube-${{ steps.getPackageInfo.outputs.version }}-armv7l.7z
asset_content_type: application/x-7z-compressed
- name: Upload Linux .zip ARM64 Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube-${{ steps.getPackageInfo.outputs.version }}-linux-portable-arm64.zip
asset_path: build/freetube-${{ steps.getPackageInfo.outputs.version }}-arm64.zip
asset_content_type: application/zip
- name: Upload Linux .7z ARM64 Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube-${{ steps.getPackageInfo.outputs.version }}-linux-portable-arm64.7z
asset_path: build/freetube-${{ steps.getPackageInfo.outputs.version }}-arm64.7z
asset_content_type: application/x-7z-compressed
- name: Upload Linux .deb x64 Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube_${{ steps.getPackageInfo.outputs.version }}_amd64.deb
asset_path: build/freetube_${{ steps.getPackageInfo.outputs.version }}_amd64.deb
asset_content_type: application/vnd.debian.binary-package
- name: Upload Linux .deb ARMv7l Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube_${{ steps.getPackageInfo.outputs.version }}_armv7l.deb
asset_path: build/freetube_${{ steps.getPackageInfo.outputs.version }}_armv7l.deb
asset_content_type: application/vnd.debian.binary-package
- name: Upload Linux .deb ARM64 Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube_${{ steps.getPackageInfo.outputs.version }}_arm64.deb
asset_path: build/freetube_${{ steps.getPackageInfo.outputs.version }}_arm64.deb
asset_content_type: application/vnd.debian.binary-package
- name: Upload Linux .rpm x64 Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube_${{ steps.getPackageInfo.outputs.version }}_amd64.rpm
asset_path: build/freetube-${{ steps.getPackageInfo.outputs.version }}.x86_64.rpm
asset_content_type: application/x-rpm
# rpm are not built for armv7l
- name: Upload Linux .rpm ARM64 Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube_${{ steps.getPackageInfo.outputs.version }}_arm64.rpm
asset_path: build/freetube-${{ steps.getPackageInfo.outputs.version }}.aarch64.rpm
asset_content_type: application/x-rpm
- name: Upload Windows x64 .exe Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-x64')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube-${{ steps.getPackageInfo.outputs.version }}-setup-x64.exe
asset_path: build/freetube Setup ${{ steps.getPackageInfo.outputs.version }}.exe
asset_content_type: application/x-ms-dos-executable
- name: Upload Windows arm64 .exe Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-arm64')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube-${{ steps.getPackageInfo.outputs.version }}-setup-arm64.exe
asset_path: build/freetube Setup ${{ steps.getPackageInfo.outputs.version }}.exe
asset_content_type: application/x-ms-dos-executable
- name: Upload Windows x64 .zip Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-x64')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube-${{ steps.getPackageInfo.outputs.version }}-win-x64-portable.zip
asset_path: build/freetube-${{ steps.getPackageInfo.outputs.version }}-win.zip
asset_content_type: application/zip
- name: Upload Windows x64 .7z Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-x64')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube-${{ steps.getPackageInfo.outputs.version }}-win-x64-portable.7z
asset_path: build/freetube-${{ steps.getPackageInfo.outputs.version }}-win.7z
asset_content_type: application/x-7z-compressed
- name: Upload Windows arm64 .zip Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-arm64')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube-${{ steps.getPackageInfo.outputs.version }}-win-arm64-portable.zip
asset_path: build/freetube-${{ steps.getPackageInfo.outputs.version }}-arm64-win.zip
asset_content_type: application/zip
- name: Upload Windows arm64 .7z Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-arm64')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube-${{ steps.getPackageInfo.outputs.version }}-win-arm64-portable.7z
asset_path: build/freetube-${{ steps.getPackageInfo.outputs.version }}-arm64-win.7z
asset_content_type: application/x-7z-compressed
- name: Upload Windows x64 portable Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-x64')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube-${{ steps.getPackageInfo.outputs.version }}-win-x64-portable.exe
asset_path: build/FreeTube ${{ steps.getPackageInfo.outputs.version }}.exe
asset_content_type: application/x-ms-dos-executable
- name: Upload Windows arm64 portable Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-arm64')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube-${{ steps.getPackageInfo.outputs.version }}-win-arm64-portable.exe
asset_path: build/FreeTube ${{ steps.getPackageInfo.outputs.version }}.exe
asset_content_type: application/x-ms-dos-executable
- name: Upload Mac x64 .dmg Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-x64')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube-${{ steps.getPackageInfo.outputs.version }}-mac-x64.dmg
asset_path: build/freetube-${{ steps.getPackageInfo.outputs.version }}.dmg
asset_content_type: application/x-apple-diskimage
# - name: Upload Mac arm64 .dmg Release
# uses: actions/upload-release-asset@v1
# if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-arm64')
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# with:
# upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
# asset_name: freetube-${{ steps.getPackageInfo.outputs.version }}-mac-arm64.dmg
# asset_path: build/freetube-${{ steps.getPackageInfo.outputs.version }}-arm64.dmg
# asset_content_type: application/x-apple-diskimage
- name: Upload Mac x64 .zip Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-x64')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube-${{ steps.getPackageInfo.outputs.version }}-mac-x64.zip
asset_path: build/freetube-${{ steps.getPackageInfo.outputs.version }}-mac.zip
asset_content_type: application/zip
- name: Upload Mac x64 .7z Release
uses: actions/upload-release-asset@v1
if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-x64')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
asset_name: freetube-${{ steps.getPackageInfo.outputs.version }}-mac-x64.7z
asset_path: build/freetube-${{ steps.getPackageInfo.outputs.version }}-mac.7z
asset_content_type: application/x-7z-compressed
# - name: Upload Mac arm64 .zip Release
# uses: actions/upload-release-asset@v1
# if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-arm64')
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# with:
# upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label}
# asset_name: freetube-${{ steps.getPackageInfo.outputs.version }}-mac-arm64.zip
# asset_path: build/freetube-${{ steps.getPackageInfo.outputs.version }}-arm64-mac.zip
# asset_content_type: application/x-apple-diskimage

View File

@ -0,0 +1,61 @@
name: Remove outdated labels
on:
pull_request_target:
types:
- closed
- converted_to_draft
- ready_for_review
jobs:
remove-merged-pr-labels:
name: Remove merged pull request labels
if: github.event.pull_request.merged
runs-on: ubuntu-latest
steps:
- uses: mondeja/remove-labels-gh-action@v2.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
labels: |
PR: waiting for review
PR: WIP
PR: changes requested
PR: merge conflicts / rebase needed
PR/Issue: dependent
PR: stale
remove-closed-pr-labels:
name: Remove closed pull request labels
if: github.event_name == 'pull_request_target' && (! github.event.pull_request.merged) && (github.event.action != 'converted_to_draft') && (github.event.action != 'ready_for_review')
runs-on: ubuntu-latest
steps:
- uses: mondeja/remove-labels-gh-action@v2.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
labels: |
PR: waiting for review
PR: WIP
PR: changes requested
PR: merge conflicts / rebase needed
PR/Issue: dependent
PR: stale
remove-draft-pr-labels:
name: Remove labels from draft pull requests
if: github.event_name == 'pull_request_target' && github.event.action == 'converted_to_draft'
runs-on: ubuntu-latest
steps:
- uses: mondeja/remove-labels-gh-action@v2.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
labels: |
PR: waiting for review
remove-ready-pr-labels:
name: Remove labels when draft pr is marked ready for review
if: github.event_name == 'pull_request_target' && github.event.action == 'ready_for_review'
runs-on: ubuntu-latest
steps:
- uses: mondeja/remove-labels-gh-action@v2.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
labels: |
PR: WIP

70
.github/workflows/report.yml vendored Normal file
View File

@ -0,0 +1,70 @@
# This is a basic workflow to help you get started with Actions
name: Project Board Automation
on:
issues:
types: [closed, deleted, reopened, opened]
jobs:
assign-issues-to-projects:
runs-on: ubuntu-latest
steps:
# For bug reports
- name: New bug issue
uses: alex-page/github-project-automation-plus@v0.9.0
if: contains(github.event.issue.labels.*.name, 'bug') && github.event.action == 'opened'
with:
project: Bug Reports
column: To assign
repo-token: ${{ secrets.PUSH_TOKEN }}
action: update
- name: Bug issue closed
uses: alex-page/github-project-automation-plus@v0.9.0
if: github.event.action == 'closed' || github.event.action == 'deleted'
with:
action: delete
project: Bug Reports
column: To assign
repo-token: ${{ secrets.PUSH_TOKEN }}
- name: Bug issue reopened
uses: alex-page/github-project-automation-plus@v0.9.0
if: contains(github.event.issue.labels.*.name, 'bug') && github.event.action == 'reopened'
with:
project: Bug Reports
column: To assign
repo-token: ${{ secrets.PUSH_TOKEN }}
action: update
# For feature requests
- name: New feature issue
uses: alex-page/github-project-automation-plus@v0.9.0
if: contains(github.event.issue.labels.*.name, 'enhancement') && github.event.action == 'opened'
with:
project: Feature Requests
column: To assign
repo-token: ${{ secrets.PUSH_TOKEN }}
action: update
- name: Feature request issue closed
uses: alex-page/github-project-automation-plus@v0.9.0
if: github.event.action == 'closed' || github.event.action == 'deleted'
with:
action: delete
project: Feature Requests
column: To assign
repo-token: ${{ secrets.PUSH_TOKEN }}
- name: Feature request issue reopened
uses: alex-page/github-project-automation-plus@v0.9.0
if: contains(github.event.issue.labels.*.name, 'enhancement') && github.event.action == 'reopened'
with:
project: Feature Requests
column: To assign
repo-token: ${{ secrets.PUSH_TOKEN }}
action: update

27
.github/workflows/stale.yml vendored Normal file
View File

@ -0,0 +1,27 @@
name: 'Close stale issues and PRs'
on:
schedule:
- cron: '30 1 * * *'
permissions:
issues: write
pull-requests: write
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
with:
stale-issue-message: 'This issue is stale because it has been open 28 days with no activity. Remove stale label or comment or this will be closed in 7 days.'
stale-pr-message: 'This PR is stale because it has been open 28 days with no activity. Remove stale label or comment or this will be closed in 14 days.'
close-issue-message: 'This issue was closed because it has been stalled for 7 days with no activity.'
close-pr-message: 'This PR was closed because it has been stalled for 14 days with no activity.'
days-before-issue-stale: 28
days-before-pr-stale: 28
days-before-issue-close: 7
days-before-pr-close: 14
stale-issue-label: 'U: stale'
stale-pr-label: 'PR: stale'
exempt-pr-labels: 'PR: WIP'
exempt-issue-labels: 'enhancement'

37
.gitignore vendored
View File

@ -1,9 +1,30 @@
node_modules
out
\.idea/
subscriptions\.db
.vscode/
.eslintrc*
*.db
.DS_Store
dist/electron/*
storyboards/*
dashFiles/*
static/dashFiles
static/storyboards
static/dashFiles/*
static/storyboards/*
dist/web/*
build/*
!build/icons
coverage
node_modules/
npm-debug.log
npm-debug.log.*
thumbs.db
!.gitkeep
data/tmp/
.tmp/
tmp/
.cache
dist
coverage
__coverage__
csak-timelog.json
.idea/
debug/
electron-packager/win32-x64/FreeTube-win32-x64/
# Lefthook
lefthook-local.yml

7
.prettierrc Normal file
View File

@ -0,0 +1,7 @@
{
"semi": false,
"singleQuote": true,
"tabWidth": 2,
"trailingComma": false,
"useTabs": false
}

7
.stylelintignore Normal file
View File

@ -0,0 +1,7 @@
src/data/
src/datastores/
src/main/
src/renderer/videoJS.css
dist/
static/
node_modules/

35
.stylelintrc.json Normal file
View File

@ -0,0 +1,35 @@
{
"plugins": ["stylelint-use-logical-spec", "@double-great/stylelint-a11y"],
"extends": ["stylelint-config-standard", "stylelint-config-sass-guidelines"],
"overrides": [
{
"files": ["**/*.scss"],
"customSyntax": "postcss-scss",
"rules": {
"max-nesting-depth": null,
"selector-max-compound-selectors": null
}
},
{
"files": ["**/*.css"],
"rules": {
}
}
],
"rules": {
"selector-no-qualifying-type": [
true, {
"ignore": ["attribute"]
}],
"selector-class-pattern": null,
"selector-id-pattern": null,
"selector-pseudo-class-no-unknown": [
true,
{
"ignorePseudoClasses": ["deep"]
}
],
"a11y/no-outline-none": true,
"liberty/use-logical-spec": ["always", { "except": ["float"] }]
}
}

11
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,11 @@
{
"recommendations": [
"editorconfig.editorconfig",
"dbaeumer.vscode-eslint",
"stylelint.vscode-stylelint",
"syler.sass-indented",
"redhat.vscode-yaml",
"vue.volar",
"eamodio.gitlens"
]
}

23
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,23 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "dev-runner (Electron)",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/_scripts/dev-runner.js",
"args": ["--remote-debug"]
},
{
"name": "Attach to renderer process (Electron)",
"type": "chrome",
"request": "attach",
"port": 9223,
"webRoot": "http://localhost:9080",
"sourceMapPathOverrides": {
"webpack://freetube/./~/*": "${workspaceFolder}/node_modules/*",
"webpack://freetube/./*": "${workspaceFolder}/*"
}
}
]
}

34
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,34 @@
{
"stylelint.packageManager": "yarn",
"stylelint.snippet": [
"css",
"less",
"postcss",
"sass",
"scss"
],
"stylelint.validate": [
"css",
"less",
"postcss",
"scss"
],
"eslint.packageManager": "yarn",
"eslint.probe": [
"javascript",
"vue",
"json",
"jsonc",
"yml",
"yaml"
],
"eslint.validate": [
"javascript",
"vue",
"json",
"jsonc",
"yml",
"yaml"
],
"javascript.preferences.importModuleSpecifier": "relative"
}

8
.whitesource Normal file
View File

@ -0,0 +1,8 @@
##########################################################
#### WhiteSource "Bolt for Github" configuration file ####
##########################################################
# Configuration #
#---------------#
ws.repo.scan=true
vulnerable.check.run.conclusion.level=failure

View File

@ -1,57 +1,27 @@
# API Keys
When you are testing and working on FreeTube, PLEASE use your own API Key. The keys included in the project are in use by the userbase and testing can cause these keys to max out. Please do not risk degrading the experience for other users and use your own key if at all possible. Thank you for your cooperation.
# Code Contributions
Please follow these guidlines before sending your pull request and making contributions.
## Before starting to code
Please follow these guidelines before starting to code you feature or bugfix.
* If you want to implement a bugfix or feature request from an existing issue, please comment on that issue that you will work on it. This helps us to coordinate what needs to be done and what not.
* If you want to implement a feature request without an existing issue, please create an issue, so we know what you are working on and discuss the feature.
* For major feature implementations make sure you are able to maintain your code in the future in regard to bugs and possible code conflicts in future updates. Optionally you could join the [Matrix](https://matrix.to/#/+freetube:matrix.org) channel, so you will hear instantly if something needs to be worked on.
* When you submit a pull request, you agree that your code is published under the [GNU General Public License](https://www.gnu.org/licenses/gpl.html)
## Before your Pull Request
Please follow these guidelines before sending your pull request and making contributions.
* When you submit a pull request, you agree that your code is published under the [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html)
* Please link the issue you are referring to.
* Do not include non-free software or modules with your code.
* Make sure your pull request is setup to merge your branch to FreeTube's development branch.
* Make sure your pull request is set up to merge your branch to FreeTube's development branch.
* Make sure your branch is up to date with the development branch before submitting your pull request.
* Stick to a similar style of code already in the project. Please look at current code to get an idea on how to do this.
* Follow [ES6](http://es6-features.org/) standards in your code. Ex: Use `let` and `const` instead of `var`. Do not use `function(response){//code}` for callbacks, use `(response) => {//code}`.
* Comment your code when necessary. Follow the [JavaScript Documentation and Comments Standard](https://www.drupal.org/docs/develop/standards/javascript/javascript-api-documentation-and-comment-standards) for functions.
* Please test your code. Make sure new features work as well as core features such as watching videos or loading subscriptions.
* Please limit the amount of Node Modules that you introduce into the project. Only include them when absolutely necessary for your code to work (Ex: Using nedb for databases) or if a module provides similar functionality to what you are trying to achieve (Ex: Using autolinker to create links to outside URLs instead of writing the functionality myself).
* If using a new Node Module, please include the `require` statement in `layout.js` to keep them together.
* Please try to stay involved with the community and maintain your code. I am only one person and I work on FreeTube only in my spare time. I do not have time to work on everything and it would be nice if you can maintain your code when necessary.
* Please follow proper Vue structure when creating new code / components. Use existing code as well as the [Vue.js Guide](https://vuejs.org/v2/guide/) for reference.
* Please test your code. Make sure new features work as well as existing core features such as watching videos or loading subscriptions. New features need to work with both the Local API as well as the Invidious API
* Please make sure your code does not violate any standards set by our linter. It's up to you to make fixes whenever necessary. You can run `npm run lint` to check locally and `npm run lint-fix` to automatically fix smaller issues.
* Please limit the amount of Node Modules that you introduce into the project. Only include them when **absolutely necessary** for your code to work (Ex: Using nedb for databases) or if a module provides similar functionality to what you are trying to achieve (Ex: Using autolinker to create links to outside URLs instead of writing the functionality myself).
* Please try to stay involved with the community and maintain your code. We are only a handful of developers working on FreeTube in our spare time. We do not have time to work on everything, and it would be nice if you can maintain your code when necessary.
# Setting up Your Environment
Here's how to get your environment setup. You will need Git and NPM installed on your system.
Clone down the repositoy:
```
git clone https://github.com/FreeTubeApp/FreeTube.git
```
Install Dependencies:
```
npm install
```
Run the application:
```
npm start
```
Make / Package application:
Windows (Requires Wine on Linux):
```
npm run make:win32
```
Mac:
```
npm run make:darwin
```
Linux (Requires deb and rpm to be installed):
```
npm run make:linux
```
I will update this document when necessary. Anyone who has questions or suggestions on this document are welcome to create an issue or pull request.
Check out the [wiki](https://docs.freetubeapp.io/development/getting-started/) page to learn how to set up your environment and get started.

149
LICENSE
View File

@ -1,23 +1,21 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
software for all its users.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
@ -26,44 +24,34 @@ them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate. Many developers of free software are heartened and
encouraged by the resulting cooperation. However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community. It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server. Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals. This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.
The precise terms and conditions for copying, distribution and
modification follow.
@ -72,7 +60,7 @@ modification follow.
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"This License" refers to version 3 of the GNU Affero General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
@ -549,35 +537,45 @@ to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software. This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
the GNU Affero General Public License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
@ -635,40 +633,29 @@ the "copyright" line and a pointer to where the full notice is found.
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
GNU Affero General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source. For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code. There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
For more information on this, and how to apply and follow the GNU AGPL, see
<https://www.gnu.org/licenses/>.

View File

@ -1,13 +0,0 @@
- [ ] I have read and agree to the [Contribution Guidelines](https://github.com/FreeTubeApp/FreeTube/blob/master/CONTRIBUTING.md)
- [ ] I can maintain / support my code if issues arise.
**Does your change relate to a current issue? Please list it here if applicable.**
**Please list out the changes you've made**
**Does your change include any new Node Modules? If yes, what modules and what are they licensed under?**
**Other Comments**

179
README.md
View File

@ -1,52 +1,173 @@
# FreeTube
<p align="center">
<img alt="" src="/_icons/logoColor.svg" width=500 align="center">
</p>
FreeTube is an open source desktop YouTube player built with privacy in mind.
Use YouTube without advertisments and Google tracking you using cookies and JavaScript.
Available for Windows, Mac & Linux thanks to Electron.
Use YouTube without advertisements and prevent Google from tracking you with their cookies and JavaScript.
Available for Windows (10 and later), Mac (macOS 10.15 and later) & Linux thanks to Electron.
Please note that FreeTube is currently in Beta. While it should work well for
most users, there are still bugs and missing features that need to be
addressed.
<p align="center"><a href="https://github.com/FreeTubeApp/FreeTube/releases">Download FreeTube</a></p>
<p align="center">
<a href="https://github.com/FreeTubeApp/FreeTube/actions/workflows/build.yml">
<img alt='Build status' src="https://github.com/FreeTubeApp/FreeTube/actions/workflows/build.yml/badge.svg?branch=development" />
</a>
<a href="https://hosted.weblate.org/engage/free-tube/">
<img src="https://hosted.weblate.org/widgets/free-tube/-/svg-badge.svg" alt="Translation status" />
</a>
</p>
[Download](https://github.com/FreeTubeApp/FreeTube/releases)
<hr>
<p align="center"><a href="#screenshots">Screenshots</a> &bull; <a href="#how-does-it-work">How does it work?</a> &bull; <a href="#features">Features</a> &bull; <a href="#download-links">Download Links</a> &bull; <a href="#contributing">Contributing</a> &bull; <a href="#localization">Localization</a> &bull; <a href="#contact">Contact</a> &bull; <a href="#donate">Donate</a> &bull; <a href="#license">License</a></p>
<p align="center"><a href="https://freetubeapp.io/">Website</a> &bull; <a href="https://blog.freetubeapp.io/">Blog</a> &bull; <a href="https://docs.freetubeapp.io/">Documentation</a> &bull; <a href="https://docs.freetubeapp.io/faq/">FAQ</a> &bull; <a href="https://github.com/FreeTubeApp/FreeTube/discussions">Discussions</a></p>
<hr>
## How does it work?
FreeTube uses the proprietary [YouTube HTTP
API](https://developers.google.com/youtube/v3/getting-started) with a set of
hard coded API keys. Videos are resolved using
[youtube-dl](https://rg3.github.io/youtube-dl/)
and played using the stock HTML5 video
player. While YouTube can still see your API and video requests it can no
longer track you using cookies or JavaScript. Your subscriptions, history, and
saved videos are stored locally on your computer and never sent out.
> [!NOTE]
> FreeTube is currently in Beta. While it should work well for most users, there are still bugs and missing features that need to be addressed.
>
> If you have an idea or if you found a bug, please submit a [GitHub issue](https://github.com/FreeTubeApp/FreeTube/issues/new/choose) so that we can track it. Please search [the existing issues](https://github.com/FreeTubeApp/FreeTube/issues) before submitting to prevent duplicates!
## Screenshots
<img src="https://freetubeapp.github.io/images/FreeTube1.png" width=200> <img src="https://freetubeapp.github.io/images/FreeTube2.png" width=200> <img src="https://freetubeapp.github.io/images/FreeTube3.png" width=200> <img src="https://freetubeapp.github.io/images/FreeTube5.png" width=200>
<img src="https://i.imgur.com/zFgZUUV.png" width=300> <img src="https://i.imgur.com/9evYHgN.png" width=300> <img src="https://i.imgur.com/yT2UzPa.png" width=300> <img src="https://i.imgur.com/47zIEt4.png" width=300> <img src="https://i.imgur.com/hFB2fKC.png" width=300>
## How does it work?
FreeTube uses a built in extractor to grab and serve data / videos. The [Invidious API](https://github.com/iv-org/invidious) can also optionally be used. FreeTube does not use any official APIs to obtain data. While YouTube can still see your video requests, it can no
longer track you using cookies or JavaScript. Your subscriptions and history are stored locally on your computer and never sent out.
> [!IMPORTANT]
> Using a VPN or Tor is highly recommended to hide your IP while using FreeTube.
## Features
* Watch videos without ads
* Use YouTube without Google tracking you using cookies and JavaScript
* Two extractor APIs to choose from (Built in or Invidious)
* Subscribe to channels without an account
* Local subscriptions, history, and saved videos
* Connect to an externally setup proxy such as Tor
* View and search your local subscriptions, history, and saved videos
* Organize your subscriptions into "Profiles" to create a more focused feed
* Export & import subscriptions
* Mini Player
* Light / dark theme
* Youtube Trending
* Youtube Chapters
* Most popular videos page based on the set Invidious instance
* SponsorBlock
* Open videos from your browser directly into FreeTube (with extension)
* Watch videos using an external player
* Full Theme support
* Make a screenshot of a video
* Multiple windows
* Mini Player (Picture-in-Picture)
* Keyboard shortcuts
* Option to show only family friendly content
* Show/hide functionality or elements within the app using the distraction free settings
* View channel community posts
* View most age restricted videos
### Browser Extension
FreeTube is supported by the [Privacy Redirect](https://github.com/SimonBrazell/privacy-redirect) and [LibRedirect](https://github.com/libredirect/libredirect) extensions, which will allow you to open YouTube links into FreeTube.
> [!IMPORTANT]
> You must enable the option within the advanced settings of the extension for it to work.
* Download Privacy Redirect for [Firefox](https://addons.mozilla.org/en-US/firefox/addon/privacy-redirect/) or [Google Chrome](https://chrome.google.com/webstore/detail/privacy-redirect/pmcmeagblkinmogikoikkdjiligflglb).
* Download LibRedirect for [Firefox](https://addons.mozilla.org/firefox/addon/libredirect/) or [Google Chrome](https://libredirect.github.io/download_chromium.html).
> [!NOTE]
> This extension does not work on Linux portable builds!
>
> If you have issues with the extension working with FreeTube, please create an issue in this repository instead of the extension repository.
## Download Links
### Official Downloads
> [!CAUTION]
> FreeTube is only supported on Windows 10 and later, macOS 10.15 and above, and various Linux distributions. Installing it on unsupported systems may result in unexpected issues.
* [GitHub Releases](https://github.com/FreeTubeApp/FreeTube/releases)
* [FreeTube Website](https://freetubeapp.io/#download)
* Flatpak on Flathub: [Download](https://flathub.org/apps/details/io.freetubeapp.FreeTube) and [Source Code](https://github.com/flathub/io.freetubeapp.FreeTube)
#### Automated Builds (Nightly / Weekly)
> [!WARNING]
> Use these builds at your own risk. These are pre-release versions and are only intended for people that want to test changes early and are willing to accept that things could break from one build to another.
Builds are automatically created from changes to our development branch via [GitHub Actions](https://github.com/FreeTubeApp/FreeTube/actions?query=workflow%3ABuild).
The first build with a green check mark is the latest build.
> [!IMPORTANT]
> You will need to have a GitHub account to download these builds.
### Unofficial Downloads
> [!WARNING]
> These builds are maintained by the community. While they should be safe, download at your own risk. There may be issues with using these versus the official builds. Any issues specific with these builds should be sent to their respective maintainer. Make sure u always try an [official download](https://github.com/freetubeapp/freetube/#official-downloads) before reporting your issue to us!
* Arch User Repository (AUR): [Download](https://aur.archlinux.org/packages/freetube-bin/)
* Chocolatey: [Download](https://chocolatey.org/packages/freetube/)
* FreeTubeAndroid (FreeTube port for Android and PWA): [Download](https://github.com/MarmadileManteater/FreeTubeAndroid/releases) and [Source Code](https://github.com/MarmadileManteater/FreeTubeAndroid)
* Homebrew Formulae (Mac only): [Download](https://formulae.brew.sh/cask/freetube)
* makedeb Package Repository (MPR): [Download](https://mpr.makedeb.org/packages/freetube-bin)
* Nix Packages: [Download](https://search.nixos.org/packages?query=freetube)
* PortableApps (Windows Only): [Download](https://github.com/rddim/FreeTubePortable/releases) and [Source Code](https://github.com/rddim/FreeTubePortable)
* Scoop (Windows Only): [Usage](https://github.com/ScoopInstaller/Scoop)
* Snap: [Download](https://snapcraft.io/freetube) and [Source Code](https://git.launchpad.net/freetube)
* WAPT: [Download](https://wapt.tranquil.it/store/tis-freetube)
* Windows Package Manager (winget): [Usage](https://docs.microsoft.com/en-us/windows/package-manager/winget/)
## Contributing
If you have an idea or if you found a bug, please submit a GitHub issue so that
we can track it. Please search the existing issues before submitting to
prevent duplicates.
Thank you very much to the [People and Projects](https://docs.freetubeapp.io/credits/) that make FreeTube possible!
If you like to get your hands dirty and want to contribute, we would love to
have your help. Send a pull request and someone will review your code. Please
follow the [Contribution
Guidelines](https://github.com/FreeTubeApp/FreeTube/blob/master/CONTRIBUTING.md)
before sending your pull request.
have your help. Send a pull request and someone will review your code.
> [!IMPORTANT]
> Please follow the [Contribution Guidelines](https://github.com/FreeTubeApp/FreeTube/blob/development/CONTRIBUTING.md) before sending your pull request.
## Localization
<a href="https://hosted.weblate.org/engage/free-tube/">
<img src="https://hosted.weblate.org/widgets/free-tube/-/287x66-grey.png" alt="Translation status" />
</a>
We are actively looking for translations! We use [Weblate](https://hosted.weblate.org/engage/free-tube/) to make it easy for translators to get involved. Click on the badge above to learn how to get involved.
For the Linux Flatpak, the desktop entry comment string can be translated at our [Flatpak repository](https://github.com/flathub/io.freetubeapp.FreeTube/blob/master/io.freetubeapp.FreeTube.desktop).
## Contact
If you ever have any questions, feel free to ask it on our [Discussions](https://github.com/FreeTubeApp/FreeTube/discussions) page. Alternatively, you can email us at FreeTubeApp@protonmail.com or you can join our [Matrix Community](https://matrix.to/#/+freetube:matrix.org).
> [!IMPORTANT]
> Don't forget to check out the [rules](https://docs.freetubeapp.io/community/matrix/) before joining.
## Donate
If you enjoy using FreeTube, you're welcome to leave a donation using the following methods.
* [FreeTube on Liberapay](https://liberapay.com/FreeTube)
* Bitcoin Address: `1Lih7Ho5gnxb1CwPD4o59ss78pwo2T91eS`
* Monero Address: `48WyAPdjwc6VokeXACxSZCFeKEXBiYPV6GjfvBsfg4CrUJ95LLCQSfpM9pvNKy5GE5H4hNaw99P8RZyzmaU9kb1pD7kzhCB`
While your donations are much appreciated, only donate if you really want to. Donations are used for keeping the website up and running and eventual code signing costs.
> [!TIP]
> If you are using the Invidious API then we recommend that you donate to the instance that you use. You can also donate to the [Invidious team](https://invidious.io/donate/) or the [Local API developer](https://github.com/sponsors/LuanRT).
## License
[![GNU GPLv3 Image](https://www.gnu.org/graphics/gplv3-127x51.png)](http://www.gnu.org/licenses/gpl-3.0.en.html)
[![GNU AGPLv3 Image](https://www.gnu.org/graphics/agplv3-155x51.png)](https://www.gnu.org/licenses/agpl-3.0.html)
FreeTube is Free Software: You can use, study share and improve it at your
will. Specifically you can redistribute and/or modify it under the terms of the
[GNU General Public License](https://www.gnu.org/licenses/gpl.html) as
[GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html) as
published by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 489 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 668 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 828 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
_icons/256x256.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

BIN
_icons/icon.icns Normal file

Binary file not shown.

BIN
_icons/icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 480 KiB

9
_icons/icon.svg Normal file
View File

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" version="1">
<path style="opacity:0.2" d="M 8.2,5 C 5.8732,5 4,6.8732001 4,9.2000001 V 21.8 44.2 56.8 C 4,59.1268 5.8732,61 8.2,61 H 20.8 33.960547 43.2 C 52.5072,61 60,53.5072 60,44.2 V 36.921093 21.8 9.2000001 C 60,6.8732001 58.1268,5 55.8,5 H 43.2 20.8 Z"/>
<path style="fill:#e4e4e4" d="M 8.2,4 C 5.8732,4 4,5.8732001 4,8.2000001 V 20.8 43.2 55.8 C 4,58.1268 5.8732,60 8.2,60 H 20.8 33.960547 43.2 C 52.5072,60 60,52.5072 60,43.2 V 35.921093 20.8 8.2000001 C 60,5.8732001 58.1268,4 55.8,4 H 43.2 20.8 Z"/>
<path style="opacity:0.1" d="M 14.75,13 C 13.2265,13 12,14.274565 12,15.857422 v 30 C 12,50.143136 17.5,53 20.25,53 H 23 v -2.857422 -4.285156 -30 C 23,14.274565 21.7735,13 20.25,13 Z m 14.091797,0 C 27.267271,13 26,14.2265 26,15.75 v 5.5 C 26,22.7735 27.267271,24 28.841797,24 H 45.894531 C 50.157689,24 53,18.5 53,15.75 V 13 H 50.158203 45.894531 Z M 27.320312,27 A 1.2913161,1.1414724 0 0 0 26,28.142578 v 7.359375 7.359375 a 1.2913161,1.1414724 0 0 0 1.935547,0.986328 l 7.210937,-3.679687 7.208985,-3.679688 a 1.2913161,1.1414724 0 0 0 0,-1.976562 L 35.146484,30.833984 27.935547,27.154297 A 1.2913161,1.1414724 0 0 0 27.320312,27 Z"/>
<path style="fill:#f04242" d="M 14.75,12 C 13.2265,12 12,13.274286 12,14.857143 v 30 C 12,49.142857 17.5,52 20.25,52 H 23 v -2.857143 -4.285714 -30 C 23,13.274286 21.7735,12 20.25,12 Z"/>
<path style="fill:#f04242" d="M 26,20.25 C 26,21.7735 27.267579,23 28.842105,23 H 45.894737 C 50.157895,23 53,17.5 53,14.75 V 12 H 50.157895 45.894737 28.842105 C 27.267579,12 26,13.2265 26,14.75 Z"/>
<path style="fill:#14a4df" d="m 27.321275,26.000307 a 1.2913161,1.1414724 0 0 0 -1.321274,1.142629 v 7.358815 7.358816 a 1.2913161,1.1414724 0 0 0 1.936147,0.986925 l 7.209509,-3.679407 7.209511,-3.679409 a 1.2913161,1.1414724 0 0 0 0,-1.976244 l -7.209511,-3.679408 -7.209509,-3.679407 a 1.2913161,1.1414724 0 0 0 -0.614873,-0.15331 z"/>
<path style="fill:#ffffff;opacity:0.2" d="M 8.1992188 4 C 5.8724189 4 4 5.8724189 4 8.1992188 L 4 9.1992188 C 4 6.8724189 5.8724189 5 8.1992188 5 L 55.800781 5 C 58.127581 5 60 6.8724189 60 9.1992188 L 60 8.1992188 C 60 5.8724189 58.127581 4 55.800781 4 L 8.1992188 4 z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

3
_icons/iconBlack.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="250" height="250" viewBox="0 0 250 250" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M49.027,0c9.374,-0 16.973,7.599 16.973,16.973l0,233.027l-23.299,0c-11.325,0 -22.186,-4.499 -30.194,-12.507c-8.008,-8.008 -12.507,-18.869 -12.507,-30.194l-0,-190.326c0,-9.374 7.599,-16.973 16.973,-16.973l32.054,-0Zm130.331,122.23c2.193,1.087 3.58,3.323 3.58,5.77c0,2.447 -1.387,4.683 -3.58,5.77l-92.732,45.959c-2.066,1.024 -4.515,0.907 -6.474,-0.308c-1.96,-1.216 -3.152,-3.359 -3.152,-5.665l-0,-91.512c0,-2.306 1.192,-4.449 3.152,-5.665c1.959,-1.215 4.408,-1.332 6.474,-0.308l92.732,45.959Zm70.642,-122.23l0,20.217c-0,12.142 -4.824,23.787 -13.41,32.373c-8.586,8.586 -20.231,13.41 -32.373,13.41l-110.412,-0c-9.281,-0 -16.805,-7.524 -16.805,-16.805l0,-32.39c0,-9.281 7.524,-16.805 16.805,-16.805l156.195,-0Z"/>
</svg>

After

Width:  |  Height:  |  Size: 981 B

View File

@ -0,0 +1,3 @@
<svg width="25" height="25" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M4.903,0c0.937,-0 1.697,0.76 1.697,1.697l0,23.303l-2.33,0c-1.132,0 -2.219,-0.45 -3.019,-1.251c-0.801,-0.8 -1.251,-1.887 -1.251,-3.019l-0,-19.033c0,-0.937 0.76,-1.697 1.697,-1.697l3.206,0Zm13.033,12.223c0.219,0.109 0.358,0.332 0.358,0.577c-0,0.245 -0.139,0.468 -0.358,0.577l-9.273,4.596c-0.207,0.102 -0.452,0.091 -0.648,-0.031c-0.196,-0.122 -0.315,-0.336 -0.315,-0.566l-0,-9.152c0,-0.23 0.119,-0.444 0.315,-0.566c0.196,-0.122 0.441,-0.133 0.648,-0.031l9.273,4.596Zm7.064,-12.223l0,2.022c-0,1.214 -0.482,2.378 -1.341,3.237c-0.859,0.859 -2.023,1.341 -3.237,1.341l-11.042,0c-0.928,-0 -1.68,-0.752 -1.68,-1.68l0,-3.24c0,-0.928 0.752,-1.68 1.68,-1.68l15.62,0Z"/>
</svg>

After

Width:  |  Height:  |  Size: 926 B

View File

@ -0,0 +1,4 @@
<svg width="25" height="25" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M4.903,0c0.937,-0 1.697,0.76 1.697,1.697l0,23.303l-2.33,0c-1.132,0 -2.219,-0.45 -3.019,-1.251c-0.801,-0.8 -1.251,-1.887 -1.251,-3.019l-0,-19.033c0,-0.937 0.76,-1.697 1.697,-1.697l3.206,0Zm20.097,0l0,2.022c-0,1.214 -0.482,2.378 -1.341,3.237c-0.859,0.859 -2.023,1.341 -3.237,1.341l-11.042,0c-0.928,-0 -1.68,-0.752 -1.68,-1.68l0,-3.24c0,-0.928 0.752,-1.68 1.68,-1.68l15.62,0Z" style="fill:#1e1e2e;"/>
<path d="M17.936,12.223c0.219,0.109 0.358,0.332 0.358,0.577c-0,0.245 -0.139,0.468 -0.358,0.577l-9.273,4.596c-0.207,0.102 -0.452,0.091 -0.648,-0.031c-0.196,-0.122 -0.315,-0.336 -0.315,-0.566l-0,-9.152c0,-0.23 0.119,-0.444 0.315,-0.566c0.196,-0.122 0.441,-0.133 0.648,-0.031l9.273,4.596Z" style="fill:#1e1e2e;"/>
</svg>

After

Width:  |  Height:  |  Size: 982 B

View File

@ -0,0 +1,4 @@
<svg width="25" height="25" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M4.903,0c0.937,-0 1.697,0.76 1.697,1.697l0,23.303l-2.33,0c-1.132,0 -2.219,-0.45 -3.019,-1.251c-0.801,-0.8 -1.251,-1.887 -1.251,-3.019l-0,-19.033c0,-0.937 0.76,-1.697 1.697,-1.697l3.206,0Zm20.097,0l0,2.022c-0,1.214 -0.482,2.378 -1.341,3.237c-0.859,0.859 -2.023,1.341 -3.237,1.341l-11.042,0c-0.928,-0 -1.68,-0.752 -1.68,-1.68l0,-3.24c0,-0.928 0.752,-1.68 1.68,-1.68l15.62,0Z" style="fill:#cdd6f4;"/>
<path d="M17.936,12.223c0.219,0.109 0.358,0.332 0.358,0.577c-0,0.245 -0.139,0.468 -0.358,0.577l-9.273,4.596c-0.207,0.102 -0.452,0.091 -0.648,-0.031c-0.196,-0.122 -0.315,-0.336 -0.315,-0.566l-0,-9.152c0,-0.23 0.119,-0.444 0.315,-0.566c0.196,-0.122 0.441,-0.133 0.648,-0.031l9.273,4.596Z" style="fill:#cdd6f4;"/>
</svg>

After

Width:  |  Height:  |  Size: 982 B

BIN
_icons/iconColor.icns Normal file

Binary file not shown.

BIN
_icons/iconColor.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

BIN
_icons/iconColor.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

4
_icons/iconColor.svg Normal file
View File

@ -0,0 +1,4 @@
<svg width="250" height="250" viewBox="0 0 250 250" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M49.027,0c9.374,-0 16.973,7.599 16.973,16.973l0,233.027l-23.299,0c-11.325,0 -22.186,-4.499 -30.194,-12.507c-8.008,-8.008 -12.507,-18.869 -12.507,-30.194l-0,-190.326c0,-9.374 7.599,-16.973 16.973,-16.973l32.054,-0Zm200.973,-0l0,20.217c-0,12.142 -4.824,23.787 -13.41,32.373c-8.586,8.586 -20.231,13.41 -32.373,13.41l-110.412,-0c-9.281,-0 -16.805,-7.524 -16.805,-16.805l0,-32.39c0,-9.281 7.524,-16.805 16.805,-16.805l156.195,-0Z" style="fill:#f33;"/>
<path d="M179.358,122.23c2.193,1.087 3.58,3.323 3.58,5.77c0,2.447 -1.387,4.683 -3.58,5.77l-92.732,45.959c-2.066,1.024 -4.515,0.907 -6.474,-0.308c-1.96,-1.216 -3.152,-3.359 -3.152,-5.665l-0,-91.512c0,-2.306 1.192,-4.449 3.152,-5.665c1.959,-1.215 4.408,-1.332 6.474,-0.308l92.732,45.959Z" style="fill:#29abe1;"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,4 @@
<svg width="25" height="25" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M4.903,0c0.937,-0 1.697,0.76 1.697,1.697l0,23.303l-2.33,0c-1.132,0 -2.219,-0.45 -3.019,-1.251c-0.801,-0.8 -1.251,-1.887 -1.251,-3.019l-0,-19.033c0,-0.937 0.76,-1.697 1.697,-1.697l3.206,0Zm20.097,0l0,2.022c-0,1.214 -0.482,2.378 -1.341,3.237c-0.859,0.859 -2.023,1.341 -3.237,1.341l-11.042,0c-0.928,-0 -1.68,-0.752 -1.68,-1.68l0,-3.24c0,-0.928 0.752,-1.68 1.68,-1.68l15.62,0Z" style="fill:#f33;"/>
<path d="M17.936,12.223c0.219,0.109 0.358,0.332 0.358,0.577c-0,0.245 -0.139,0.468 -0.358,0.577l-9.273,4.596c-0.207,0.102 -0.452,0.091 -0.648,-0.031c-0.196,-0.122 -0.315,-0.336 -0.315,-0.566l-0,-9.152c0,-0.23 0.119,-0.444 0.315,-0.566c0.196,-0.122 0.441,-0.133 0.648,-0.031l9.273,4.596Z" style="fill:#29abe1;"/>
</svg>

After

Width:  |  Height:  |  Size: 979 B

View File

@ -0,0 +1,4 @@
<svg width="25" height="25" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M4.903,0c0.937,-0 1.697,0.76 1.697,1.697l0,23.303l-2.33,0c-1.132,0 -2.219,-0.45 -3.019,-1.251c-0.801,-0.8 -1.251,-1.887 -1.251,-3.019l-0,-19.033c0,-0.937 0.76,-1.697 1.697,-1.697l3.206,0Zm20.097,0l0,2.022c-0,1.214 -0.482,2.378 -1.341,3.237c-0.859,0.859 -2.023,1.341 -3.237,1.341l-11.042,0c-0.928,-0 -1.68,-0.752 -1.68,-1.68l0,-3.24c0,-0.928 0.752,-1.68 1.68,-1.68l15.62,0Z" style="fill:#282a36;"/>
<path d="M17.936,12.223c0.219,0.109 0.358,0.332 0.358,0.577c-0,0.245 -0.139,0.468 -0.358,0.577l-9.273,4.596c-0.207,0.102 -0.452,0.091 -0.648,-0.031c-0.196,-0.122 -0.315,-0.336 -0.315,-0.566l-0,-9.152c0,-0.23 0.119,-0.444 0.315,-0.566c0.196,-0.122 0.441,-0.133 0.648,-0.031l9.273,4.596Z" style="fill:#282a36;"/>
</svg>

After

Width:  |  Height:  |  Size: 982 B

View File

@ -0,0 +1,4 @@
<svg width="25" height="25" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M4.903,0c0.937,-0 1.697,0.76 1.697,1.697l0,23.303l-2.33,0c-1.132,0 -2.219,-0.45 -3.019,-1.251c-0.801,-0.8 -1.251,-1.887 -1.251,-3.019l-0,-19.033c0,-0.937 0.76,-1.697 1.697,-1.697l3.206,0Zm20.097,0l0,2.022c-0,1.214 -0.482,2.378 -1.341,3.237c-0.859,0.859 -2.023,1.341 -3.237,1.341l-11.042,0c-0.928,-0 -1.68,-0.752 -1.68,-1.68l0,-3.24c0,-0.928 0.752,-1.68 1.68,-1.68l15.62,0Z" style="fill:#f8f8f8;"/>
<path d="M17.936,12.223c0.219,0.109 0.358,0.332 0.358,0.577c-0,0.245 -0.139,0.468 -0.358,0.577l-9.273,4.596c-0.207,0.102 -0.452,0.091 -0.648,-0.031c-0.196,-0.122 -0.315,-0.336 -0.315,-0.566l-0,-9.152c0,-0.23 0.119,-0.444 0.315,-0.566c0.196,-0.122 0.441,-0.133 0.648,-0.031l9.273,4.596Z" style="fill:#f8f8f8;"/>
</svg>

After

Width:  |  Height:  |  Size: 982 B

BIN
_icons/iconMac.icns Normal file

Binary file not shown.

View File

@ -0,0 +1,4 @@
<svg width="25" height="25" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M4.903,0c0.937,-0 1.697,0.76 1.697,1.697l0,23.303l-2.33,0c-1.132,0 -2.219,-0.45 -3.019,-1.251c-0.801,-0.8 -1.251,-1.887 -1.251,-3.019l-0,-19.033c0,-0.937 0.76,-1.697 1.697,-1.697l3.206,0Zm20.097,0l0,2.022c-0,1.214 -0.482,2.378 -1.341,3.237c-0.859,0.859 -2.023,1.341 -3.237,1.341l-11.042,0c-0.928,-0 -1.68,-0.752 -1.68,-1.68l0,-3.24c0,-0.928 0.752,-1.68 1.68,-1.68l15.62,0Z" style="fill:#eee;"/>
<path d="M17.936,12.223c0.219,0.109 0.358,0.332 0.358,0.577c-0,0.245 -0.139,0.468 -0.358,0.577l-9.273,4.596c-0.207,0.102 -0.452,0.091 -0.648,-0.031c-0.196,-0.122 -0.315,-0.336 -0.315,-0.566l-0,-9.152c0,-0.23 0.119,-0.444 0.315,-0.566c0.196,-0.122 0.441,-0.133 0.648,-0.031l9.273,4.596Z" style="fill:#eee;"/>
</svg>

After

Width:  |  Height:  |  Size: 976 B

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="25"
height="25"
viewBox="0 0 25 25"
version="1.1"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"
id="svg2"
sodipodi:docname="iconSolarizedDarkSmall.svg"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs2" /><sodipodi:namedview
id="namedview2"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="16.602867"
inkscape:cx="8.2214715"
inkscape:cy="21.44208"
inkscape:window-width="2536"
inkscape:window-height="1356"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<path
d="M4.903,0c0.937,-0 1.697,0.76 1.697,1.697l0,23.303l-2.33,0c-1.132,0 -2.219,-0.45 -3.019,-1.251c-0.801,-0.8 -1.251,-1.887 -1.251,-3.019l-0,-19.033c0,-0.937 0.76,-1.697 1.697,-1.697l3.206,0Zm20.097,0l0,2.022c-0,1.214 -0.482,2.378 -1.341,3.237c-0.859,0.859 -2.023,1.341 -3.237,1.341l-11.042,0c-0.928,-0 -1.68,-0.752 -1.68,-1.68l0,-3.24c0,-0.928 0.752,-1.68 1.68,-1.68l15.62,0Z"
style="fill:#002b36;fill-opacity:1"
id="path1" />
<path
d="M17.936,12.223c0.219,0.109 0.358,0.332 0.358,0.577c-0,0.245 -0.139,0.468 -0.358,0.577l-9.273,4.596c-0.207,0.102 -0.452,0.091 -0.648,-0.031c-0.196,-0.122 -0.315,-0.336 -0.315,-0.566l-0,-9.152c0,-0.23 0.119,-0.444 0.315,-0.566c0.196,-0.122 0.441,-0.133 0.648,-0.031l9.273,4.596Z"
style="fill:#002b36;fill-opacity:1"
id="path2" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="25"
height="25"
viewBox="0 0 25 25"
version="1.1"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"
id="svg2"
sodipodi:docname="iconSolarizedLightSmall.svg"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs2" /><sodipodi:namedview
id="namedview2"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="24.68"
inkscape:cx="9.2179903"
inkscape:cy="8.4683955"
inkscape:window-width="2536"
inkscape:window-height="1356"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<path
d="M4.903,0c0.937,-0 1.697,0.76 1.697,1.697l0,23.303l-2.33,0c-1.132,0 -2.219,-0.45 -3.019,-1.251c-0.801,-0.8 -1.251,-1.887 -1.251,-3.019l-0,-19.033c0,-0.937 0.76,-1.697 1.697,-1.697l3.206,0Zm20.097,0l0,2.022c-0,1.214 -0.482,2.378 -1.341,3.237c-0.859,0.859 -2.023,1.341 -3.237,1.341l-11.042,0c-0.928,-0 -1.68,-0.752 -1.68,-1.68l0,-3.24c0,-0.928 0.752,-1.68 1.68,-1.68l15.62,0Z"
style="fill:#fdf6e3;fill-opacity:1"
id="path1" />
<path
d="M17.936,12.223c0.219,0.109 0.358,0.332 0.358,0.577c-0,0.245 -0.139,0.468 -0.358,0.577l-9.273,4.596c-0.207,0.102 -0.452,0.091 -0.648,-0.031c-0.196,-0.122 -0.315,-0.336 -0.315,-0.566l-0,-9.152c0,-0.23 0.119,-0.444 0.315,-0.566c0.196,-0.122 0.441,-0.133 0.648,-0.031l9.273,4.596Z"
style="fill:#fdf6e3;fill-opacity:1"
id="path2" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

3
_icons/iconWhite.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="250" height="250" viewBox="0 0 250 250" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M49.027,0c9.374,-0 16.973,7.599 16.973,16.973l0,233.027l-23.299,0c-11.325,0 -22.186,-4.499 -30.194,-12.507c-8.008,-8.008 -12.507,-18.869 -12.507,-30.194l-0,-190.326c0,-9.374 7.599,-16.973 16.973,-16.973l32.054,-0Zm130.331,122.23c2.193,1.087 3.58,3.323 3.58,5.77c0,2.447 -1.387,4.683 -3.58,5.77l-92.732,45.959c-2.066,1.024 -4.515,0.907 -6.474,-0.308c-1.96,-1.216 -3.152,-3.359 -3.152,-5.665l-0,-91.512c0,-2.306 1.192,-4.449 3.152,-5.665c1.959,-1.215 4.408,-1.332 6.474,-0.308l92.732,45.959Zm70.642,-122.23l-0,20.217c-0,12.142 -4.824,23.787 -13.41,32.373c-8.586,8.586 -20.231,13.41 -32.373,13.41l-110.412,-0c-9.281,-0 -16.805,-7.524 -16.805,-16.805l0,-32.39c0,-9.281 7.524,-16.805 16.805,-16.805l156.195,-0Z" style="fill:#fff;"/>
</svg>

After

Width:  |  Height:  |  Size: 1001 B

View File

@ -0,0 +1,3 @@
<svg width="25" height="25" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M4.903,0c0.937,-0 1.697,0.76 1.697,1.697l0,23.303l-2.33,0c-1.132,0 -2.219,-0.45 -3.019,-1.251c-0.801,-0.8 -1.251,-1.887 -1.251,-3.019l-0,-19.033c0,-0.937 0.76,-1.697 1.697,-1.697l3.206,0Zm13.033,12.223c0.219,0.109 0.358,0.332 0.358,0.577c-0,0.245 -0.139,0.468 -0.358,0.577l-9.273,4.596c-0.207,0.102 -0.452,0.091 -0.648,-0.031c-0.196,-0.122 -0.315,-0.336 -0.315,-0.566l-0,-9.152c0,-0.23 0.119,-0.444 0.315,-0.566c0.196,-0.122 0.441,-0.133 0.648,-0.031l9.273,4.596Zm7.064,-12.223l0,2.022c-0,1.214 -0.482,2.378 -1.341,3.237c-0.859,0.859 -2.023,1.341 -3.237,1.341l-11.042,0c-0.928,-0 -1.68,-0.752 -1.68,-1.68l0,-3.24c0,-0.928 0.752,-1.68 1.68,-1.68l15.62,0Z" style="fill:#fff;"/>
</svg>

After

Width:  |  Height:  |  Size: 945 B

17
_icons/logoBlack.svg Normal file
View File

@ -0,0 +1,17 @@
<svg width="640" height="200" viewBox="0 0 640 200" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g>
<path d="M610.803,154.398c0.141,0.306 0.212,0.603 0.212,0.893c-0,0.53 -0.208,0.98 -0.623,1.35c-0.415,0.37 -0.89,0.555 -1.422,0.555c-0.361,-0 -0.69,-0.097 -0.988,-0.29c-0.297,-0.192 -0.533,-0.482 -0.705,-0.868l-1.058,-2.435l-7.616,-0l-1.082,2.435c-0.172,0.386 -0.411,0.676 -0.717,0.868c-0.305,0.193 -0.638,0.29 -0.999,0.29c-0.533,-0 -1.015,-0.185 -1.446,-0.555c-0.431,-0.37 -0.646,-0.82 -0.646,-1.35c0,-0.29 0.071,-0.587 0.212,-0.893l6.206,-13.07c0.203,-0.435 0.505,-0.768 0.905,-1.001c0.399,-0.233 0.842,-0.35 1.328,-0.35c0.47,0 0.909,0.117 1.316,0.35c0.408,0.233 0.713,0.566 0.917,1.001l6.206,13.07Zm-6.041,-4.123l-2.351,-5.378l-2.351,5.378l4.702,-0Z" style="fill-rule:nonzero;"/>
<path d="M620.206,144.969c0.988,0 1.869,0.261 2.645,0.784c0.776,0.522 1.379,1.258 1.81,2.206c0.431,0.949 0.647,2.034 0.647,3.256c-0,1.222 -0.216,2.295 -0.647,3.22c-0.431,0.924 -1.03,1.635 -1.798,2.134c-0.768,0.498 -1.654,0.747 -2.657,0.747c-0.736,0 -1.414,-0.152 -2.033,-0.458c-0.619,-0.305 -1.101,-0.715 -1.446,-1.23l0,4.1c0,0.563 -0.188,1.013 -0.564,1.351c-0.376,0.337 -0.87,0.506 -1.481,0.506c-0.643,0 -1.16,-0.181 -1.551,-0.543c-0.392,-0.361 -0.588,-0.824 -0.588,-1.386l-0,-12.661c-0,-0.595 0.184,-1.073 0.552,-1.435c0.369,-0.362 0.866,-0.543 1.493,-0.543c0.596,0 1.077,0.161 1.446,0.483c0.368,0.321 0.576,0.747 0.623,1.278c0.329,-0.563 0.811,-1.005 1.445,-1.327c0.635,-0.321 1.336,-0.482 2.104,-0.482Zm-1.269,9.14c0.721,0 1.273,-0.249 1.657,-0.748c0.384,-0.498 0.576,-1.213 0.576,-2.146c0,-0.981 -0.196,-1.732 -0.588,-2.255c-0.391,-0.522 -0.948,-0.784 -1.669,-0.784c-0.72,0 -1.277,0.258 -1.669,0.772c-0.391,0.515 -0.587,1.254 -0.587,2.219c-0,0.948 0.196,1.676 0.587,2.182c0.392,0.507 0.956,0.76 1.693,0.76Z" style="fill-rule:nonzero;"/>
<path d="M634.899,144.969c0.987,0 1.869,0.261 2.644,0.784c0.776,0.522 1.38,1.258 1.811,2.206c0.431,0.949 0.646,2.034 0.646,3.256c0,1.222 -0.215,2.295 -0.646,3.22c-0.431,0.924 -1.031,1.635 -1.799,2.134c-0.768,0.498 -1.653,0.747 -2.656,0.747c-0.737,0 -1.415,-0.152 -2.034,-0.458c-0.619,-0.305 -1.101,-0.715 -1.445,-1.23l-0,4.1c-0,0.563 -0.188,1.013 -0.565,1.351c-0.376,0.337 -0.869,0.506 -1.481,0.506c-0.642,0 -1.159,-0.181 -1.551,-0.543c-0.392,-0.361 -0.588,-0.824 -0.588,-1.386l0,-12.661c0,-0.595 0.184,-1.073 0.553,-1.435c0.368,-0.362 0.866,-0.543 1.492,-0.543c0.596,0 1.078,0.161 1.446,0.483c0.368,0.321 0.576,0.747 0.623,1.278c0.329,-0.563 0.811,-1.005 1.446,-1.327c0.635,-0.321 1.336,-0.482 2.104,-0.482Zm-1.27,9.14c0.721,0 1.274,-0.249 1.658,-0.748c0.384,-0.498 0.576,-1.213 0.576,-2.146c-0,-0.981 -0.196,-1.732 -0.588,-2.255c-0.392,-0.522 -0.948,-0.784 -1.669,-0.784c-0.721,0 -1.277,0.258 -1.669,0.772c-0.392,0.515 -0.588,1.254 -0.588,2.219c0,0.948 0.196,1.676 0.588,2.182c0.392,0.507 0.956,0.76 1.692,0.76Z" style="fill-rule:nonzero;"/>
</g>
<path d="M242.417,136.617c-1.853,0 -3.339,-0.575 -4.457,-1.725c-1.118,-1.15 -1.677,-2.652 -1.677,-4.504l-0,-56.063c-0,-1.853 0.527,-3.29 1.582,-4.312c1.054,-1.023 2.507,-1.534 4.36,-1.534l33.638,0c3.897,0 5.845,1.661 5.845,4.984c-0,3.258 -1.948,4.887 -5.845,4.887l-27.409,0l-0,18.4l25.492,0c3.897,0 5.846,1.661 5.846,4.983c-0,3.259 -1.949,4.888 -5.846,4.888l-25.492,0l-0,23.767c-0,1.852 -0.543,3.354 -1.629,4.504c-1.086,1.15 -2.556,1.725 -4.408,1.725Z" style="fill-rule:nonzero;"/>
<path d="M309.673,88.221c1.503,-0.128 2.688,0.223 3.555,1.054c0.868,0.831 1.301,2.076 1.301,3.737c-0,1.725 -0.376,3.003 -1.127,3.834c-0.752,0.83 -2.11,1.373 -4.076,1.629l-2.601,0.287c-3.411,0.384 -5.911,1.662 -7.501,3.834c-1.59,2.172 -2.385,4.887 -2.385,8.146l-0,20.125c-0,1.852 -0.52,3.274 -1.561,4.264c-1.04,0.991 -2.341,1.486 -3.902,1.486c-1.561,0 -2.847,-0.495 -3.858,-1.486c-1.012,-0.99 -1.518,-2.412 -1.518,-4.264l-0,-37.088c-0,-1.789 0.506,-3.162 1.518,-4.121c1.011,-0.958 2.269,-1.437 3.772,-1.437c1.503,0 2.717,0.463 3.642,1.389c0.925,0.927 1.387,2.252 1.387,3.977l-0,3.834c1.098,-2.811 2.732,-4.984 4.899,-6.517c2.168,-1.533 4.582,-2.396 7.241,-2.587l1.214,-0.096Z" style="fill-rule:nonzero;"/>
<path d="M360.691,123.2c1.136,0 2.054,0.415 2.756,1.246c0.701,0.83 1.052,1.948 1.052,3.354c-0,1.981 -1.236,3.642 -3.708,4.983c-2.272,1.214 -4.844,2.189 -7.717,2.923c-2.873,0.735 -5.612,1.102 -8.218,1.102c-7.884,0 -14.131,-2.172 -18.741,-6.516c-4.61,-4.345 -6.915,-10.286 -6.915,-17.825c-0,-4.792 1.002,-9.041 3.007,-12.746c2.004,-3.706 4.827,-6.581 8.468,-8.625c3.641,-2.045 7.767,-3.067 12.377,-3.067c4.41,0 8.252,0.927 11.525,2.779c3.274,1.853 5.813,4.473 7.617,7.859c1.804,3.386 2.706,7.379 2.706,11.979c-0,2.747 -1.269,4.121 -3.808,4.121l-29.565,0c0.401,4.408 1.704,7.65 3.909,9.727c2.204,2.076 5.411,3.114 9.621,3.114c2.138,0 4.025,-0.255 5.662,-0.766c1.637,-0.511 3.491,-1.214 5.562,-2.109c2.005,-1.022 3.474,-1.533 4.41,-1.533Zm-17.338,-26.738c-3.408,0 -6.13,1.023 -8.168,3.067c-2.038,2.045 -3.257,4.983 -3.658,8.817l22.65,0c-0.134,-3.897 -1.136,-6.852 -3.007,-8.865c-1.871,-2.012 -4.477,-3.019 -7.817,-3.019Z" style="fill-rule:nonzero;"/>
<path d="M415.049,123.2c1.136,0 2.055,0.415 2.756,1.246c0.702,0.83 1.052,1.948 1.052,3.354c-0,1.981 -1.236,3.642 -3.708,4.983c-2.271,1.214 -4.844,2.189 -7.717,2.923c-2.872,0.735 -5.612,1.102 -8.218,1.102c-7.883,0 -14.13,-2.172 -18.741,-6.516c-4.61,-4.345 -6.915,-10.286 -6.915,-17.825c-0,-4.792 1.003,-9.041 3.007,-12.746c2.004,-3.706 4.827,-6.581 8.468,-8.625c3.642,-2.045 7.767,-3.067 12.378,-3.067c4.409,0 8.251,0.927 11.525,2.779c3.274,1.853 5.812,4.473 7.616,7.859c1.804,3.386 2.706,7.379 2.706,11.979c-0,2.747 -1.269,4.121 -3.808,4.121l-29.565,0c0.401,4.408 1.704,7.65 3.909,9.727c2.205,2.076 5.412,3.114 9.621,3.114c2.138,0 4.025,-0.255 5.662,-0.766c1.637,-0.511 3.491,-1.214 5.562,-2.109c2.005,-1.022 3.475,-1.533 4.41,-1.533Zm-17.338,-26.738c-3.407,0 -6.13,1.023 -8.168,3.067c-2.037,2.045 -3.257,4.983 -3.658,8.817l22.65,0c-0.134,-3.897 -1.136,-6.852 -3.007,-8.865c-1.87,-2.012 -4.476,-3.019 -7.817,-3.019Z" style="fill-rule:nonzero;"/>
<path d="M452.658,136.617c-2.137,0 -4.861,-0.672 -6.173,-2.016c-1.313,-1.343 -1.969,-3.135 -1.969,-5.374l-0,-48.56l-13.833,0c-4.517,0 -6.775,-2.047 -6.775,-6.142c-0,-4.03 2.258,-6.046 6.775,-6.046l43.949,0c4.517,0 6.776,2.016 6.776,6.046c-0,4.095 -2.259,6.142 -6.776,6.142l-13.833,0l0,48.56c0,2.239 -0.64,4.031 -1.922,5.374c-1.282,1.344 -4.022,2.016 -6.219,2.016Z" style="fill-rule:nonzero;"/>
<path d="M515.741,88.529c2.236,0 4.009,0.607 5.319,1.821c1.31,1.214 1.964,2.875 1.964,4.983l-0,35.171c-0,1.981 -0.686,3.578 -2.06,4.792c-1.374,1.214 -3.147,1.821 -5.319,1.821c-2.044,0 -3.673,-0.575 -4.887,-1.725c-1.214,-1.15 -1.821,-2.684 -1.821,-4.6l-0,-0.959c-1.47,2.428 -3.402,4.281 -5.798,5.559c-2.396,1.277 -5.095,1.916 -8.098,1.916c-5.942,0 -10.366,-1.645 -13.273,-4.935c-2.907,-3.29 -4.36,-8.258 -4.36,-14.902l-0,-22.138c-0,-2.108 0.655,-3.769 1.964,-4.983c1.31,-1.214 3.083,-1.821 5.319,-1.821c2.236,0 3.993,0.607 5.271,1.821c1.278,1.214 1.917,2.875 1.917,4.983l-0,22.425c-0,2.811 0.591,4.888 1.772,6.23c1.182,1.341 2.987,2.012 5.415,2.012c2.811,0 5.095,-0.958 6.852,-2.875c1.757,-1.917 2.636,-4.44 2.636,-7.571l-0,-20.221c-0,-2.108 0.638,-3.769 1.916,-4.983c1.278,-1.214 3.035,-1.821 5.271,-1.821Z" style="fill-rule:nonzero;"/>
<path d="M563.858,88.338c4.171,-0.001 7.853,0.99 11.046,2.97c3.193,1.981 5.686,4.808 7.478,8.482c1.792,3.673 2.688,7.938 2.688,12.793c-0,4.856 -0.896,9.152 -2.688,12.89c-1.792,3.737 -4.301,6.644 -7.527,8.721c-3.226,2.076 -6.891,3.114 -10.997,3.114c-3.324,-0 -6.321,-0.686 -8.993,-2.06c-2.672,-1.374 -4.725,-3.274 -6.159,-5.702l-0,0.766c-0,2.045 -0.651,3.69 -1.955,4.936c-1.303,1.246 -3.063,1.869 -5.278,1.869c-2.216,-0 -3.992,-0.623 -5.328,-1.869c-1.336,-1.246 -2.004,-2.891 -2.004,-4.936l0,-55.2c0,-1.98 0.701,-3.577 2.102,-4.791c1.401,-1.214 3.242,-1.821 5.523,-1.821c2.15,-0 3.877,0.575 5.181,1.725c1.303,1.15 1.955,2.683 1.955,4.6l-0,20.987c1.433,-2.363 3.47,-4.2 6.109,-5.51c2.64,-1.31 5.588,-1.965 8.847,-1.965l-0,0.001Zm-4.301,37.95c3.454,-0 6.126,-1.197 8.016,-3.593c1.889,-2.396 2.834,-5.766 2.834,-10.111c0,-4.28 -0.945,-7.555 -2.834,-9.823c-1.89,-2.268 -4.562,-3.402 -8.016,-3.402c-3.454,0 -6.126,1.166 -8.016,3.498c-1.89,2.332 -2.835,5.638 -2.835,9.919c-0,4.344 0.945,7.683 2.835,10.015c1.89,2.332 4.562,3.498 8.016,3.498l0,-0.001Z" style="fill-rule:nonzero;"/>
<path d="M635.013,122.55c1.385,0 2.511,0.511 3.377,1.533c0.865,1.023 1.298,2.332 1.298,3.929c-0,1.087 -0.346,2.093 -1.039,3.019c-0.692,0.927 -1.662,1.709 -2.909,2.348c-2.354,1.15 -5.09,2.093 -8.207,2.827c-3.117,0.735 -5.991,1.102 -8.623,1.102c-5.541,0 -10.372,-0.99 -14.493,-2.971c-4.121,-1.98 -7.289,-4.807 -9.506,-8.481c-2.216,-3.673 -3.324,-8.002 -3.324,-12.985c0,-4.792 1.073,-9.04 3.221,-12.746c2.147,-3.706 5.125,-6.597 8.934,-8.673c3.809,-2.076 8.138,-3.115 12.986,-3.115c4.641,0 8.71,0.943 12.208,2.828c3.497,1.884 6.216,4.568 8.155,8.05c1.939,3.482 2.909,7.554 2.909,12.218c0,1.406 -0.364,2.476 -1.091,3.211c-0.727,0.734 -1.749,1.102 -3.065,1.102l-29.089,0c0.485,3.769 1.731,6.501 3.74,8.194c2.009,1.693 4.883,2.539 8.623,2.539c2.009,0 3.809,-0.223 5.402,-0.671c1.593,-0.447 3.359,-1.054 5.299,-1.821c0.969,-0.383 1.904,-0.718 2.805,-1.006c0.9,-0.287 1.697,-0.431 2.389,-0.431Zm-17.869,-24.246c-2.978,-0 -5.368,0.879 -7.168,2.636c-1.801,1.757 -2.875,4.296 -3.221,7.618l20.051,-0c-0.208,-3.386 -1.126,-5.941 -2.753,-7.666c-1.628,-1.725 -3.931,-2.588 -6.909,-2.588Z" style="fill-rule:nonzero;"/>
<path d="M39.222,0c7.499,0 13.578,6.079 13.578,13.578l0,186.422l-18.639,0c-9.06,0 -17.749,-3.599 -24.155,-10.006c-6.407,-6.406 -10.006,-15.095 -10.006,-24.155l0,-152.261c0,-7.499 6.079,-13.578 13.578,-13.578l25.644,0Zm160.778,-0l0,16.174c0,9.713 -3.859,19.029 -10.728,25.898c-6.869,6.869 -16.185,10.728 -25.898,10.728l-88.33,0c-7.425,0 -13.444,-6.019 -13.444,-13.444l0,-25.912c0,-7.425 6.019,-13.444 13.444,-13.444l124.956,-0Z"/>
<path d="M143.486,97.784c1.755,0.87 2.864,2.658 2.864,4.616c0,1.958 -1.109,3.746 -2.864,4.616l-74.185,36.767c-1.653,0.819 -3.612,0.726 -5.179,-0.246c-1.568,-0.973 -2.522,-2.687 -2.522,-4.532l0,-73.21c0,-1.845 0.954,-3.559 2.522,-4.532c1.567,-0.972 3.526,-1.065 5.179,-0.246l74.185,36.767Z"/>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

17
_icons/logoColor.svg Normal file
View File

@ -0,0 +1,17 @@
<svg width="640" height="200" viewBox="0 0 640 200" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g>
<path d="M610.803,154.398c0.141,0.306 0.212,0.603 0.212,0.893c-0,0.53 -0.208,0.98 -0.623,1.35c-0.415,0.37 -0.89,0.555 -1.422,0.555c-0.361,-0 -0.69,-0.097 -0.988,-0.29c-0.297,-0.192 -0.533,-0.482 -0.705,-0.868l-1.058,-2.435l-7.616,-0l-1.082,2.435c-0.172,0.386 -0.411,0.676 -0.717,0.868c-0.305,0.193 -0.638,0.29 -0.999,0.29c-0.533,-0 -1.015,-0.185 -1.446,-0.555c-0.431,-0.37 -0.646,-0.82 -0.646,-1.35c0,-0.29 0.071,-0.587 0.212,-0.893l6.206,-13.07c0.203,-0.435 0.505,-0.768 0.905,-1.001c0.399,-0.233 0.842,-0.35 1.328,-0.35c0.47,0 0.909,0.117 1.316,0.35c0.408,0.233 0.713,0.566 0.917,1.001l6.206,13.07Zm-6.041,-4.123l-2.351,-5.378l-2.351,5.378l4.702,-0Z" style="fill-rule:nonzero;"/>
<path d="M620.206,144.969c0.988,0 1.869,0.261 2.645,0.784c0.776,0.522 1.379,1.258 1.81,2.206c0.431,0.949 0.647,2.034 0.647,3.256c-0,1.222 -0.216,2.295 -0.647,3.22c-0.431,0.924 -1.03,1.635 -1.798,2.134c-0.768,0.498 -1.654,0.747 -2.657,0.747c-0.736,0 -1.414,-0.152 -2.033,-0.458c-0.619,-0.305 -1.101,-0.715 -1.446,-1.23l0,4.1c0,0.563 -0.188,1.013 -0.564,1.351c-0.376,0.337 -0.87,0.506 -1.481,0.506c-0.643,0 -1.16,-0.181 -1.551,-0.543c-0.392,-0.361 -0.588,-0.824 -0.588,-1.386l-0,-12.661c-0,-0.595 0.184,-1.073 0.552,-1.435c0.369,-0.362 0.866,-0.543 1.493,-0.543c0.596,0 1.077,0.161 1.446,0.483c0.368,0.321 0.576,0.747 0.623,1.278c0.329,-0.563 0.811,-1.005 1.445,-1.327c0.635,-0.321 1.336,-0.482 2.104,-0.482Zm-1.269,9.14c0.721,0 1.273,-0.249 1.657,-0.748c0.384,-0.498 0.576,-1.213 0.576,-2.146c0,-0.981 -0.196,-1.732 -0.588,-2.255c-0.391,-0.522 -0.948,-0.784 -1.669,-0.784c-0.72,0 -1.277,0.258 -1.669,0.772c-0.391,0.515 -0.587,1.254 -0.587,2.219c-0,0.948 0.196,1.676 0.587,2.182c0.392,0.507 0.956,0.76 1.693,0.76Z" style="fill-rule:nonzero;"/>
<path d="M634.899,144.969c0.987,0 1.869,0.261 2.644,0.784c0.776,0.522 1.38,1.258 1.811,2.206c0.431,0.949 0.646,2.034 0.646,3.256c0,1.222 -0.215,2.295 -0.646,3.22c-0.431,0.924 -1.031,1.635 -1.799,2.134c-0.768,0.498 -1.653,0.747 -2.656,0.747c-0.737,0 -1.415,-0.152 -2.034,-0.458c-0.619,-0.305 -1.101,-0.715 -1.445,-1.23l-0,4.1c-0,0.563 -0.188,1.013 -0.565,1.351c-0.376,0.337 -0.869,0.506 -1.481,0.506c-0.642,0 -1.159,-0.181 -1.551,-0.543c-0.392,-0.361 -0.588,-0.824 -0.588,-1.386l0,-12.661c0,-0.595 0.184,-1.073 0.553,-1.435c0.368,-0.362 0.866,-0.543 1.492,-0.543c0.596,0 1.078,0.161 1.446,0.483c0.368,0.321 0.576,0.747 0.623,1.278c0.329,-0.563 0.811,-1.005 1.446,-1.327c0.635,-0.321 1.336,-0.482 2.104,-0.482Zm-1.27,9.14c0.721,0 1.274,-0.249 1.658,-0.748c0.384,-0.498 0.576,-1.213 0.576,-2.146c-0,-0.981 -0.196,-1.732 -0.588,-2.255c-0.392,-0.522 -0.948,-0.784 -1.669,-0.784c-0.721,0 -1.277,0.258 -1.669,0.772c-0.392,0.515 -0.588,1.254 -0.588,2.219c0,0.948 0.196,1.676 0.588,2.182c0.392,0.507 0.956,0.76 1.692,0.76Z" style="fill-rule:nonzero;"/>
</g>
<path d="M242.417,136.617c-1.853,0 -3.339,-0.575 -4.457,-1.725c-1.118,-1.15 -1.677,-2.652 -1.677,-4.504l-0,-56.063c-0,-1.853 0.527,-3.29 1.582,-4.312c1.054,-1.023 2.507,-1.534 4.36,-1.534l33.638,0c3.897,0 5.845,1.661 5.845,4.984c-0,3.258 -1.948,4.887 -5.845,4.887l-27.409,0l-0,18.4l25.492,0c3.897,0 5.846,1.661 5.846,4.983c-0,3.259 -1.949,4.888 -5.846,4.888l-25.492,0l-0,23.767c-0,1.852 -0.543,3.354 -1.629,4.504c-1.086,1.15 -2.556,1.725 -4.408,1.725Z" style="fill:#f33;fill-rule:nonzero;"/>
<path d="M309.673,88.221c1.503,-0.128 2.688,0.223 3.555,1.054c0.868,0.831 1.301,2.076 1.301,3.737c-0,1.725 -0.376,3.003 -1.127,3.834c-0.752,0.83 -2.11,1.373 -4.076,1.629l-2.601,0.287c-3.411,0.384 -5.911,1.662 -7.501,3.834c-1.59,2.172 -2.385,4.887 -2.385,8.146l-0,20.125c-0,1.852 -0.52,3.274 -1.561,4.264c-1.04,0.991 -2.341,1.486 -3.902,1.486c-1.561,0 -2.847,-0.495 -3.858,-1.486c-1.012,-0.99 -1.518,-2.412 -1.518,-4.264l-0,-37.088c-0,-1.789 0.506,-3.162 1.518,-4.121c1.011,-0.958 2.269,-1.437 3.772,-1.437c1.503,0 2.717,0.463 3.642,1.389c0.925,0.927 1.387,2.252 1.387,3.977l-0,3.834c1.098,-2.811 2.732,-4.984 4.899,-6.517c2.168,-1.533 4.582,-2.396 7.241,-2.587l1.214,-0.096Z" style="fill:#f33;fill-rule:nonzero;"/>
<path d="M360.691,123.2c1.136,0 2.054,0.415 2.756,1.246c0.701,0.83 1.052,1.948 1.052,3.354c-0,1.981 -1.236,3.642 -3.708,4.983c-2.272,1.214 -4.844,2.189 -7.717,2.923c-2.873,0.735 -5.612,1.102 -8.218,1.102c-7.884,0 -14.131,-2.172 -18.741,-6.516c-4.61,-4.345 -6.915,-10.286 -6.915,-17.825c-0,-4.792 1.002,-9.041 3.007,-12.746c2.004,-3.706 4.827,-6.581 8.468,-8.625c3.641,-2.045 7.767,-3.067 12.377,-3.067c4.41,0 8.252,0.927 11.525,2.779c3.274,1.853 5.813,4.473 7.617,7.859c1.804,3.386 2.706,7.379 2.706,11.979c-0,2.747 -1.269,4.121 -3.808,4.121l-29.565,0c0.401,4.408 1.704,7.65 3.909,9.727c2.204,2.076 5.411,3.114 9.621,3.114c2.138,0 4.025,-0.255 5.662,-0.766c1.637,-0.511 3.491,-1.214 5.562,-2.109c2.005,-1.022 3.474,-1.533 4.41,-1.533Zm-17.338,-26.738c-3.408,0 -6.13,1.023 -8.168,3.067c-2.038,2.045 -3.257,4.983 -3.658,8.817l22.65,0c-0.134,-3.897 -1.136,-6.852 -3.007,-8.865c-1.871,-2.012 -4.477,-3.019 -7.817,-3.019Z" style="fill:#f33;fill-rule:nonzero;"/>
<path d="M415.049,123.2c1.136,0 2.055,0.415 2.756,1.246c0.702,0.83 1.052,1.948 1.052,3.354c-0,1.981 -1.236,3.642 -3.708,4.983c-2.271,1.214 -4.844,2.189 -7.717,2.923c-2.872,0.735 -5.612,1.102 -8.218,1.102c-7.883,0 -14.13,-2.172 -18.741,-6.516c-4.61,-4.345 -6.915,-10.286 -6.915,-17.825c-0,-4.792 1.003,-9.041 3.007,-12.746c2.004,-3.706 4.827,-6.581 8.468,-8.625c3.642,-2.045 7.767,-3.067 12.378,-3.067c4.409,0 8.251,0.927 11.525,2.779c3.274,1.853 5.812,4.473 7.616,7.859c1.804,3.386 2.706,7.379 2.706,11.979c-0,2.747 -1.269,4.121 -3.808,4.121l-29.565,0c0.401,4.408 1.704,7.65 3.909,9.727c2.205,2.076 5.412,3.114 9.621,3.114c2.138,0 4.025,-0.255 5.662,-0.766c1.637,-0.511 3.491,-1.214 5.562,-2.109c2.005,-1.022 3.475,-1.533 4.41,-1.533Zm-17.338,-26.738c-3.407,0 -6.13,1.023 -8.168,3.067c-2.037,2.045 -3.257,4.983 -3.658,8.817l22.65,0c-0.134,-3.897 -1.136,-6.852 -3.007,-8.865c-1.87,-2.012 -4.476,-3.019 -7.817,-3.019Z" style="fill:#f33;fill-rule:nonzero;"/>
<path d="M452.658,136.617c-2.137,0 -4.861,-0.672 -6.173,-2.016c-1.313,-1.343 -1.969,-3.135 -1.969,-5.374l-0,-48.56l-13.833,0c-4.517,0 -6.775,-2.047 -6.775,-6.142c-0,-4.03 2.258,-6.046 6.775,-6.046l43.949,0c4.517,0 6.776,2.016 6.776,6.046c-0,4.095 -2.259,6.142 -6.776,6.142l-13.833,0l0,48.56c0,2.239 -0.64,4.031 -1.922,5.374c-1.282,1.344 -4.022,2.016 -6.219,2.016Z" style="fill:#29abe1;fill-rule:nonzero;"/>
<path d="M515.741,88.529c2.236,0 4.009,0.607 5.319,1.821c1.31,1.214 1.964,2.875 1.964,4.983l-0,35.171c-0,1.981 -0.686,3.578 -2.06,4.792c-1.374,1.214 -3.147,1.821 -5.319,1.821c-2.044,0 -3.673,-0.575 -4.887,-1.725c-1.214,-1.15 -1.821,-2.684 -1.821,-4.6l-0,-0.959c-1.47,2.428 -3.402,4.281 -5.798,5.559c-2.396,1.277 -5.095,1.916 -8.098,1.916c-5.942,0 -10.366,-1.645 -13.273,-4.935c-2.907,-3.29 -4.36,-8.258 -4.36,-14.902l-0,-22.138c-0,-2.108 0.655,-3.769 1.964,-4.983c1.31,-1.214 3.083,-1.821 5.319,-1.821c2.236,0 3.993,0.607 5.271,1.821c1.278,1.214 1.917,2.875 1.917,4.983l-0,22.425c-0,2.811 0.591,4.888 1.772,6.23c1.182,1.341 2.987,2.012 5.415,2.012c2.811,0 5.095,-0.958 6.852,-2.875c1.757,-1.917 2.636,-4.44 2.636,-7.571l-0,-20.221c-0,-2.108 0.638,-3.769 1.916,-4.983c1.278,-1.214 3.035,-1.821 5.271,-1.821Z" style="fill:#29abe1;fill-rule:nonzero;"/>
<path d="M563.858,88.338c4.171,-0.001 7.853,0.99 11.046,2.97c3.193,1.981 5.686,4.808 7.478,8.482c1.792,3.673 2.688,7.938 2.688,12.793c-0,4.856 -0.896,9.152 -2.688,12.89c-1.792,3.737 -4.301,6.644 -7.527,8.721c-3.226,2.076 -6.891,3.114 -10.997,3.114c-3.324,-0 -6.321,-0.686 -8.993,-2.06c-2.672,-1.374 -4.725,-3.274 -6.159,-5.702l-0,0.766c-0,2.045 -0.651,3.69 -1.955,4.936c-1.303,1.246 -3.063,1.869 -5.278,1.869c-2.216,-0 -3.992,-0.623 -5.328,-1.869c-1.336,-1.246 -2.004,-2.891 -2.004,-4.936l0,-55.2c0,-1.98 0.701,-3.577 2.102,-4.791c1.401,-1.214 3.242,-1.821 5.523,-1.821c2.15,-0 3.877,0.575 5.181,1.725c1.303,1.15 1.955,2.683 1.955,4.6l-0,20.987c1.433,-2.363 3.47,-4.2 6.109,-5.51c2.64,-1.31 5.588,-1.965 8.847,-1.965l-0,0.001Zm-4.301,37.95c3.454,-0 6.126,-1.197 8.016,-3.593c1.889,-2.396 2.834,-5.766 2.834,-10.111c0,-4.28 -0.945,-7.555 -2.834,-9.823c-1.89,-2.268 -4.562,-3.402 -8.016,-3.402c-3.454,0 -6.126,1.166 -8.016,3.498c-1.89,2.332 -2.835,5.638 -2.835,9.919c-0,4.344 0.945,7.683 2.835,10.015c1.89,2.332 4.562,3.498 8.016,3.498l0,-0.001Z" style="fill:#29abe1;fill-rule:nonzero;"/>
<path d="M635.013,122.55c1.385,0 2.511,0.511 3.377,1.533c0.865,1.023 1.298,2.332 1.298,3.929c-0,1.087 -0.346,2.093 -1.039,3.019c-0.692,0.927 -1.662,1.709 -2.909,2.348c-2.354,1.15 -5.09,2.093 -8.207,2.827c-3.117,0.735 -5.991,1.102 -8.623,1.102c-5.541,0 -10.372,-0.99 -14.493,-2.971c-4.121,-1.98 -7.289,-4.807 -9.506,-8.481c-2.216,-3.673 -3.324,-8.002 -3.324,-12.985c0,-4.792 1.073,-9.04 3.221,-12.746c2.147,-3.706 5.125,-6.597 8.934,-8.673c3.809,-2.076 8.138,-3.115 12.986,-3.115c4.641,0 8.71,0.943 12.208,2.828c3.497,1.884 6.216,4.568 8.155,8.05c1.939,3.482 2.909,7.554 2.909,12.218c0,1.406 -0.364,2.476 -1.091,3.211c-0.727,0.734 -1.749,1.102 -3.065,1.102l-29.089,0c0.485,3.769 1.731,6.501 3.74,8.194c2.009,1.693 4.883,2.539 8.623,2.539c2.009,0 3.809,-0.223 5.402,-0.671c1.593,-0.447 3.359,-1.054 5.299,-1.821c0.969,-0.383 1.904,-0.718 2.805,-1.006c0.9,-0.287 1.697,-0.431 2.389,-0.431Zm-17.869,-24.246c-2.978,-0 -5.368,0.879 -7.168,2.636c-1.801,1.757 -2.875,4.296 -3.221,7.618l20.051,-0c-0.208,-3.386 -1.126,-5.941 -2.753,-7.666c-1.628,-1.725 -3.931,-2.588 -6.909,-2.588Z" style="fill:#29abe1;fill-rule:nonzero;"/>
<path d="M39.222,0c7.499,0 13.578,6.079 13.578,13.578l0,186.422l-18.639,0c-9.06,0 -17.749,-3.599 -24.155,-10.006c-6.407,-6.406 -10.006,-15.095 -10.006,-24.155l0,-152.261c0,-7.499 6.079,-13.578 13.578,-13.578l25.644,0Zm160.778,-0l0,16.174c0,9.713 -3.859,19.029 -10.728,25.898c-6.869,6.869 -16.185,10.728 -25.898,10.728l-88.33,0c-7.425,0 -13.444,-6.019 -13.444,-13.444l0,-25.912c0,-7.425 6.019,-13.444 13.444,-13.444l124.956,-0Z" style="fill:#f33;"/>
<path d="M143.486,97.784c1.755,0.87 2.864,2.658 2.864,4.616c0,1.958 -1.109,3.746 -2.864,4.616l-74.185,36.767c-1.653,0.819 -3.612,0.726 -5.179,-0.246c-1.568,-0.973 -2.522,-2.687 -2.522,-4.532l0,-73.21c0,-1.845 0.954,-3.559 2.522,-4.532c1.567,-0.972 3.526,-1.065 5.179,-0.246l74.185,36.767Z" style="fill:#29abe1;"/>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

17
_icons/logoWhite.svg Normal file
View File

@ -0,0 +1,17 @@
<svg width="640" height="200" viewBox="0 0 640 200" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g>
<path d="M610.803,154.398c0.141,0.306 0.212,0.603 0.212,0.893c-0,0.53 -0.208,0.98 -0.623,1.35c-0.415,0.37 -0.89,0.555 -1.422,0.555c-0.361,-0 -0.69,-0.097 -0.988,-0.29c-0.297,-0.192 -0.533,-0.482 -0.705,-0.868l-1.058,-2.435l-7.616,-0l-1.082,2.435c-0.172,0.386 -0.411,0.676 -0.717,0.868c-0.305,0.193 -0.638,0.29 -0.999,0.29c-0.533,-0 -1.015,-0.185 -1.446,-0.555c-0.431,-0.37 -0.646,-0.82 -0.646,-1.35c0,-0.29 0.071,-0.587 0.212,-0.893l6.206,-13.07c0.203,-0.435 0.505,-0.768 0.905,-1.001c0.399,-0.233 0.842,-0.35 1.328,-0.35c0.47,0 0.909,0.117 1.316,0.35c0.408,0.233 0.713,0.566 0.917,1.001l6.206,13.07Zm-6.041,-4.123l-2.351,-5.378l-2.351,5.378l4.702,-0Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M620.206,144.969c0.988,0 1.869,0.261 2.645,0.784c0.776,0.522 1.379,1.258 1.81,2.206c0.431,0.949 0.647,2.034 0.647,3.256c-0,1.222 -0.216,2.295 -0.647,3.22c-0.431,0.924 -1.03,1.635 -1.798,2.134c-0.768,0.498 -1.654,0.747 -2.657,0.747c-0.736,0 -1.414,-0.152 -2.033,-0.458c-0.619,-0.305 -1.101,-0.715 -1.446,-1.23l0,4.1c0,0.563 -0.188,1.013 -0.564,1.351c-0.376,0.337 -0.87,0.506 -1.481,0.506c-0.643,0 -1.16,-0.181 -1.551,-0.543c-0.392,-0.361 -0.588,-0.824 -0.588,-1.386l-0,-12.661c-0,-0.595 0.184,-1.073 0.552,-1.435c0.369,-0.362 0.866,-0.543 1.493,-0.543c0.596,0 1.077,0.161 1.446,0.483c0.368,0.321 0.576,0.747 0.623,1.278c0.329,-0.563 0.811,-1.005 1.445,-1.327c0.635,-0.321 1.336,-0.482 2.104,-0.482Zm-1.269,9.14c0.721,0 1.273,-0.249 1.657,-0.748c0.384,-0.498 0.576,-1.213 0.576,-2.146c0,-0.981 -0.196,-1.732 -0.588,-2.255c-0.391,-0.522 -0.948,-0.784 -1.669,-0.784c-0.72,0 -1.277,0.258 -1.669,0.772c-0.391,0.515 -0.587,1.254 -0.587,2.219c-0,0.948 0.196,1.676 0.587,2.182c0.392,0.507 0.956,0.76 1.693,0.76Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M634.899,144.969c0.987,0 1.869,0.261 2.644,0.784c0.776,0.522 1.38,1.258 1.811,2.206c0.431,0.949 0.646,2.034 0.646,3.256c0,1.222 -0.215,2.295 -0.646,3.22c-0.431,0.924 -1.031,1.635 -1.799,2.134c-0.768,0.498 -1.653,0.747 -2.656,0.747c-0.737,0 -1.415,-0.152 -2.034,-0.458c-0.619,-0.305 -1.101,-0.715 -1.445,-1.23l-0,4.1c-0,0.563 -0.188,1.013 -0.565,1.351c-0.376,0.337 -0.869,0.506 -1.481,0.506c-0.642,0 -1.159,-0.181 -1.551,-0.543c-0.392,-0.361 -0.588,-0.824 -0.588,-1.386l0,-12.661c0,-0.595 0.184,-1.073 0.553,-1.435c0.368,-0.362 0.866,-0.543 1.492,-0.543c0.596,0 1.078,0.161 1.446,0.483c0.368,0.321 0.576,0.747 0.623,1.278c0.329,-0.563 0.811,-1.005 1.446,-1.327c0.635,-0.321 1.336,-0.482 2.104,-0.482Zm-1.27,9.14c0.721,0 1.274,-0.249 1.658,-0.748c0.384,-0.498 0.576,-1.213 0.576,-2.146c-0,-0.981 -0.196,-1.732 -0.588,-2.255c-0.392,-0.522 -0.948,-0.784 -1.669,-0.784c-0.721,0 -1.277,0.258 -1.669,0.772c-0.392,0.515 -0.588,1.254 -0.588,2.219c0,0.948 0.196,1.676 0.588,2.182c0.392,0.507 0.956,0.76 1.692,0.76Z" style="fill:#fff;fill-rule:nonzero;"/>
</g>
<path d="M242.417,136.617c-1.853,0 -3.339,-0.575 -4.457,-1.725c-1.118,-1.15 -1.677,-2.652 -1.677,-4.504l-0,-56.063c-0,-1.853 0.527,-3.29 1.582,-4.312c1.054,-1.023 2.507,-1.534 4.36,-1.534l33.638,0c3.897,0 5.845,1.661 5.845,4.984c-0,3.258 -1.948,4.887 -5.845,4.887l-27.409,0l-0,18.4l25.492,0c3.897,0 5.846,1.661 5.846,4.983c-0,3.259 -1.949,4.888 -5.846,4.888l-25.492,0l-0,23.767c-0,1.852 -0.543,3.354 -1.629,4.504c-1.086,1.15 -2.556,1.725 -4.408,1.725Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M309.673,88.221c1.503,-0.128 2.688,0.223 3.555,1.054c0.868,0.831 1.301,2.076 1.301,3.737c-0,1.725 -0.376,3.003 -1.127,3.834c-0.752,0.83 -2.11,1.373 -4.076,1.629l-2.601,0.287c-3.411,0.384 -5.911,1.662 -7.501,3.834c-1.59,2.172 -2.385,4.887 -2.385,8.146l-0,20.125c-0,1.852 -0.52,3.274 -1.561,4.264c-1.04,0.991 -2.341,1.486 -3.902,1.486c-1.561,0 -2.847,-0.495 -3.858,-1.486c-1.012,-0.99 -1.518,-2.412 -1.518,-4.264l-0,-37.088c-0,-1.789 0.506,-3.162 1.518,-4.121c1.011,-0.958 2.269,-1.437 3.772,-1.437c1.503,0 2.717,0.463 3.642,1.389c0.925,0.927 1.387,2.252 1.387,3.977l-0,3.834c1.098,-2.811 2.732,-4.984 4.899,-6.517c2.168,-1.533 4.582,-2.396 7.241,-2.587l1.214,-0.096Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M360.691,123.2c1.136,0 2.054,0.415 2.756,1.246c0.701,0.83 1.052,1.948 1.052,3.354c-0,1.981 -1.236,3.642 -3.708,4.983c-2.272,1.214 -4.844,2.189 -7.717,2.923c-2.873,0.735 -5.612,1.102 -8.218,1.102c-7.884,0 -14.131,-2.172 -18.741,-6.516c-4.61,-4.345 -6.915,-10.286 -6.915,-17.825c-0,-4.792 1.002,-9.041 3.007,-12.746c2.004,-3.706 4.827,-6.581 8.468,-8.625c3.641,-2.045 7.767,-3.067 12.377,-3.067c4.41,0 8.252,0.927 11.525,2.779c3.274,1.853 5.813,4.473 7.617,7.859c1.804,3.386 2.706,7.379 2.706,11.979c-0,2.747 -1.269,4.121 -3.808,4.121l-29.565,0c0.401,4.408 1.704,7.65 3.909,9.727c2.204,2.076 5.411,3.114 9.621,3.114c2.138,0 4.025,-0.255 5.662,-0.766c1.637,-0.511 3.491,-1.214 5.562,-2.109c2.005,-1.022 3.474,-1.533 4.41,-1.533Zm-17.338,-26.738c-3.408,0 -6.13,1.023 -8.168,3.067c-2.038,2.045 -3.257,4.983 -3.658,8.817l22.65,0c-0.134,-3.897 -1.136,-6.852 -3.007,-8.865c-1.871,-2.012 -4.477,-3.019 -7.817,-3.019Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M415.049,123.2c1.136,0 2.055,0.415 2.756,1.246c0.702,0.83 1.052,1.948 1.052,3.354c-0,1.981 -1.236,3.642 -3.708,4.983c-2.271,1.214 -4.844,2.189 -7.717,2.923c-2.872,0.735 -5.612,1.102 -8.218,1.102c-7.883,0 -14.13,-2.172 -18.741,-6.516c-4.61,-4.345 -6.915,-10.286 -6.915,-17.825c-0,-4.792 1.003,-9.041 3.007,-12.746c2.004,-3.706 4.827,-6.581 8.468,-8.625c3.642,-2.045 7.767,-3.067 12.378,-3.067c4.409,0 8.251,0.927 11.525,2.779c3.274,1.853 5.812,4.473 7.616,7.859c1.804,3.386 2.706,7.379 2.706,11.979c-0,2.747 -1.269,4.121 -3.808,4.121l-29.565,0c0.401,4.408 1.704,7.65 3.909,9.727c2.205,2.076 5.412,3.114 9.621,3.114c2.138,0 4.025,-0.255 5.662,-0.766c1.637,-0.511 3.491,-1.214 5.562,-2.109c2.005,-1.022 3.475,-1.533 4.41,-1.533Zm-17.338,-26.738c-3.407,0 -6.13,1.023 -8.168,3.067c-2.037,2.045 -3.257,4.983 -3.658,8.817l22.65,0c-0.134,-3.897 -1.136,-6.852 -3.007,-8.865c-1.87,-2.012 -4.476,-3.019 -7.817,-3.019Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M452.658,136.617c-2.137,0 -4.861,-0.672 -6.173,-2.016c-1.313,-1.343 -1.969,-3.135 -1.969,-5.374l-0,-48.56l-13.833,0c-4.517,0 -6.775,-2.047 -6.775,-6.142c-0,-4.03 2.258,-6.046 6.775,-6.046l43.949,0c4.517,0 6.776,2.016 6.776,6.046c-0,4.095 -2.259,6.142 -6.776,6.142l-13.833,0l0,48.56c0,2.239 -0.64,4.031 -1.922,5.374c-1.282,1.344 -4.022,2.016 -6.219,2.016Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M515.741,88.529c2.236,0 4.009,0.607 5.319,1.821c1.31,1.214 1.964,2.875 1.964,4.983l-0,35.171c-0,1.981 -0.686,3.578 -2.06,4.792c-1.374,1.214 -3.147,1.821 -5.319,1.821c-2.044,0 -3.673,-0.575 -4.887,-1.725c-1.214,-1.15 -1.821,-2.684 -1.821,-4.6l-0,-0.959c-1.47,2.428 -3.402,4.281 -5.798,5.559c-2.396,1.277 -5.095,1.916 -8.098,1.916c-5.942,0 -10.366,-1.645 -13.273,-4.935c-2.907,-3.29 -4.36,-8.258 -4.36,-14.902l-0,-22.138c-0,-2.108 0.655,-3.769 1.964,-4.983c1.31,-1.214 3.083,-1.821 5.319,-1.821c2.236,0 3.993,0.607 5.271,1.821c1.278,1.214 1.917,2.875 1.917,4.983l-0,22.425c-0,2.811 0.591,4.888 1.772,6.23c1.182,1.341 2.987,2.012 5.415,2.012c2.811,0 5.095,-0.958 6.852,-2.875c1.757,-1.917 2.636,-4.44 2.636,-7.571l-0,-20.221c-0,-2.108 0.638,-3.769 1.916,-4.983c1.278,-1.214 3.035,-1.821 5.271,-1.821Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M563.858,88.338c4.171,-0.001 7.853,0.99 11.046,2.97c3.193,1.981 5.686,4.808 7.478,8.482c1.792,3.673 2.688,7.938 2.688,12.793c-0,4.856 -0.896,9.152 -2.688,12.89c-1.792,3.737 -4.301,6.644 -7.527,8.721c-3.226,2.076 -6.891,3.114 -10.997,3.114c-3.324,-0 -6.321,-0.686 -8.993,-2.06c-2.672,-1.374 -4.725,-3.274 -6.159,-5.702l-0,0.766c-0,2.045 -0.651,3.69 -1.955,4.936c-1.303,1.246 -3.063,1.869 -5.278,1.869c-2.216,-0 -3.992,-0.623 -5.328,-1.869c-1.336,-1.246 -2.004,-2.891 -2.004,-4.936l0,-55.2c0,-1.98 0.701,-3.577 2.102,-4.791c1.401,-1.214 3.242,-1.821 5.523,-1.821c2.15,-0 3.877,0.575 5.181,1.725c1.303,1.15 1.955,2.683 1.955,4.6l-0,20.987c1.433,-2.363 3.47,-4.2 6.109,-5.51c2.64,-1.31 5.588,-1.965 8.847,-1.965l-0,0.001Zm-4.301,37.95c3.454,-0 6.126,-1.197 8.016,-3.593c1.889,-2.396 2.834,-5.766 2.834,-10.111c0,-4.28 -0.945,-7.555 -2.834,-9.823c-1.89,-2.268 -4.562,-3.402 -8.016,-3.402c-3.454,0 -6.126,1.166 -8.016,3.498c-1.89,2.332 -2.835,5.638 -2.835,9.919c-0,4.344 0.945,7.683 2.835,10.015c1.89,2.332 4.562,3.498 8.016,3.498l0,-0.001Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M635.013,122.55c1.385,0 2.511,0.511 3.377,1.533c0.865,1.023 1.298,2.332 1.298,3.929c-0,1.087 -0.346,2.093 -1.039,3.019c-0.692,0.927 -1.662,1.709 -2.909,2.348c-2.354,1.15 -5.09,2.093 -8.207,2.827c-3.117,0.735 -5.991,1.102 -8.623,1.102c-5.541,0 -10.372,-0.99 -14.493,-2.971c-4.121,-1.98 -7.289,-4.807 -9.506,-8.481c-2.216,-3.673 -3.324,-8.002 -3.324,-12.985c0,-4.792 1.073,-9.04 3.221,-12.746c2.147,-3.706 5.125,-6.597 8.934,-8.673c3.809,-2.076 8.138,-3.115 12.986,-3.115c4.641,0 8.71,0.943 12.208,2.828c3.497,1.884 6.216,4.568 8.155,8.05c1.939,3.482 2.909,7.554 2.909,12.218c0,1.406 -0.364,2.476 -1.091,3.211c-0.727,0.734 -1.749,1.102 -3.065,1.102l-29.089,0c0.485,3.769 1.731,6.501 3.74,8.194c2.009,1.693 4.883,2.539 8.623,2.539c2.009,0 3.809,-0.223 5.402,-0.671c1.593,-0.447 3.359,-1.054 5.299,-1.821c0.969,-0.383 1.904,-0.718 2.805,-1.006c0.9,-0.287 1.697,-0.431 2.389,-0.431Zm-17.869,-24.246c-2.978,-0 -5.368,0.879 -7.168,2.636c-1.801,1.757 -2.875,4.296 -3.221,7.618l20.051,-0c-0.208,-3.386 -1.126,-5.941 -2.753,-7.666c-1.628,-1.725 -3.931,-2.588 -6.909,-2.588Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M39.222,0c7.499,0 13.578,6.079 13.578,13.578l0,186.422l-18.639,0c-9.06,0 -17.749,-3.599 -24.155,-10.006c-6.407,-6.406 -10.006,-15.095 -10.006,-24.155l0,-152.261c0,-7.499 6.079,-13.578 13.578,-13.578l25.644,0Zm160.778,-0l0,16.174c0,9.713 -3.859,19.029 -10.728,25.898c-6.869,6.869 -16.185,10.728 -25.898,10.728l-88.33,0c-7.425,0 -13.444,-6.019 -13.444,-13.444l0,-25.912c0,-7.425 6.019,-13.444 13.444,-13.444l124.956,-0Z" style="fill:#fff;"/>
<path d="M143.486,97.784c1.755,0.87 2.864,2.658 2.864,4.616c0,1.958 -1.109,3.746 -2.864,4.616l-74.185,36.767c-1.653,0.819 -3.612,0.726 -5.179,-0.246c-1.568,-0.973 -2.522,-2.687 -2.522,-4.532l0,-73.21c0,-1.845 0.954,-3.559 2.522,-4.532c1.567,-0.972 3.526,-1.065 5.179,-0.246l74.185,36.767Z" style="fill:#fff;"/>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

1
_icons/mejs-controls.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="400" height="120" viewBox="0 0 400 120"><style>.st0{fill:#fff;width:16px;height:16px}.st1,.st2{stroke-linecap:round}.st1{fill:none;stroke:#fff;stroke-width:1.5}.st2{stroke-width:2}.st2,.st3{fill:none;stroke:#fff}.st4{fill:#231f20}.st5{opacity:.75;enable-background:new}.st5,.st6{fill:none;stroke:#fff;stroke-width:5}.st7{opacity:.4}.st10,.st11,.st12,.st13,.st7,.st8,.st9{fill:#fff;enable-background:new}.st8{opacity:.6}.st9{opacity:.8}.st10{opacity:.9}.st11{opacity:.3}.st12{opacity:.5}.st13{opacity:.7}</style><path d="M16.5 8.5c.3.1.4.5.2.8-.1.1-.1.2-.2.2l-11.4 7c-.5.3-.8.1-.8-.5V2c0-.5.4-.8.8-.5l11.4 7z" class="st0"/><path d="M24 1h2.2c.6 0 1 .4 1 1v14c0 .6-.4 1-1 1H24c-.6 0-1-.4-1-1V2c0-.5.4-1 1-1zm9.8 0H36c.6 0 1 .4 1 1v14c0 .6-.4 1-1 1h-2.2c-.6 0-1-.4-1-1V2c0-.5.4-1 1-1z" class="st0"/><path d="M81 1.4c0-.6.4-1 1-1h5.4c.6 0 .7.3.3.7l-6 6c-.4.4-.7.3-.7-.3V1.4zm0 15.8c0 .6.4 1 1 1h5.4c.6 0 .7-.3.3-.7l-6-6c-.4-.4-.7-.3-.7.3v5.4zM98.8 1.4c0-.6-.4-1-1-1h-5.4c-.6 0-.7.3-.3.7l6 6c.4.4.7.3.7-.3V1.4zm0 15.8c0 .6-.4 1-1 1h-5.4c-.6 0-.7-.3-.3-.7l6-6c.4-.4.7-.3.7.3v5.4z" class="st0"/><path d="M112.7 5c0 .6.4 1 1 1h4.1c.6 0 .7-.3.3-.7L113.4.6c-.4-.4-.7-.3-.7.3V5zm-7.1 1c.6 0 1-.4 1-1V.9c0-.6-.3-.7-.7-.3l-4.7 4.7c-.4.4-.3.7.3.7h4.1zm1 7.1c0-.6-.4-1-1-1h-4.1c-.6 0-.7.3-.3.7l4.7 4.7c.4.4.7.3.7-.3v-4.1zm7.1-1c-.6 0-1 .4-1 1v4.1c0 .5.3.7.7.3l4.7-4.7c.4-.4.3-.7-.3-.7h-4.1z" class="st0"/><path d="M67 5.8c-.5.4-1.2.6-1.8.6H62c-.6 0-1 .4-1 1v5.7c0 .6.4 1 1 1h4.2c.3.2.5.4.8.6l3.5 2.6c.4.3.8.1.8-.4V3.5c0-.5-.4-.7-.8-.4L67 5.8z" class="st0"/><path d="M73.9 2.5s3.9-.8 3.9 7.7-3.9 7.8-3.9 7.8" class="st1"/><path d="M72.6 6.4s2.6-.4 2.6 3.8-2.6 3.9-2.6 3.9" class="st1"/><path d="M47 5.8c-.5.4-1.2.6-1.8.6H42c-.6 0-1 .4-1 1v5.7c0 .6.4 1 1 1h4.2c.3.2.5.4.8.6l3.5 2.6c.4.3.8.1.8-.4V3.5c0-.5-.4-.7-.8-.4L47 5.8z" class="st0"/><path d="M52.8 7l5.4 5.4m-5.4 0L58.2 7" class="st2"/><path d="M128.7 8.6c-6.2-4.2-6.5 7.8 0 3.9m6.5-3.9c-6.2-4.2-6.5 7.8 0 3.9" class="st3"/><path d="M122.2 3.4h15.7v13.1h-15.7V3.4zM120.8 2v15.7h18.3V2h-18.3z" class="st0"/><path d="M143.2 3h14c1.1 0 2 .9 2 2v10c0 1.1-.9 2-2 2h-14c-1.1 0-2-.9-2-2V5c0-1.1.9-2 2-2z" class="st0"/><path d="M146.4 13.8c-.8 0-1.6-.4-2.1-1-1.1-1.4-1-3.4.1-4.8.5-.6 2-1.7 4.6.2l-.6.8c-1.4-1-2.6-1.1-3.3-.3-.8 1-.8 2.4-.1 3.5.7.9 1.9.8 3.4-.1l.5.9c-.7.5-1.6.7-2.5.8zm7.5 0c-.8 0-1.6-.4-2.1-1-1.1-1.4-1-3.4.1-4.8.5-.6 2-1.7 4.6.2l-.5.8c-1.4-1-2.6-1.1-3.3-.3-.8 1-.8 2.4-.1 3.5.7.9 1.9.8 3.4-.1l.5.9c-.8.5-1.7.7-2.6.8z" class="st4"/><path d="M60.3 77c.6.2.8.8.6 1.4-.1.3-.3.5-.6.6L30 96.5c-1 .6-1.7.1-1.7-1v-35c0-1.1.8-1.5 1.7-1L60.3 77z" class="st0"/><path d="M2.5 79c0-20.7 16.8-37.5 37.5-37.5S77.5 58.3 77.5 79 60.7 116.5 40 116.5 2.5 99.7 2.5 79z" class="st5"/><path d="M140.3 77c.6.2.8.8.6 1.4-.1.3-.3.5-.6.6L110 96.5c-1 .6-1.7.1-1.7-1v-35c0-1.1.8-1.5 1.7-1L140.3 77z" class="st0"/><path d="M82.5 79c0-20.7 16.8-37.5 37.5-37.5s37.5 16.8 37.5 37.5-16.8 37.5-37.5 37.5S82.5 99.7 82.5 79z" class="st6"/><circle cx="201.9" cy="47.1" r="8.1" class="st0"/><circle cx="233.9" cy="79" r="5" class="st7"/><circle cx="201.9" cy="110.9" r="6" class="st8"/><circle cx="170.1" cy="79" r="7" class="st9"/><circle cx="178.2" cy="56.3" r="7.5" class="st10"/><circle cx="226.3" cy="56.1" r="4.5" class="st11"/><circle cx="225.8" cy="102.8" r="5.5" class="st12"/><circle cx="178.2" cy="102.8" r="6.5" class="st13"/><path d="M178 9.4c0 .4-.4.7-.9.7-.1 0-.2 0-.2-.1L172 8.2c-.5-.2-.6-.6-.1-.8l6.2-3.6c.5-.3.8-.1.7.5l-.8 5.1z" class="st0"/><path d="M169.4 15.9c-1 0-2-.2-2.9-.7-2-1-3.2-3-3.2-5.2.1-3.4 2.9-6 6.3-6 2.5.1 4.8 1.7 5.6 4.1l.1-.1 2.1 1.1c-.6-4.4-4.7-7.5-9.1-6.9-3.9.6-6.9 3.9-7 7.9 0 2.9 1.7 5.6 4.3 7 1.2.6 2.5.9 3.8 1 2.6 0 5-1.2 6.6-3.3l-1.8-.9c-1.2 1.2-3 2-4.8 2z" class="st0"/><path d="M183.4 3.2c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5-1.5-.7-1.5-1.5c0-.9.7-1.5 1.5-1.5zm5.1 0h8.5c.9 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5h-8.5c-.9 0-1.5-.7-1.5-1.5-.1-.9.6-1.5 1.5-1.5zm-5.1 5c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5-1.5-.7-1.5-1.5c0-.9.7-1.5 1.5-1.5zm5.1 0h8.5c.9 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5h-8.5c-.9 0-1.5-.7-1.5-1.5-.1-.9.6-1.5 1.5-1.5zm-5.1 5c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5-1.5-.7-1.5-1.5c0-.9.7-1.5 1.5-1.5zm5.1 0h8.5c.9 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5h-8.5c-.9 0-1.5-.7-1.5-1.5-.1-.9.6-1.5 1.5-1.5z" class="st0"/></svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

12
_icons/textBlack.svg Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 410 200" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M12.417,136.617c-1.853,-0 -3.339,-0.575 -4.457,-1.725c-1.118,-1.15 -1.677,-2.652 -1.677,-4.504l0,-56.063c0,-1.853 0.527,-3.29 1.582,-4.312c1.054,-1.023 2.507,-1.534 4.36,-1.534l33.638,0c3.897,0 5.845,1.661 5.845,4.984c0,3.258 -1.948,4.887 -5.845,4.887l-27.409,0l0,18.4l25.492,0c3.897,0 5.846,1.661 5.846,4.983c-0,3.259 -1.949,4.888 -5.846,4.888l-25.492,-0l0,23.767c0,1.852 -0.543,3.354 -1.629,4.504c-1.086,1.15 -2.556,1.725 -4.408,1.725Z" style="fill-rule:nonzero;"/>
<path d="M79.673,88.221c1.503,-0.128 2.688,0.223 3.555,1.054c0.868,0.831 1.301,2.076 1.301,3.737c0,1.725 -0.376,3.003 -1.127,3.834c-0.752,0.83 -2.11,1.373 -4.076,1.629l-2.601,0.287c-3.411,0.384 -5.911,1.662 -7.501,3.834c-1.59,2.172 -2.385,4.887 -2.385,8.146l0,20.125c0,1.852 -0.52,3.274 -1.561,4.264c-1.04,0.991 -2.341,1.486 -3.902,1.486c-1.561,-0 -2.847,-0.495 -3.858,-1.486c-1.012,-0.99 -1.518,-2.412 -1.518,-4.264l-0,-37.088c-0,-1.789 0.506,-3.162 1.518,-4.121c1.011,-0.958 2.269,-1.437 3.772,-1.437c1.503,-0 2.717,0.463 3.642,1.389c0.925,0.927 1.387,2.252 1.387,3.977l0,3.834c1.098,-2.811 2.732,-4.984 4.899,-6.517c2.168,-1.533 4.582,-2.396 7.241,-2.587l1.214,-0.096Z" style="fill-rule:nonzero;"/>
<path d="M130.691,123.2c1.136,-0 2.054,0.415 2.756,1.246c0.701,0.83 1.052,1.948 1.052,3.354c0,1.981 -1.236,3.642 -3.708,4.983c-2.272,1.214 -4.844,2.189 -7.717,2.923c-2.873,0.735 -5.612,1.102 -8.218,1.102c-7.884,0 -14.131,-2.172 -18.741,-6.516c-4.61,-4.345 -6.915,-10.286 -6.915,-17.825c0,-4.792 1.002,-9.041 3.007,-12.746c2.004,-3.706 4.827,-6.581 8.468,-8.625c3.641,-2.045 7.767,-3.067 12.377,-3.067c4.41,0 8.252,0.927 11.525,2.779c3.274,1.853 5.813,4.473 7.617,7.859c1.804,3.386 2.706,7.379 2.706,11.979c0,2.747 -1.269,4.121 -3.808,4.121l-29.565,-0c0.401,4.408 1.704,7.65 3.909,9.727c2.204,2.076 5.411,3.114 9.621,3.114c2.138,0 4.025,-0.255 5.662,-0.766c1.637,-0.511 3.491,-1.214 5.562,-2.109c2.005,-1.022 3.474,-1.533 4.41,-1.533Zm-17.338,-26.738c-3.408,0 -6.13,1.023 -8.168,3.067c-2.038,2.045 -3.257,4.983 -3.658,8.817l22.65,-0c-0.134,-3.897 -1.136,-6.852 -3.007,-8.865c-1.871,-2.012 -4.477,-3.019 -7.817,-3.019Z" style="fill-rule:nonzero;"/>
<path d="M185.049,123.2c1.136,-0 2.055,0.415 2.756,1.246c0.702,0.83 1.052,1.948 1.052,3.354c0,1.981 -1.236,3.642 -3.708,4.983c-2.271,1.214 -4.844,2.189 -7.717,2.923c-2.872,0.735 -5.612,1.102 -8.218,1.102c-7.883,0 -14.13,-2.172 -18.741,-6.516c-4.61,-4.345 -6.915,-10.286 -6.915,-17.825c0,-4.792 1.003,-9.041 3.007,-12.746c2.004,-3.706 4.827,-6.581 8.468,-8.625c3.642,-2.045 7.767,-3.067 12.378,-3.067c4.409,0 8.251,0.927 11.525,2.779c3.274,1.853 5.812,4.473 7.616,7.859c1.804,3.386 2.706,7.379 2.706,11.979c0,2.747 -1.269,4.121 -3.808,4.121l-29.565,-0c0.401,4.408 1.704,7.65 3.909,9.727c2.205,2.076 5.412,3.114 9.621,3.114c2.138,0 4.025,-0.255 5.662,-0.766c1.637,-0.511 3.491,-1.214 5.562,-2.109c2.005,-1.022 3.475,-1.533 4.41,-1.533Zm-17.338,-26.738c-3.407,0 -6.13,1.023 -8.168,3.067c-2.037,2.045 -3.257,4.983 -3.658,8.817l22.65,-0c-0.134,-3.897 -1.136,-6.852 -3.007,-8.865c-1.87,-2.012 -4.476,-3.019 -7.817,-3.019Z" style="fill-rule:nonzero;"/>
<path d="M222.658,136.617c-2.137,-0 -4.861,-0.672 -6.173,-2.016c-1.313,-1.343 -1.969,-3.135 -1.969,-5.374l0,-48.56l-13.833,0c-4.517,0 -6.775,-2.047 -6.775,-6.142c-0,-4.03 2.258,-6.046 6.775,-6.046l43.949,0c4.517,0 6.776,2.016 6.776,6.046c-0,4.095 -2.259,6.142 -6.776,6.142l-13.833,0l0,48.56c0,2.239 -0.64,4.031 -1.922,5.374c-1.282,1.344 -4.022,2.016 -6.219,2.016Z" style="fill-rule:nonzero;"/>
<path d="M285.741,88.529c2.236,0 4.009,0.607 5.319,1.821c1.31,1.214 1.964,2.875 1.964,4.983l0,35.171c0,1.981 -0.686,3.578 -2.06,4.792c-1.374,1.214 -3.147,1.821 -5.319,1.821c-2.044,-0 -3.673,-0.575 -4.887,-1.725c-1.214,-1.15 -1.821,-2.684 -1.821,-4.6l-0,-0.959c-1.47,2.428 -3.402,4.281 -5.798,5.559c-2.396,1.277 -5.095,1.916 -8.098,1.916c-5.942,0 -10.366,-1.645 -13.273,-4.935c-2.907,-3.29 -4.36,-8.258 -4.36,-14.902l-0,-22.138c-0,-2.108 0.655,-3.769 1.964,-4.983c1.31,-1.214 3.083,-1.821 5.319,-1.821c2.236,0 3.993,0.607 5.271,1.821c1.278,1.214 1.917,2.875 1.917,4.983l-0,22.425c-0,2.811 0.591,4.888 1.772,6.23c1.182,1.341 2.987,2.012 5.415,2.012c2.811,0 5.095,-0.958 6.852,-2.875c1.757,-1.917 2.636,-4.44 2.636,-7.571l-0,-20.221c-0,-2.108 0.638,-3.769 1.916,-4.983c1.278,-1.214 3.035,-1.821 5.271,-1.821Z" style="fill-rule:nonzero;"/>
<path d="M333.858,88.338c4.171,-0.001 7.853,0.99 11.046,2.97c3.193,1.981 5.686,4.808 7.478,8.482c1.792,3.673 2.688,7.938 2.688,12.793c0,4.856 -0.896,9.152 -2.688,12.89c-1.792,3.737 -4.301,6.644 -7.527,8.721c-3.226,2.076 -6.891,3.114 -10.997,3.114c-3.324,0 -6.321,-0.686 -8.993,-2.06c-2.672,-1.374 -4.725,-3.274 -6.159,-5.702l0,0.766c0,2.045 -0.651,3.69 -1.955,4.936c-1.303,1.246 -3.063,1.869 -5.278,1.869c-2.216,-0 -3.992,-0.623 -5.328,-1.869c-1.336,-1.246 -2.004,-2.891 -2.004,-4.936l0,-55.2c0,-1.98 0.701,-3.577 2.102,-4.791c1.401,-1.214 3.242,-1.821 5.523,-1.821c2.15,-0 3.877,0.575 5.181,1.725c1.303,1.15 1.955,2.683 1.955,4.6l-0,20.987c1.433,-2.363 3.47,-4.2 6.109,-5.51c2.64,-1.31 5.588,-1.965 8.847,-1.965Zm-4.301,37.95c3.454,0 6.126,-1.197 8.016,-3.593c1.889,-2.396 2.834,-5.766 2.834,-10.111c0,-4.28 -0.945,-7.555 -2.834,-9.823c-1.89,-2.268 -4.562,-3.402 -8.016,-3.402c-3.454,0 -6.126,1.166 -8.016,3.498c-1.89,2.332 -2.835,5.638 -2.835,9.919c0,4.344 0.945,7.683 2.835,10.015c1.89,2.332 4.562,3.498 8.016,3.498Z" style="fill-rule:nonzero;"/>
<path d="M405.013,122.55c1.385,0 2.511,0.511 3.377,1.533c0.865,1.023 1.298,2.332 1.298,3.929c0,1.087 -0.346,2.093 -1.039,3.019c-0.692,0.927 -1.662,1.709 -2.909,2.348c-2.354,1.15 -5.09,2.093 -8.207,2.827c-3.117,0.735 -5.991,1.102 -8.623,1.102c-5.541,0 -10.372,-0.99 -14.493,-2.971c-4.121,-1.98 -7.289,-4.807 -9.506,-8.481c-2.216,-3.673 -3.324,-8.002 -3.324,-12.985c-0,-4.792 1.073,-9.04 3.221,-12.746c2.147,-3.706 5.125,-6.597 8.934,-8.673c3.809,-2.076 8.138,-3.115 12.986,-3.115c4.641,0 8.71,0.943 12.208,2.828c3.497,1.884 6.216,4.568 8.155,8.05c1.939,3.482 2.909,7.554 2.909,12.218c0,1.406 -0.364,2.476 -1.091,3.211c-0.727,0.734 -1.749,1.102 -3.065,1.102l-29.089,-0c0.485,3.769 1.731,6.501 3.74,8.194c2.009,1.693 4.883,2.539 8.623,2.539c2.009,0 3.809,-0.223 5.402,-0.671c1.593,-0.447 3.359,-1.054 5.299,-1.821c0.969,-0.383 1.904,-0.718 2.805,-1.006c0.9,-0.287 1.697,-0.431 2.389,-0.431Zm-17.869,-24.246c-2.978,0 -5.368,0.879 -7.168,2.636c-1.801,1.757 -2.875,4.296 -3.221,7.618l20.051,0c-0.208,-3.386 -1.126,-5.941 -2.753,-7.666c-1.628,-1.725 -3.931,-2.588 -6.909,-2.588Z" style="fill-rule:nonzero;"/>
</svg>

After

Width:  |  Height:  |  Size: 6.8 KiB

10
_icons/textBlackSmall.svg Normal file
View File

@ -0,0 +1,10 @@
<svg width="100" height="49" viewBox="0 0 100 49" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M3.029,33.471c-0.452,0 -0.815,-0.141 -1.088,-0.422c-0.272,-0.282 -0.409,-0.65 -0.409,-1.104l0,-13.735c0,-0.454 0.129,-0.806 0.386,-1.057c0.257,-0.25 0.612,-0.376 1.064,-0.376l8.204,0c0.951,0 1.426,0.407 1.426,1.221c-0,0.799 -0.475,1.198 -1.426,1.198l-6.685,-0l-0,4.508l6.218,-0c0.95,-0 1.425,0.407 1.425,1.221c0,0.798 -0.475,1.197 -1.425,1.197l-6.218,0l-0,5.823c-0,0.454 -0.132,0.822 -0.397,1.104c-0.265,0.281 -0.624,0.422 -1.075,0.422Z" style="fill-rule:nonzero;"/>
<path d="M19.432,21.614c0.367,-0.031 0.656,0.055 0.868,0.258c0.211,0.204 0.317,0.509 0.317,0.916c-0,0.423 -0.092,0.736 -0.275,0.939c-0.183,0.204 -0.515,0.337 -0.994,0.399l-0.635,0.071c-0.832,0.094 -1.441,0.407 -1.829,0.939c-0.388,0.532 -0.582,1.197 -0.582,1.996l0,4.93c0,0.454 -0.127,0.803 -0.381,1.045c-0.253,0.243 -0.571,0.364 -0.951,0.364c-0.381,0 -0.695,-0.121 -0.941,-0.364c-0.247,-0.242 -0.37,-0.591 -0.37,-1.045l-0,-9.086c-0,-0.438 0.123,-0.775 0.37,-1.01c0.246,-0.234 0.553,-0.352 0.92,-0.352c0.366,0 0.662,0.114 0.888,0.34c0.226,0.228 0.338,0.552 0.338,0.975l0,0.939c0.268,-0.689 0.667,-1.221 1.195,-1.597c0.529,-0.375 1.118,-0.587 1.766,-0.633l0.296,-0.024Z" style="fill-rule:nonzero;"/>
<path d="M31.876,30.184c0.277,0 0.501,0.102 0.672,0.305c0.171,0.204 0.257,0.478 0.257,0.822c-0,0.485 -0.302,0.892 -0.905,1.221c-0.554,0.297 -1.181,0.536 -1.882,0.716c-0.701,0.18 -1.369,0.27 -2.004,0.27c-1.923,-0 -3.447,-0.532 -4.571,-1.596c-1.125,-1.065 -1.687,-2.521 -1.687,-4.368c0,-1.174 0.244,-2.215 0.734,-3.122c0.488,-0.908 1.177,-1.613 2.065,-2.113c0.888,-0.502 1.894,-0.752 3.019,-0.752c1.075,0 2.012,0.227 2.811,0.681c0.798,0.454 1.417,1.096 1.857,1.925c0.44,0.83 0.66,1.808 0.66,2.935c0,0.673 -0.309,1.01 -0.928,1.01l-7.211,-0c0.097,1.08 0.415,1.874 0.953,2.383c0.538,0.509 1.32,0.763 2.347,0.763c0.521,-0 0.981,-0.063 1.381,-0.188c0.399,-0.125 0.851,-0.297 1.356,-0.516c0.489,-0.251 0.848,-0.376 1.076,-0.376Zm-4.229,-6.551c-0.831,0 -1.495,0.251 -1.992,0.752c-0.497,0.501 -0.795,1.22 -0.892,2.16l5.524,-0c-0.033,-0.955 -0.277,-1.679 -0.733,-2.172c-0.457,-0.493 -1.092,-0.74 -1.907,-0.74Z" style="fill-rule:nonzero;"/>
<path d="M45.134,30.184c0.277,0 0.501,0.102 0.672,0.305c0.171,0.204 0.257,0.478 0.257,0.822c-0,0.485 -0.302,0.892 -0.905,1.221c-0.554,0.297 -1.181,0.536 -1.882,0.716c-0.7,0.18 -1.369,0.27 -2.004,0.27c-1.923,-0 -3.447,-0.532 -4.571,-1.596c-1.125,-1.065 -1.687,-2.521 -1.687,-4.368c0,-1.174 0.245,-2.215 0.734,-3.122c0.488,-0.908 1.177,-1.613 2.065,-2.113c0.888,-0.502 1.894,-0.752 3.019,-0.752c1.075,0 2.012,0.227 2.811,0.681c0.798,0.454 1.417,1.096 1.857,1.925c0.44,0.83 0.66,1.808 0.66,2.935c0,0.673 -0.309,1.01 -0.928,1.01l-7.211,-0c0.098,1.08 0.415,1.874 0.953,2.383c0.538,0.509 1.32,0.763 2.347,0.763c0.521,-0 0.981,-0.063 1.381,-0.188c0.399,-0.125 0.851,-0.297 1.356,-0.516c0.489,-0.251 0.848,-0.376 1.076,-0.376Zm-4.229,-6.551c-0.831,0 -1.495,0.251 -1.992,0.752c-0.497,0.501 -0.794,1.22 -0.892,2.16l5.524,-0c-0.033,-0.955 -0.277,-1.679 -0.733,-2.172c-0.456,-0.493 -1.092,-0.74 -1.907,-0.74Z" style="fill-rule:nonzero;"/>
<path d="M54.307,33.471c-0.521,0 -1.186,-0.164 -1.506,-0.494c-0.32,-0.329 -0.48,-0.768 -0.48,-1.316l-0,-11.898l-3.374,0c-1.102,0 -1.652,-0.501 -1.652,-1.504c-0,-0.988 0.55,-1.482 1.652,-1.482l10.719,0c1.102,0 1.653,0.494 1.653,1.482c0,1.003 -0.551,1.504 -1.653,1.504l-3.374,0l0,11.898c0,0.548 -0.156,0.987 -0.468,1.316c-0.313,0.33 -0.981,0.494 -1.517,0.494Z" style="fill-rule:nonzero;"/>
<path d="M69.693,21.69c0.545,-0 0.978,0.148 1.297,0.446c0.32,0.297 0.479,0.704 0.479,1.221l0,8.616c0,0.486 -0.167,0.877 -0.502,1.175c-0.335,0.297 -0.768,0.446 -1.297,0.446c-0.499,-0 -0.896,-0.141 -1.192,-0.423c-0.297,-0.282 -0.445,-0.658 -0.445,-1.127l0,-0.235c-0.358,0.595 -0.829,1.049 -1.414,1.362c-0.584,0.313 -1.242,0.469 -1.975,0.469c-1.449,0 -2.528,-0.403 -3.237,-1.209c-0.709,-0.806 -1.064,-2.023 -1.064,-3.651l0,-5.423c0,-0.517 0.16,-0.924 0.479,-1.221c0.32,-0.298 0.752,-0.446 1.298,-0.446c0.545,-0 0.974,0.148 1.285,0.446c0.312,0.297 0.468,0.704 0.468,1.221l-0,5.494c-0,0.688 0.144,1.197 0.432,1.526c0.288,0.329 0.729,0.493 1.321,0.493c0.685,0 1.243,-0.235 1.671,-0.704c0.429,-0.47 0.643,-1.088 0.643,-1.855l-0,-4.954c-0,-0.517 0.156,-0.924 0.467,-1.221c0.312,-0.298 0.741,-0.446 1.286,-0.446Z" style="fill-rule:nonzero;"/>
<path d="M81.429,21.643c1.017,-0 1.915,0.242 2.694,0.727c0.779,0.486 1.387,1.178 1.824,2.079c0.437,0.899 0.655,1.944 0.655,3.134c0,1.19 -0.218,2.242 -0.655,3.158c-0.437,0.915 -1.049,1.628 -1.836,2.137c-0.787,0.508 -1.681,0.762 -2.682,0.762c-0.811,0 -1.542,-0.168 -2.194,-0.504c-0.651,-0.337 -1.152,-0.802 -1.502,-1.397l0,0.187c0,0.501 -0.159,0.904 -0.477,1.21c-0.317,0.305 -0.747,0.458 -1.287,0.458c-0.54,-0 -0.974,-0.153 -1.299,-0.458c-0.326,-0.306 -0.489,-0.709 -0.489,-1.21l-0,-13.524c-0,-0.485 0.171,-0.876 0.512,-1.173c0.342,-0.298 0.791,-0.447 1.347,-0.447c0.525,0 0.946,0.141 1.264,0.423c0.318,0.282 0.477,0.657 0.477,1.127l-0,5.142c0.349,-0.579 0.846,-1.029 1.49,-1.35c0.644,-0.321 1.363,-0.481 2.158,-0.481l-0,-0Zm-1.049,9.298c0.842,-0 1.494,-0.294 1.955,-0.881c0.461,-0.587 0.691,-1.412 0.691,-2.477c0,-1.049 -0.23,-1.851 -0.691,-2.407c-0.461,-0.555 -1.113,-0.833 -1.955,-0.833c-0.843,-0 -1.494,0.286 -1.955,0.857c-0.461,0.571 -0.692,1.381 -0.692,2.43c0,1.064 0.231,1.882 0.692,2.454c0.461,0.571 1.112,0.857 1.955,0.857l-0,-0Z" style="fill-rule:nonzero;"/>
<path d="M98.784,30.025c0.337,-0 0.612,0.125 0.823,0.375c0.211,0.251 0.317,0.572 0.317,0.963c-0,0.266 -0.084,0.513 -0.254,0.74c-0.168,0.227 -0.405,0.418 -0.709,0.575c-0.574,0.282 -1.241,0.513 -2.002,0.692c-0.76,0.181 -1.461,0.27 -2.103,0.27c-1.351,0 -2.53,-0.242 -3.535,-0.727c-1.005,-0.486 -1.778,-1.178 -2.318,-2.078c-0.541,-0.9 -0.811,-1.961 -0.811,-3.182c-0,-1.174 0.262,-2.214 0.786,-3.122c0.523,-0.908 1.25,-1.617 2.179,-2.125c0.929,-0.509 1.984,-0.763 3.167,-0.763c1.132,-0 2.124,0.231 2.977,0.692c0.853,0.462 1.517,1.12 1.989,1.973c0.473,0.853 0.71,1.85 0.71,2.993c0,0.345 -0.089,0.607 -0.266,0.787c-0.177,0.18 -0.427,0.27 -0.748,0.27l-7.095,-0c0.119,0.923 0.423,1.593 0.913,2.007c0.49,0.415 1.191,0.622 2.103,0.622c0.49,0 0.929,-0.054 1.317,-0.164c0.389,-0.11 0.82,-0.258 1.293,-0.446c0.236,-0.094 0.464,-0.176 0.684,-0.247c0.219,-0.07 0.414,-0.105 0.583,-0.105Zm-4.359,-5.941c-0.726,0 -1.309,0.216 -1.748,0.646c-0.439,0.431 -0.701,1.053 -0.786,1.867l4.891,-0c-0.051,-0.83 -0.275,-1.456 -0.672,-1.878c-0.397,-0.423 -0.958,-0.635 -1.685,-0.635Z" style="fill-rule:nonzero;"/>
</svg>

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@ -0,0 +1,10 @@
<svg width="100" height="49" viewBox="0 0 100 49" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M3.029,33.471c-0.452,0 -0.815,-0.141 -1.088,-0.422c-0.272,-0.282 -0.409,-0.65 -0.409,-1.104l0,-13.735c0,-0.454 0.129,-0.806 0.386,-1.057c0.257,-0.25 0.612,-0.376 1.064,-0.376l8.204,0c0.951,0 1.426,0.407 1.426,1.221c-0,0.799 -0.475,1.198 -1.426,1.198l-6.685,-0l-0,4.508l6.218,-0c0.95,-0 1.425,0.407 1.425,1.221c0,0.798 -0.475,1.197 -1.425,1.197l-6.218,0l-0,5.823c-0,0.454 -0.132,0.822 -0.397,1.104c-0.265,0.281 -0.624,0.422 -1.075,0.422Z" style="fill:#1e1e2e;fill-rule:nonzero;"/>
<path d="M19.432,21.614c0.367,-0.031 0.656,0.055 0.868,0.258c0.211,0.204 0.317,0.509 0.317,0.916c-0,0.423 -0.092,0.736 -0.275,0.939c-0.183,0.204 -0.515,0.337 -0.994,0.399l-0.635,0.071c-0.832,0.094 -1.441,0.407 -1.829,0.939c-0.388,0.532 -0.582,1.197 -0.582,1.996l0,4.93c0,0.454 -0.127,0.803 -0.381,1.045c-0.253,0.243 -0.571,0.364 -0.951,0.364c-0.381,0 -0.695,-0.121 -0.941,-0.364c-0.247,-0.242 -0.37,-0.591 -0.37,-1.045l-0,-9.086c-0,-0.438 0.123,-0.775 0.37,-1.01c0.246,-0.234 0.553,-0.352 0.92,-0.352c0.366,0 0.662,0.114 0.888,0.34c0.226,0.228 0.338,0.552 0.338,0.975l0,0.939c0.268,-0.689 0.667,-1.221 1.195,-1.597c0.529,-0.375 1.118,-0.587 1.766,-0.633l0.296,-0.024Z" style="fill:#1e1e2e;fill-rule:nonzero;"/>
<path d="M31.876,30.184c0.277,0 0.501,0.102 0.672,0.305c0.171,0.204 0.257,0.478 0.257,0.822c-0,0.485 -0.302,0.892 -0.905,1.221c-0.554,0.297 -1.181,0.536 -1.882,0.716c-0.701,0.18 -1.369,0.27 -2.004,0.27c-1.923,-0 -3.447,-0.532 -4.571,-1.596c-1.125,-1.065 -1.687,-2.521 -1.687,-4.368c0,-1.174 0.244,-2.215 0.734,-3.122c0.488,-0.908 1.177,-1.613 2.065,-2.113c0.888,-0.502 1.894,-0.752 3.019,-0.752c1.075,0 2.012,0.227 2.811,0.681c0.798,0.454 1.417,1.096 1.857,1.925c0.44,0.83 0.66,1.808 0.66,2.935c0,0.673 -0.309,1.01 -0.928,1.01l-7.211,-0c0.097,1.08 0.415,1.874 0.953,2.383c0.538,0.509 1.32,0.763 2.347,0.763c0.521,-0 0.981,-0.063 1.381,-0.188c0.399,-0.125 0.851,-0.297 1.356,-0.516c0.489,-0.251 0.848,-0.376 1.076,-0.376Zm-4.229,-6.551c-0.831,0 -1.495,0.251 -1.992,0.752c-0.497,0.501 -0.795,1.22 -0.892,2.16l5.524,-0c-0.033,-0.955 -0.277,-1.679 -0.733,-2.172c-0.457,-0.493 -1.092,-0.74 -1.907,-0.74Z" style="fill:#1e1e2e;fill-rule:nonzero;"/>
<path d="M45.134,30.184c0.277,0 0.501,0.102 0.672,0.305c0.171,0.204 0.257,0.478 0.257,0.822c-0,0.485 -0.302,0.892 -0.905,1.221c-0.554,0.297 -1.181,0.536 -1.882,0.716c-0.7,0.18 -1.369,0.27 -2.004,0.27c-1.923,-0 -3.447,-0.532 -4.571,-1.596c-1.125,-1.065 -1.687,-2.521 -1.687,-4.368c0,-1.174 0.245,-2.215 0.734,-3.122c0.488,-0.908 1.177,-1.613 2.065,-2.113c0.888,-0.502 1.894,-0.752 3.019,-0.752c1.075,0 2.012,0.227 2.811,0.681c0.798,0.454 1.417,1.096 1.857,1.925c0.44,0.83 0.66,1.808 0.66,2.935c0,0.673 -0.309,1.01 -0.928,1.01l-7.211,-0c0.098,1.08 0.415,1.874 0.953,2.383c0.538,0.509 1.32,0.763 2.347,0.763c0.521,-0 0.981,-0.063 1.381,-0.188c0.399,-0.125 0.851,-0.297 1.356,-0.516c0.489,-0.251 0.848,-0.376 1.076,-0.376Zm-4.229,-6.551c-0.831,0 -1.495,0.251 -1.992,0.752c-0.497,0.501 -0.794,1.22 -0.892,2.16l5.524,-0c-0.033,-0.955 -0.277,-1.679 -0.733,-2.172c-0.456,-0.493 -1.092,-0.74 -1.907,-0.74Z" style="fill:#1e1e2e;fill-rule:nonzero;"/>
<path d="M54.307,33.471c-0.521,0 -1.186,-0.164 -1.506,-0.494c-0.32,-0.329 -0.48,-0.768 -0.48,-1.316l-0,-11.898l-3.374,0c-1.102,0 -1.652,-0.501 -1.652,-1.504c-0,-0.988 0.55,-1.482 1.652,-1.482l10.719,0c1.102,0 1.653,0.494 1.653,1.482c0,1.003 -0.551,1.504 -1.653,1.504l-3.374,0l0,11.898c0,0.548 -0.156,0.987 -0.468,1.316c-0.313,0.33 -0.981,0.494 -1.517,0.494Z" style="fill:#1e1e2e;fill-rule:nonzero;"/>
<path d="M69.693,21.69c0.545,-0 0.978,0.148 1.297,0.446c0.32,0.297 0.479,0.704 0.479,1.221l0,8.616c0,0.486 -0.167,0.877 -0.502,1.175c-0.335,0.297 -0.768,0.446 -1.297,0.446c-0.499,-0 -0.896,-0.141 -1.192,-0.423c-0.297,-0.282 -0.445,-0.658 -0.445,-1.127l0,-0.235c-0.358,0.595 -0.829,1.049 -1.414,1.362c-0.584,0.313 -1.242,0.469 -1.975,0.469c-1.449,0 -2.528,-0.403 -3.237,-1.209c-0.709,-0.806 -1.064,-2.023 -1.064,-3.651l0,-5.423c0,-0.517 0.16,-0.924 0.479,-1.221c0.32,-0.298 0.752,-0.446 1.298,-0.446c0.545,-0 0.974,0.148 1.285,0.446c0.312,0.297 0.468,0.704 0.468,1.221l-0,5.494c-0,0.688 0.144,1.197 0.432,1.526c0.288,0.329 0.729,0.493 1.321,0.493c0.685,0 1.243,-0.235 1.671,-0.704c0.429,-0.47 0.643,-1.088 0.643,-1.855l-0,-4.954c-0,-0.517 0.156,-0.924 0.467,-1.221c0.312,-0.298 0.741,-0.446 1.286,-0.446Z" style="fill:#1e1e2e;fill-rule:nonzero;"/>
<path d="M81.429,21.643c1.017,-0 1.915,0.242 2.694,0.727c0.779,0.486 1.387,1.178 1.824,2.079c0.437,0.899 0.655,1.944 0.655,3.134c0,1.19 -0.218,2.242 -0.655,3.158c-0.437,0.915 -1.049,1.628 -1.836,2.137c-0.787,0.508 -1.681,0.762 -2.682,0.762c-0.811,0 -1.542,-0.168 -2.194,-0.504c-0.651,-0.337 -1.152,-0.802 -1.502,-1.397l0,0.187c0,0.501 -0.159,0.904 -0.477,1.21c-0.317,0.305 -0.747,0.458 -1.287,0.458c-0.54,-0 -0.974,-0.153 -1.299,-0.458c-0.326,-0.306 -0.489,-0.709 -0.489,-1.21l-0,-13.524c-0,-0.485 0.171,-0.876 0.512,-1.173c0.342,-0.298 0.791,-0.447 1.347,-0.447c0.525,0 0.946,0.141 1.264,0.423c0.318,0.282 0.477,0.657 0.477,1.127l-0,5.142c0.349,-0.579 0.846,-1.029 1.49,-1.35c0.644,-0.321 1.363,-0.481 2.158,-0.481l-0,-0Zm-1.049,9.298c0.842,-0 1.494,-0.294 1.955,-0.881c0.461,-0.587 0.691,-1.412 0.691,-2.477c0,-1.049 -0.23,-1.851 -0.691,-2.407c-0.461,-0.555 -1.113,-0.833 -1.955,-0.833c-0.843,-0 -1.494,0.286 -1.955,0.857c-0.461,0.571 -0.692,1.381 -0.692,2.43c0,1.064 0.231,1.882 0.692,2.454c0.461,0.571 1.112,0.857 1.955,0.857l-0,-0Z" style="fill:#1e1e2e;fill-rule:nonzero;"/>
<path d="M98.784,30.025c0.337,-0 0.612,0.125 0.823,0.375c0.211,0.251 0.317,0.572 0.317,0.963c-0,0.266 -0.084,0.513 -0.254,0.74c-0.168,0.227 -0.405,0.418 -0.709,0.575c-0.574,0.282 -1.241,0.513 -2.002,0.692c-0.76,0.181 -1.461,0.27 -2.103,0.27c-1.351,0 -2.53,-0.242 -3.535,-0.727c-1.005,-0.486 -1.778,-1.178 -2.318,-2.078c-0.541,-0.9 -0.811,-1.961 -0.811,-3.182c-0,-1.174 0.262,-2.214 0.786,-3.122c0.523,-0.908 1.25,-1.617 2.179,-2.125c0.929,-0.509 1.984,-0.763 3.167,-0.763c1.132,-0 2.124,0.231 2.977,0.692c0.853,0.462 1.517,1.12 1.989,1.973c0.473,0.853 0.71,1.85 0.71,2.993c0,0.345 -0.089,0.607 -0.266,0.787c-0.177,0.18 -0.427,0.27 -0.748,0.27l-7.095,-0c0.119,0.923 0.423,1.593 0.913,2.007c0.49,0.415 1.191,0.622 2.103,0.622c0.49,0 0.929,-0.054 1.317,-0.164c0.389,-0.11 0.82,-0.258 1.293,-0.446c0.236,-0.094 0.464,-0.176 0.684,-0.247c0.219,-0.07 0.414,-0.105 0.583,-0.105Zm-4.359,-5.941c-0.726,0 -1.309,0.216 -1.748,0.646c-0.439,0.431 -0.701,1.053 -0.786,1.867l4.891,-0c-0.051,-0.83 -0.275,-1.456 -0.672,-1.878c-0.397,-0.423 -0.958,-0.635 -1.685,-0.635Z" style="fill:#1e1e2e;fill-rule:nonzero;"/>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@ -0,0 +1,10 @@
<svg width="100" height="49" viewBox="0 0 100 49" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M3.029,33.471c-0.452,0 -0.815,-0.141 -1.088,-0.422c-0.272,-0.282 -0.409,-0.65 -0.409,-1.104l0,-13.735c0,-0.454 0.129,-0.806 0.386,-1.057c0.257,-0.25 0.612,-0.376 1.064,-0.376l8.204,0c0.951,0 1.426,0.407 1.426,1.221c-0,0.799 -0.475,1.198 -1.426,1.198l-6.685,-0l-0,4.508l6.218,-0c0.95,-0 1.425,0.407 1.425,1.221c0,0.798 -0.475,1.197 -1.425,1.197l-6.218,0l-0,5.823c-0,0.454 -0.132,0.822 -0.397,1.104c-0.265,0.281 -0.624,0.422 -1.075,0.422Z" style="fill:#cdd6f4;fill-rule:nonzero;"/>
<path d="M19.432,21.614c0.367,-0.031 0.656,0.055 0.868,0.258c0.211,0.204 0.317,0.509 0.317,0.916c-0,0.423 -0.092,0.736 -0.275,0.939c-0.183,0.204 -0.515,0.337 -0.994,0.399l-0.635,0.071c-0.832,0.094 -1.441,0.407 -1.829,0.939c-0.388,0.532 -0.582,1.197 -0.582,1.996l0,4.93c0,0.454 -0.127,0.803 -0.381,1.045c-0.253,0.243 -0.571,0.364 -0.951,0.364c-0.381,0 -0.695,-0.121 -0.941,-0.364c-0.247,-0.242 -0.37,-0.591 -0.37,-1.045l-0,-9.086c-0,-0.438 0.123,-0.775 0.37,-1.01c0.246,-0.234 0.553,-0.352 0.92,-0.352c0.366,0 0.662,0.114 0.888,0.34c0.226,0.228 0.338,0.552 0.338,0.975l0,0.939c0.268,-0.689 0.667,-1.221 1.195,-1.597c0.529,-0.375 1.118,-0.587 1.766,-0.633l0.296,-0.024Z" style="fill:#cdd6f4;fill-rule:nonzero;"/>
<path d="M31.876,30.184c0.277,0 0.501,0.102 0.672,0.305c0.171,0.204 0.257,0.478 0.257,0.822c-0,0.485 -0.302,0.892 -0.905,1.221c-0.554,0.297 -1.181,0.536 -1.882,0.716c-0.701,0.18 -1.369,0.27 -2.004,0.27c-1.923,-0 -3.447,-0.532 -4.571,-1.596c-1.125,-1.065 -1.687,-2.521 -1.687,-4.368c0,-1.174 0.244,-2.215 0.734,-3.122c0.488,-0.908 1.177,-1.613 2.065,-2.113c0.888,-0.502 1.894,-0.752 3.019,-0.752c1.075,0 2.012,0.227 2.811,0.681c0.798,0.454 1.417,1.096 1.857,1.925c0.44,0.83 0.66,1.808 0.66,2.935c0,0.673 -0.309,1.01 -0.928,1.01l-7.211,-0c0.097,1.08 0.415,1.874 0.953,2.383c0.538,0.509 1.32,0.763 2.347,0.763c0.521,-0 0.981,-0.063 1.381,-0.188c0.399,-0.125 0.851,-0.297 1.356,-0.516c0.489,-0.251 0.848,-0.376 1.076,-0.376Zm-4.229,-6.551c-0.831,0 -1.495,0.251 -1.992,0.752c-0.497,0.501 -0.795,1.22 -0.892,2.16l5.524,-0c-0.033,-0.955 -0.277,-1.679 -0.733,-2.172c-0.457,-0.493 -1.092,-0.74 -1.907,-0.74Z" style="fill:#cdd6f4;fill-rule:nonzero;"/>
<path d="M45.134,30.184c0.277,0 0.501,0.102 0.672,0.305c0.171,0.204 0.257,0.478 0.257,0.822c-0,0.485 -0.302,0.892 -0.905,1.221c-0.554,0.297 -1.181,0.536 -1.882,0.716c-0.7,0.18 -1.369,0.27 -2.004,0.27c-1.923,-0 -3.447,-0.532 -4.571,-1.596c-1.125,-1.065 -1.687,-2.521 -1.687,-4.368c0,-1.174 0.245,-2.215 0.734,-3.122c0.488,-0.908 1.177,-1.613 2.065,-2.113c0.888,-0.502 1.894,-0.752 3.019,-0.752c1.075,0 2.012,0.227 2.811,0.681c0.798,0.454 1.417,1.096 1.857,1.925c0.44,0.83 0.66,1.808 0.66,2.935c0,0.673 -0.309,1.01 -0.928,1.01l-7.211,-0c0.098,1.08 0.415,1.874 0.953,2.383c0.538,0.509 1.32,0.763 2.347,0.763c0.521,-0 0.981,-0.063 1.381,-0.188c0.399,-0.125 0.851,-0.297 1.356,-0.516c0.489,-0.251 0.848,-0.376 1.076,-0.376Zm-4.229,-6.551c-0.831,0 -1.495,0.251 -1.992,0.752c-0.497,0.501 -0.794,1.22 -0.892,2.16l5.524,-0c-0.033,-0.955 -0.277,-1.679 -0.733,-2.172c-0.456,-0.493 -1.092,-0.74 -1.907,-0.74Z" style="fill:#cdd6f4;fill-rule:nonzero;"/>
<path d="M54.307,33.471c-0.521,0 -1.186,-0.164 -1.506,-0.494c-0.32,-0.329 -0.48,-0.768 -0.48,-1.316l-0,-11.898l-3.374,0c-1.102,0 -1.652,-0.501 -1.652,-1.504c-0,-0.988 0.55,-1.482 1.652,-1.482l10.719,0c1.102,0 1.653,0.494 1.653,1.482c0,1.003 -0.551,1.504 -1.653,1.504l-3.374,0l0,11.898c0,0.548 -0.156,0.987 -0.468,1.316c-0.313,0.33 -0.981,0.494 -1.517,0.494Z" style="fill:#cdd6f4;fill-rule:nonzero;"/>
<path d="M69.693,21.69c0.545,-0 0.978,0.148 1.297,0.446c0.32,0.297 0.479,0.704 0.479,1.221l0,8.616c0,0.486 -0.167,0.877 -0.502,1.175c-0.335,0.297 -0.768,0.446 -1.297,0.446c-0.499,-0 -0.896,-0.141 -1.192,-0.423c-0.297,-0.282 -0.445,-0.658 -0.445,-1.127l0,-0.235c-0.358,0.595 -0.829,1.049 -1.414,1.362c-0.584,0.313 -1.242,0.469 -1.975,0.469c-1.449,0 -2.528,-0.403 -3.237,-1.209c-0.709,-0.806 -1.064,-2.023 -1.064,-3.651l0,-5.423c0,-0.517 0.16,-0.924 0.479,-1.221c0.32,-0.298 0.752,-0.446 1.298,-0.446c0.545,-0 0.974,0.148 1.285,0.446c0.312,0.297 0.468,0.704 0.468,1.221l-0,5.494c-0,0.688 0.144,1.197 0.432,1.526c0.288,0.329 0.729,0.493 1.321,0.493c0.685,0 1.243,-0.235 1.671,-0.704c0.429,-0.47 0.643,-1.088 0.643,-1.855l-0,-4.954c-0,-0.517 0.156,-0.924 0.467,-1.221c0.312,-0.298 0.741,-0.446 1.286,-0.446Z" style="fill:#cdd6f4;fill-rule:nonzero;"/>
<path d="M81.429,21.643c1.017,-0 1.915,0.242 2.694,0.727c0.779,0.486 1.387,1.178 1.824,2.079c0.437,0.899 0.655,1.944 0.655,3.134c0,1.19 -0.218,2.242 -0.655,3.158c-0.437,0.915 -1.049,1.628 -1.836,2.137c-0.787,0.508 -1.681,0.762 -2.682,0.762c-0.811,0 -1.542,-0.168 -2.194,-0.504c-0.651,-0.337 -1.152,-0.802 -1.502,-1.397l0,0.187c0,0.501 -0.159,0.904 -0.477,1.21c-0.317,0.305 -0.747,0.458 -1.287,0.458c-0.54,-0 -0.974,-0.153 -1.299,-0.458c-0.326,-0.306 -0.489,-0.709 -0.489,-1.21l-0,-13.524c-0,-0.485 0.171,-0.876 0.512,-1.173c0.342,-0.298 0.791,-0.447 1.347,-0.447c0.525,0 0.946,0.141 1.264,0.423c0.318,0.282 0.477,0.657 0.477,1.127l-0,5.142c0.349,-0.579 0.846,-1.029 1.49,-1.35c0.644,-0.321 1.363,-0.481 2.158,-0.481l-0,-0Zm-1.049,9.298c0.842,-0 1.494,-0.294 1.955,-0.881c0.461,-0.587 0.691,-1.412 0.691,-2.477c0,-1.049 -0.23,-1.851 -0.691,-2.407c-0.461,-0.555 -1.113,-0.833 -1.955,-0.833c-0.843,-0 -1.494,0.286 -1.955,0.857c-0.461,0.571 -0.692,1.381 -0.692,2.43c0,1.064 0.231,1.882 0.692,2.454c0.461,0.571 1.112,0.857 1.955,0.857l-0,-0Z" style="fill:#cdd6f4;fill-rule:nonzero;"/>
<path d="M98.784,30.025c0.337,-0 0.612,0.125 0.823,0.375c0.211,0.251 0.317,0.572 0.317,0.963c-0,0.266 -0.084,0.513 -0.254,0.74c-0.168,0.227 -0.405,0.418 -0.709,0.575c-0.574,0.282 -1.241,0.513 -2.002,0.692c-0.76,0.181 -1.461,0.27 -2.103,0.27c-1.351,0 -2.53,-0.242 -3.535,-0.727c-1.005,-0.486 -1.778,-1.178 -2.318,-2.078c-0.541,-0.9 -0.811,-1.961 -0.811,-3.182c-0,-1.174 0.262,-2.214 0.786,-3.122c0.523,-0.908 1.25,-1.617 2.179,-2.125c0.929,-0.509 1.984,-0.763 3.167,-0.763c1.132,-0 2.124,0.231 2.977,0.692c0.853,0.462 1.517,1.12 1.989,1.973c0.473,0.853 0.71,1.85 0.71,2.993c0,0.345 -0.089,0.607 -0.266,0.787c-0.177,0.18 -0.427,0.27 -0.748,0.27l-7.095,-0c0.119,0.923 0.423,1.593 0.913,2.007c0.49,0.415 1.191,0.622 2.103,0.622c0.49,0 0.929,-0.054 1.317,-0.164c0.389,-0.11 0.82,-0.258 1.293,-0.446c0.236,-0.094 0.464,-0.176 0.684,-0.247c0.219,-0.07 0.414,-0.105 0.583,-0.105Zm-4.359,-5.941c-0.726,0 -1.309,0.216 -1.748,0.646c-0.439,0.431 -0.701,1.053 -0.786,1.867l4.891,-0c-0.051,-0.83 -0.275,-1.456 -0.672,-1.878c-0.397,-0.423 -0.958,-0.635 -1.685,-0.635Z" style="fill:#cdd6f4;fill-rule:nonzero;"/>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

10
_icons/textColor.svg Normal file
View File

@ -0,0 +1,10 @@
<svg width="410" height="200" viewBox="0 0 410 200" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M12.417,136.617c-1.853,-0 -3.339,-0.575 -4.457,-1.725c-1.118,-1.15 -1.677,-2.652 -1.677,-4.504l0,-56.063c0,-1.853 0.527,-3.29 1.582,-4.312c1.054,-1.023 2.507,-1.534 4.36,-1.534l33.638,0c3.897,0 5.845,1.661 5.845,4.984c0,3.258 -1.948,4.887 -5.845,4.887l-27.409,0l0,18.4l25.492,0c3.897,0 5.846,1.661 5.846,4.983c-0,3.259 -1.949,4.888 -5.846,4.888l-25.492,-0l0,23.767c0,1.852 -0.543,3.354 -1.629,4.504c-1.086,1.15 -2.556,1.725 -4.408,1.725Z" style="fill:#f33;fill-rule:nonzero;"/>
<path d="M79.673,88.221c1.503,-0.128 2.688,0.223 3.555,1.054c0.868,0.831 1.301,2.076 1.301,3.737c0,1.725 -0.376,3.003 -1.127,3.834c-0.752,0.83 -2.11,1.373 -4.076,1.629l-2.601,0.287c-3.411,0.384 -5.911,1.662 -7.501,3.834c-1.59,2.172 -2.385,4.887 -2.385,8.146l0,20.125c0,1.852 -0.52,3.274 -1.561,4.264c-1.04,0.991 -2.341,1.486 -3.902,1.486c-1.561,-0 -2.847,-0.495 -3.858,-1.486c-1.012,-0.99 -1.518,-2.412 -1.518,-4.264l-0,-37.088c-0,-1.789 0.506,-3.162 1.518,-4.121c1.011,-0.958 2.269,-1.437 3.772,-1.437c1.503,-0 2.717,0.463 3.642,1.389c0.925,0.927 1.387,2.252 1.387,3.977l0,3.834c1.098,-2.811 2.732,-4.984 4.899,-6.517c2.168,-1.533 4.582,-2.396 7.241,-2.587l1.214,-0.096Z" style="fill:#f33;fill-rule:nonzero;"/>
<path d="M130.691,123.2c1.136,-0 2.054,0.415 2.756,1.246c0.701,0.83 1.052,1.948 1.052,3.354c0,1.981 -1.236,3.642 -3.708,4.983c-2.272,1.214 -4.844,2.189 -7.717,2.923c-2.873,0.735 -5.612,1.102 -8.218,1.102c-7.884,0 -14.131,-2.172 -18.741,-6.516c-4.61,-4.345 -6.915,-10.286 -6.915,-17.825c0,-4.792 1.002,-9.041 3.007,-12.746c2.004,-3.706 4.827,-6.581 8.468,-8.625c3.641,-2.045 7.767,-3.067 12.377,-3.067c4.41,0 8.252,0.927 11.525,2.779c3.274,1.853 5.813,4.473 7.617,7.859c1.804,3.386 2.706,7.379 2.706,11.979c0,2.747 -1.269,4.121 -3.808,4.121l-29.565,-0c0.401,4.408 1.704,7.65 3.909,9.727c2.204,2.076 5.411,3.114 9.621,3.114c2.138,0 4.025,-0.255 5.662,-0.766c1.637,-0.511 3.491,-1.214 5.562,-2.109c2.005,-1.022 3.474,-1.533 4.41,-1.533Zm-17.338,-26.738c-3.408,0 -6.13,1.023 -8.168,3.067c-2.038,2.045 -3.257,4.983 -3.658,8.817l22.65,-0c-0.134,-3.897 -1.136,-6.852 -3.007,-8.865c-1.871,-2.012 -4.477,-3.019 -7.817,-3.019Z" style="fill:#f33;fill-rule:nonzero;"/>
<path d="M185.049,123.2c1.136,-0 2.055,0.415 2.756,1.246c0.702,0.83 1.052,1.948 1.052,3.354c0,1.981 -1.236,3.642 -3.708,4.983c-2.271,1.214 -4.844,2.189 -7.717,2.923c-2.872,0.735 -5.612,1.102 -8.218,1.102c-7.883,0 -14.13,-2.172 -18.741,-6.516c-4.61,-4.345 -6.915,-10.286 -6.915,-17.825c0,-4.792 1.003,-9.041 3.007,-12.746c2.004,-3.706 4.827,-6.581 8.468,-8.625c3.642,-2.045 7.767,-3.067 12.378,-3.067c4.409,0 8.251,0.927 11.525,2.779c3.274,1.853 5.812,4.473 7.616,7.859c1.804,3.386 2.706,7.379 2.706,11.979c0,2.747 -1.269,4.121 -3.808,4.121l-29.565,-0c0.401,4.408 1.704,7.65 3.909,9.727c2.205,2.076 5.412,3.114 9.621,3.114c2.138,0 4.025,-0.255 5.662,-0.766c1.637,-0.511 3.491,-1.214 5.562,-2.109c2.005,-1.022 3.475,-1.533 4.41,-1.533Zm-17.338,-26.738c-3.407,0 -6.13,1.023 -8.168,3.067c-2.037,2.045 -3.257,4.983 -3.658,8.817l22.65,-0c-0.134,-3.897 -1.136,-6.852 -3.007,-8.865c-1.87,-2.012 -4.476,-3.019 -7.817,-3.019Z" style="fill:#f33;fill-rule:nonzero;"/>
<path d="M222.658,136.617c-2.137,-0 -4.861,-0.672 -6.173,-2.016c-1.313,-1.343 -1.969,-3.135 -1.969,-5.374l0,-48.56l-13.833,0c-4.517,0 -6.775,-2.047 -6.775,-6.142c-0,-4.03 2.258,-6.046 6.775,-6.046l43.949,0c4.517,0 6.776,2.016 6.776,6.046c-0,4.095 -2.259,6.142 -6.776,6.142l-13.833,0l0,48.56c0,2.239 -0.64,4.031 -1.922,5.374c-1.282,1.344 -4.022,2.016 -6.219,2.016Z" style="fill:#29abe1;fill-rule:nonzero;"/>
<path d="M285.741,88.529c2.236,0 4.009,0.607 5.319,1.821c1.31,1.214 1.964,2.875 1.964,4.983l0,35.171c0,1.981 -0.686,3.578 -2.06,4.792c-1.374,1.214 -3.147,1.821 -5.319,1.821c-2.044,-0 -3.673,-0.575 -4.887,-1.725c-1.214,-1.15 -1.821,-2.684 -1.821,-4.6l-0,-0.959c-1.47,2.428 -3.402,4.281 -5.798,5.559c-2.396,1.277 -5.095,1.916 -8.098,1.916c-5.942,0 -10.366,-1.645 -13.273,-4.935c-2.907,-3.29 -4.36,-8.258 -4.36,-14.902l-0,-22.138c-0,-2.108 0.655,-3.769 1.964,-4.983c1.31,-1.214 3.083,-1.821 5.319,-1.821c2.236,0 3.993,0.607 5.271,1.821c1.278,1.214 1.917,2.875 1.917,4.983l-0,22.425c-0,2.811 0.591,4.888 1.772,6.23c1.182,1.341 2.987,2.012 5.415,2.012c2.811,0 5.095,-0.958 6.852,-2.875c1.757,-1.917 2.636,-4.44 2.636,-7.571l-0,-20.221c-0,-2.108 0.638,-3.769 1.916,-4.983c1.278,-1.214 3.035,-1.821 5.271,-1.821Z" style="fill:#29abe1;fill-rule:nonzero;"/>
<path d="M333.858,88.338c4.171,-0.001 7.853,0.99 11.046,2.97c3.193,1.981 5.686,4.808 7.478,8.482c1.792,3.673 2.688,7.938 2.688,12.793c0,4.856 -0.896,9.152 -2.688,12.89c-1.792,3.737 -4.301,6.644 -7.527,8.721c-3.226,2.076 -6.891,3.114 -10.997,3.114c-3.324,0 -6.321,-0.686 -8.993,-2.06c-2.672,-1.374 -4.725,-3.274 -6.159,-5.702l0,0.766c0,2.045 -0.651,3.69 -1.955,4.936c-1.303,1.246 -3.063,1.869 -5.278,1.869c-2.216,-0 -3.992,-0.623 -5.328,-1.869c-1.336,-1.246 -2.004,-2.891 -2.004,-4.936l0,-55.2c0,-1.98 0.701,-3.577 2.102,-4.791c1.401,-1.214 3.242,-1.821 5.523,-1.821c2.15,-0 3.877,0.575 5.181,1.725c1.303,1.15 1.955,2.683 1.955,4.6l-0,20.987c1.433,-2.363 3.47,-4.2 6.109,-5.51c2.64,-1.31 5.588,-1.965 8.847,-1.965Zm-4.301,37.95c3.454,0 6.126,-1.197 8.016,-3.593c1.889,-2.396 2.834,-5.766 2.834,-10.111c0,-4.28 -0.945,-7.555 -2.834,-9.823c-1.89,-2.268 -4.562,-3.402 -8.016,-3.402c-3.454,0 -6.126,1.166 -8.016,3.498c-1.89,2.332 -2.835,5.638 -2.835,9.919c0,4.344 0.945,7.683 2.835,10.015c1.89,2.332 4.562,3.498 8.016,3.498Z" style="fill:#29abe1;fill-rule:nonzero;"/>
<path d="M405.013,122.55c1.385,0 2.511,0.511 3.377,1.533c0.865,1.023 1.298,2.332 1.298,3.929c0,1.087 -0.346,2.093 -1.039,3.019c-0.692,0.927 -1.662,1.709 -2.909,2.348c-2.354,1.15 -5.09,2.093 -8.207,2.827c-3.117,0.735 -5.991,1.102 -8.623,1.102c-5.541,0 -10.372,-0.99 -14.493,-2.971c-4.121,-1.98 -7.289,-4.807 -9.506,-8.481c-2.216,-3.673 -3.324,-8.002 -3.324,-12.985c-0,-4.792 1.073,-9.04 3.221,-12.746c2.147,-3.706 5.125,-6.597 8.934,-8.673c3.809,-2.076 8.138,-3.115 12.986,-3.115c4.641,0 8.71,0.943 12.208,2.828c3.497,1.884 6.216,4.568 8.155,8.05c1.939,3.482 2.909,7.554 2.909,12.218c0,1.406 -0.364,2.476 -1.091,3.211c-0.727,0.734 -1.749,1.102 -3.065,1.102l-29.089,-0c0.485,3.769 1.731,6.501 3.74,8.194c2.009,1.693 4.883,2.539 8.623,2.539c2.009,0 3.809,-0.223 5.402,-0.671c1.593,-0.447 3.359,-1.054 5.299,-1.821c0.969,-0.383 1.904,-0.718 2.805,-1.006c0.9,-0.287 1.697,-0.431 2.389,-0.431Zm-17.869,-24.246c-2.978,0 -5.368,0.879 -7.168,2.636c-1.801,1.757 -2.875,4.296 -3.221,7.618l20.051,0c-0.208,-3.386 -1.126,-5.941 -2.753,-7.666c-1.628,-1.725 -3.931,-2.588 -6.909,-2.588Z" style="fill:#29abe1;fill-rule:nonzero;"/>
</svg>

After

Width:  |  Height:  |  Size: 6.7 KiB

10
_icons/textColorSmall.svg Normal file
View File

@ -0,0 +1,10 @@
<svg width="100" height="49" viewBox="0 0 100 49" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M3.029,33.471c-0.452,0 -0.815,-0.141 -1.088,-0.422c-0.272,-0.282 -0.409,-0.65 -0.409,-1.104l0,-13.735c0,-0.454 0.129,-0.806 0.386,-1.057c0.257,-0.25 0.612,-0.376 1.064,-0.376l8.204,0c0.951,0 1.426,0.407 1.426,1.221c-0,0.799 -0.475,1.198 -1.426,1.198l-6.685,-0l-0,4.508l6.218,-0c0.95,-0 1.425,0.407 1.425,1.221c0,0.798 -0.475,1.197 -1.425,1.197l-6.218,0l-0,5.823c-0,0.454 -0.132,0.822 -0.397,1.104c-0.265,0.281 -0.624,0.422 -1.075,0.422Z" style="fill:#f33;fill-rule:nonzero;"/>
<path d="M19.432,21.614c0.367,-0.031 0.656,0.055 0.868,0.258c0.211,0.204 0.317,0.509 0.317,0.916c-0,0.423 -0.092,0.736 -0.275,0.939c-0.183,0.204 -0.515,0.337 -0.994,0.399l-0.635,0.071c-0.832,0.094 -1.441,0.407 -1.829,0.939c-0.388,0.532 -0.582,1.197 -0.582,1.996l0,4.93c0,0.454 -0.127,0.803 -0.381,1.045c-0.253,0.243 -0.571,0.364 -0.951,0.364c-0.381,0 -0.695,-0.121 -0.941,-0.364c-0.247,-0.242 -0.37,-0.591 -0.37,-1.045l-0,-9.086c-0,-0.438 0.123,-0.775 0.37,-1.01c0.246,-0.234 0.553,-0.352 0.92,-0.352c0.366,0 0.662,0.114 0.888,0.34c0.226,0.228 0.338,0.552 0.338,0.975l0,0.939c0.268,-0.689 0.667,-1.221 1.195,-1.597c0.529,-0.375 1.118,-0.587 1.766,-0.633l0.296,-0.024Z" style="fill:#f33;fill-rule:nonzero;"/>
<path d="M31.876,30.184c0.277,0 0.501,0.102 0.672,0.305c0.171,0.204 0.257,0.478 0.257,0.822c-0,0.485 -0.302,0.892 -0.905,1.221c-0.554,0.297 -1.181,0.536 -1.882,0.716c-0.701,0.18 -1.369,0.27 -2.004,0.27c-1.923,-0 -3.447,-0.532 -4.571,-1.596c-1.125,-1.065 -1.687,-2.521 -1.687,-4.368c0,-1.174 0.244,-2.215 0.734,-3.122c0.488,-0.908 1.177,-1.613 2.065,-2.113c0.888,-0.502 1.894,-0.752 3.019,-0.752c1.075,0 2.012,0.227 2.811,0.681c0.798,0.454 1.417,1.096 1.857,1.925c0.44,0.83 0.66,1.808 0.66,2.935c0,0.673 -0.309,1.01 -0.928,1.01l-7.211,-0c0.097,1.08 0.415,1.874 0.953,2.383c0.538,0.509 1.32,0.763 2.347,0.763c0.521,-0 0.981,-0.063 1.381,-0.188c0.399,-0.125 0.851,-0.297 1.356,-0.516c0.489,-0.251 0.848,-0.376 1.076,-0.376Zm-4.229,-6.551c-0.831,0 -1.495,0.251 -1.992,0.752c-0.497,0.501 -0.795,1.22 -0.892,2.16l5.524,-0c-0.033,-0.955 -0.277,-1.679 -0.733,-2.172c-0.457,-0.493 -1.092,-0.74 -1.907,-0.74Z" style="fill:#f33;fill-rule:nonzero;"/>
<path d="M45.134,30.184c0.277,0 0.501,0.102 0.672,0.305c0.171,0.204 0.257,0.478 0.257,0.822c-0,0.485 -0.302,0.892 -0.905,1.221c-0.554,0.297 -1.181,0.536 -1.882,0.716c-0.7,0.18 -1.369,0.27 -2.004,0.27c-1.923,-0 -3.447,-0.532 -4.571,-1.596c-1.125,-1.065 -1.687,-2.521 -1.687,-4.368c0,-1.174 0.245,-2.215 0.734,-3.122c0.488,-0.908 1.177,-1.613 2.065,-2.113c0.888,-0.502 1.894,-0.752 3.019,-0.752c1.075,0 2.012,0.227 2.811,0.681c0.798,0.454 1.417,1.096 1.857,1.925c0.44,0.83 0.66,1.808 0.66,2.935c0,0.673 -0.309,1.01 -0.928,1.01l-7.211,-0c0.098,1.08 0.415,1.874 0.953,2.383c0.538,0.509 1.32,0.763 2.347,0.763c0.521,-0 0.981,-0.063 1.381,-0.188c0.399,-0.125 0.851,-0.297 1.356,-0.516c0.489,-0.251 0.848,-0.376 1.076,-0.376Zm-4.229,-6.551c-0.831,0 -1.495,0.251 -1.992,0.752c-0.497,0.501 -0.794,1.22 -0.892,2.16l5.524,-0c-0.033,-0.955 -0.277,-1.679 -0.733,-2.172c-0.456,-0.493 -1.092,-0.74 -1.907,-0.74Z" style="fill:#f33;fill-rule:nonzero;"/>
<path d="M54.307,33.471c-0.521,0 -1.186,-0.164 -1.506,-0.494c-0.32,-0.329 -0.48,-0.768 -0.48,-1.316l-0,-11.898l-3.374,0c-1.102,0 -1.652,-0.501 -1.652,-1.504c-0,-0.988 0.55,-1.482 1.652,-1.482l10.719,0c1.102,0 1.653,0.494 1.653,1.482c0,1.003 -0.551,1.504 -1.653,1.504l-3.374,0l0,11.898c0,0.548 -0.156,0.987 -0.468,1.316c-0.313,0.33 -0.981,0.494 -1.517,0.494Z" style="fill:#29abe1;fill-rule:nonzero;"/>
<path d="M69.693,21.69c0.545,-0 0.978,0.148 1.297,0.446c0.32,0.297 0.479,0.704 0.479,1.221l0,8.616c0,0.486 -0.167,0.877 -0.502,1.175c-0.335,0.297 -0.768,0.446 -1.297,0.446c-0.499,-0 -0.896,-0.141 -1.192,-0.423c-0.297,-0.282 -0.445,-0.658 -0.445,-1.127l0,-0.235c-0.358,0.595 -0.829,1.049 -1.414,1.362c-0.584,0.313 -1.242,0.469 -1.975,0.469c-1.449,0 -2.528,-0.403 -3.237,-1.209c-0.709,-0.806 -1.064,-2.023 -1.064,-3.651l0,-5.423c0,-0.517 0.16,-0.924 0.479,-1.221c0.32,-0.298 0.752,-0.446 1.298,-0.446c0.545,-0 0.974,0.148 1.285,0.446c0.312,0.297 0.468,0.704 0.468,1.221l-0,5.494c-0,0.688 0.144,1.197 0.432,1.526c0.288,0.329 0.729,0.493 1.321,0.493c0.685,0 1.243,-0.235 1.671,-0.704c0.429,-0.47 0.643,-1.088 0.643,-1.855l-0,-4.954c-0,-0.517 0.156,-0.924 0.467,-1.221c0.312,-0.298 0.741,-0.446 1.286,-0.446Z" style="fill:#29abe1;fill-rule:nonzero;"/>
<path d="M81.429,21.643c1.017,-0 1.915,0.242 2.694,0.727c0.779,0.486 1.387,1.178 1.824,2.079c0.437,0.899 0.655,1.944 0.655,3.134c0,1.19 -0.218,2.242 -0.655,3.158c-0.437,0.915 -1.049,1.628 -1.836,2.137c-0.787,0.508 -1.681,0.762 -2.682,0.762c-0.811,0 -1.542,-0.168 -2.194,-0.504c-0.651,-0.337 -1.152,-0.802 -1.502,-1.397l0,0.187c0,0.501 -0.159,0.904 -0.477,1.21c-0.317,0.305 -0.747,0.458 -1.287,0.458c-0.54,-0 -0.974,-0.153 -1.299,-0.458c-0.326,-0.306 -0.489,-0.709 -0.489,-1.21l-0,-13.524c-0,-0.485 0.171,-0.876 0.512,-1.173c0.342,-0.298 0.791,-0.447 1.347,-0.447c0.525,0 0.946,0.141 1.264,0.423c0.318,0.282 0.477,0.657 0.477,1.127l-0,5.142c0.349,-0.579 0.846,-1.029 1.49,-1.35c0.644,-0.321 1.363,-0.481 2.158,-0.481l-0,-0Zm-1.049,9.298c0.842,-0 1.494,-0.294 1.955,-0.881c0.461,-0.587 0.691,-1.412 0.691,-2.477c0,-1.049 -0.23,-1.851 -0.691,-2.407c-0.461,-0.555 -1.113,-0.833 -1.955,-0.833c-0.843,-0 -1.494,0.286 -1.955,0.857c-0.461,0.571 -0.692,1.381 -0.692,2.43c0,1.064 0.231,1.882 0.692,2.454c0.461,0.571 1.112,0.857 1.955,0.857l-0,-0Z" style="fill:#29abe1;fill-rule:nonzero;"/>
<path d="M98.784,30.025c0.337,-0 0.612,0.125 0.823,0.375c0.211,0.251 0.317,0.572 0.317,0.963c-0,0.266 -0.084,0.513 -0.254,0.74c-0.168,0.227 -0.405,0.418 -0.709,0.575c-0.574,0.282 -1.241,0.513 -2.002,0.692c-0.76,0.181 -1.461,0.27 -2.103,0.27c-1.351,0 -2.53,-0.242 -3.535,-0.727c-1.005,-0.486 -1.778,-1.178 -2.318,-2.078c-0.541,-0.9 -0.811,-1.961 -0.811,-3.182c-0,-1.174 0.262,-2.214 0.786,-3.122c0.523,-0.908 1.25,-1.617 2.179,-2.125c0.929,-0.509 1.984,-0.763 3.167,-0.763c1.132,-0 2.124,0.231 2.977,0.692c0.853,0.462 1.517,1.12 1.989,1.973c0.473,0.853 0.71,1.85 0.71,2.993c0,0.345 -0.089,0.607 -0.266,0.787c-0.177,0.18 -0.427,0.27 -0.748,0.27l-7.095,-0c0.119,0.923 0.423,1.593 0.913,2.007c0.49,0.415 1.191,0.622 2.103,0.622c0.49,0 0.929,-0.054 1.317,-0.164c0.389,-0.11 0.82,-0.258 1.293,-0.446c0.236,-0.094 0.464,-0.176 0.684,-0.247c0.219,-0.07 0.414,-0.105 0.583,-0.105Zm-4.359,-5.941c-0.726,0 -1.309,0.216 -1.748,0.646c-0.439,0.431 -0.701,1.053 -0.786,1.867l4.891,-0c-0.051,-0.83 -0.275,-1.456 -0.672,-1.878c-0.397,-0.423 -0.958,-0.635 -1.685,-0.635Z" style="fill:#29abe1;fill-rule:nonzero;"/>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@ -0,0 +1,10 @@
<svg width="100" height="49" viewBox="0 0 100 49" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M3.029,33.471c-0.452,0 -0.815,-0.141 -1.088,-0.422c-0.272,-0.282 -0.409,-0.65 -0.409,-1.104l0,-13.735c0,-0.454 0.129,-0.806 0.386,-1.057c0.257,-0.25 0.612,-0.376 1.064,-0.376l8.204,0c0.951,0 1.426,0.407 1.426,1.221c-0,0.799 -0.475,1.198 -1.426,1.198l-6.685,-0l-0,4.508l6.218,-0c0.95,-0 1.425,0.407 1.425,1.221c0,0.798 -0.475,1.197 -1.425,1.197l-6.218,0l-0,5.823c-0,0.454 -0.132,0.822 -0.397,1.104c-0.265,0.281 -0.624,0.422 -1.075,0.422Z" style="fill:#282a36;fill-rule:nonzero;"/>
<path d="M19.432,21.614c0.367,-0.031 0.656,0.055 0.868,0.258c0.211,0.204 0.317,0.509 0.317,0.916c-0,0.423 -0.092,0.736 -0.275,0.939c-0.183,0.204 -0.515,0.337 -0.994,0.399l-0.635,0.071c-0.832,0.094 -1.441,0.407 -1.829,0.939c-0.388,0.532 -0.582,1.197 -0.582,1.996l0,4.93c0,0.454 -0.127,0.803 -0.381,1.045c-0.253,0.243 -0.571,0.364 -0.951,0.364c-0.381,0 -0.695,-0.121 -0.941,-0.364c-0.247,-0.242 -0.37,-0.591 -0.37,-1.045l-0,-9.086c-0,-0.438 0.123,-0.775 0.37,-1.01c0.246,-0.234 0.553,-0.352 0.92,-0.352c0.366,0 0.662,0.114 0.888,0.34c0.226,0.228 0.338,0.552 0.338,0.975l0,0.939c0.268,-0.689 0.667,-1.221 1.195,-1.597c0.529,-0.375 1.118,-0.587 1.766,-0.633l0.296,-0.024Z" style="fill:#282a36;fill-rule:nonzero;"/>
<path d="M31.876,30.184c0.277,0 0.501,0.102 0.672,0.305c0.171,0.204 0.257,0.478 0.257,0.822c-0,0.485 -0.302,0.892 -0.905,1.221c-0.554,0.297 -1.181,0.536 -1.882,0.716c-0.701,0.18 -1.369,0.27 -2.004,0.27c-1.923,-0 -3.447,-0.532 -4.571,-1.596c-1.125,-1.065 -1.687,-2.521 -1.687,-4.368c0,-1.174 0.244,-2.215 0.734,-3.122c0.488,-0.908 1.177,-1.613 2.065,-2.113c0.888,-0.502 1.894,-0.752 3.019,-0.752c1.075,0 2.012,0.227 2.811,0.681c0.798,0.454 1.417,1.096 1.857,1.925c0.44,0.83 0.66,1.808 0.66,2.935c0,0.673 -0.309,1.01 -0.928,1.01l-7.211,-0c0.097,1.08 0.415,1.874 0.953,2.383c0.538,0.509 1.32,0.763 2.347,0.763c0.521,-0 0.981,-0.063 1.381,-0.188c0.399,-0.125 0.851,-0.297 1.356,-0.516c0.489,-0.251 0.848,-0.376 1.076,-0.376Zm-4.229,-6.551c-0.831,0 -1.495,0.251 -1.992,0.752c-0.497,0.501 -0.795,1.22 -0.892,2.16l5.524,-0c-0.033,-0.955 -0.277,-1.679 -0.733,-2.172c-0.457,-0.493 -1.092,-0.74 -1.907,-0.74Z" style="fill:#282a36;fill-rule:nonzero;"/>
<path d="M45.134,30.184c0.277,0 0.501,0.102 0.672,0.305c0.171,0.204 0.257,0.478 0.257,0.822c-0,0.485 -0.302,0.892 -0.905,1.221c-0.554,0.297 -1.181,0.536 -1.882,0.716c-0.7,0.18 -1.369,0.27 -2.004,0.27c-1.923,-0 -3.447,-0.532 -4.571,-1.596c-1.125,-1.065 -1.687,-2.521 -1.687,-4.368c0,-1.174 0.245,-2.215 0.734,-3.122c0.488,-0.908 1.177,-1.613 2.065,-2.113c0.888,-0.502 1.894,-0.752 3.019,-0.752c1.075,0 2.012,0.227 2.811,0.681c0.798,0.454 1.417,1.096 1.857,1.925c0.44,0.83 0.66,1.808 0.66,2.935c0,0.673 -0.309,1.01 -0.928,1.01l-7.211,-0c0.098,1.08 0.415,1.874 0.953,2.383c0.538,0.509 1.32,0.763 2.347,0.763c0.521,-0 0.981,-0.063 1.381,-0.188c0.399,-0.125 0.851,-0.297 1.356,-0.516c0.489,-0.251 0.848,-0.376 1.076,-0.376Zm-4.229,-6.551c-0.831,0 -1.495,0.251 -1.992,0.752c-0.497,0.501 -0.794,1.22 -0.892,2.16l5.524,-0c-0.033,-0.955 -0.277,-1.679 -0.733,-2.172c-0.456,-0.493 -1.092,-0.74 -1.907,-0.74Z" style="fill:#282a36;fill-rule:nonzero;"/>
<path d="M54.307,33.471c-0.521,0 -1.186,-0.164 -1.506,-0.494c-0.32,-0.329 -0.48,-0.768 -0.48,-1.316l-0,-11.898l-3.374,0c-1.102,0 -1.652,-0.501 -1.652,-1.504c-0,-0.988 0.55,-1.482 1.652,-1.482l10.719,0c1.102,0 1.653,0.494 1.653,1.482c0,1.003 -0.551,1.504 -1.653,1.504l-3.374,0l0,11.898c0,0.548 -0.156,0.987 -0.468,1.316c-0.313,0.33 -0.981,0.494 -1.517,0.494Z" style="fill:#282a36;fill-rule:nonzero;"/>
<path d="M69.693,21.69c0.545,-0 0.978,0.148 1.297,0.446c0.32,0.297 0.479,0.704 0.479,1.221l0,8.616c0,0.486 -0.167,0.877 -0.502,1.175c-0.335,0.297 -0.768,0.446 -1.297,0.446c-0.499,-0 -0.896,-0.141 -1.192,-0.423c-0.297,-0.282 -0.445,-0.658 -0.445,-1.127l0,-0.235c-0.358,0.595 -0.829,1.049 -1.414,1.362c-0.584,0.313 -1.242,0.469 -1.975,0.469c-1.449,0 -2.528,-0.403 -3.237,-1.209c-0.709,-0.806 -1.064,-2.023 -1.064,-3.651l0,-5.423c0,-0.517 0.16,-0.924 0.479,-1.221c0.32,-0.298 0.752,-0.446 1.298,-0.446c0.545,-0 0.974,0.148 1.285,0.446c0.312,0.297 0.468,0.704 0.468,1.221l-0,5.494c-0,0.688 0.144,1.197 0.432,1.526c0.288,0.329 0.729,0.493 1.321,0.493c0.685,0 1.243,-0.235 1.671,-0.704c0.429,-0.47 0.643,-1.088 0.643,-1.855l-0,-4.954c-0,-0.517 0.156,-0.924 0.467,-1.221c0.312,-0.298 0.741,-0.446 1.286,-0.446Z" style="fill:#282a36;fill-rule:nonzero;"/>
<path d="M81.429,21.643c1.017,-0 1.915,0.242 2.694,0.727c0.779,0.486 1.387,1.178 1.824,2.079c0.437,0.899 0.655,1.944 0.655,3.134c0,1.19 -0.218,2.242 -0.655,3.158c-0.437,0.915 -1.049,1.628 -1.836,2.137c-0.787,0.508 -1.681,0.762 -2.682,0.762c-0.811,0 -1.542,-0.168 -2.194,-0.504c-0.651,-0.337 -1.152,-0.802 -1.502,-1.397l0,0.187c0,0.501 -0.159,0.904 -0.477,1.21c-0.317,0.305 -0.747,0.458 -1.287,0.458c-0.54,-0 -0.974,-0.153 -1.299,-0.458c-0.326,-0.306 -0.489,-0.709 -0.489,-1.21l-0,-13.524c-0,-0.485 0.171,-0.876 0.512,-1.173c0.342,-0.298 0.791,-0.447 1.347,-0.447c0.525,0 0.946,0.141 1.264,0.423c0.318,0.282 0.477,0.657 0.477,1.127l-0,5.142c0.349,-0.579 0.846,-1.029 1.49,-1.35c0.644,-0.321 1.363,-0.481 2.158,-0.481l-0,-0Zm-1.049,9.298c0.842,-0 1.494,-0.294 1.955,-0.881c0.461,-0.587 0.691,-1.412 0.691,-2.477c0,-1.049 -0.23,-1.851 -0.691,-2.407c-0.461,-0.555 -1.113,-0.833 -1.955,-0.833c-0.843,-0 -1.494,0.286 -1.955,0.857c-0.461,0.571 -0.692,1.381 -0.692,2.43c0,1.064 0.231,1.882 0.692,2.454c0.461,0.571 1.112,0.857 1.955,0.857l-0,-0Z" style="fill:#282a36;fill-rule:nonzero;"/>
<path d="M98.784,30.025c0.337,-0 0.612,0.125 0.823,0.375c0.211,0.251 0.317,0.572 0.317,0.963c-0,0.266 -0.084,0.513 -0.254,0.74c-0.168,0.227 -0.405,0.418 -0.709,0.575c-0.574,0.282 -1.241,0.513 -2.002,0.692c-0.76,0.181 -1.461,0.27 -2.103,0.27c-1.351,0 -2.53,-0.242 -3.535,-0.727c-1.005,-0.486 -1.778,-1.178 -2.318,-2.078c-0.541,-0.9 -0.811,-1.961 -0.811,-3.182c-0,-1.174 0.262,-2.214 0.786,-3.122c0.523,-0.908 1.25,-1.617 2.179,-2.125c0.929,-0.509 1.984,-0.763 3.167,-0.763c1.132,-0 2.124,0.231 2.977,0.692c0.853,0.462 1.517,1.12 1.989,1.973c0.473,0.853 0.71,1.85 0.71,2.993c0,0.345 -0.089,0.607 -0.266,0.787c-0.177,0.18 -0.427,0.27 -0.748,0.27l-7.095,-0c0.119,0.923 0.423,1.593 0.913,2.007c0.49,0.415 1.191,0.622 2.103,0.622c0.49,0 0.929,-0.054 1.317,-0.164c0.389,-0.11 0.82,-0.258 1.293,-0.446c0.236,-0.094 0.464,-0.176 0.684,-0.247c0.219,-0.07 0.414,-0.105 0.583,-0.105Zm-4.359,-5.941c-0.726,0 -1.309,0.216 -1.748,0.646c-0.439,0.431 -0.701,1.053 -0.786,1.867l4.891,-0c-0.051,-0.83 -0.275,-1.456 -0.672,-1.878c-0.397,-0.423 -0.958,-0.635 -1.685,-0.635Z" style="fill:#282a36;fill-rule:nonzero;"/>
</svg>

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@ -0,0 +1,10 @@
<svg width="100" height="49" viewBox="0 0 100 49" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M3.029,33.471c-0.452,0 -0.815,-0.141 -1.088,-0.422c-0.272,-0.282 -0.409,-0.65 -0.409,-1.104l0,-13.735c0,-0.454 0.129,-0.806 0.386,-1.057c0.257,-0.25 0.612,-0.376 1.064,-0.376l8.204,0c0.951,0 1.426,0.407 1.426,1.221c-0,0.799 -0.475,1.198 -1.426,1.198l-6.685,-0l-0,4.508l6.218,-0c0.95,-0 1.425,0.407 1.425,1.221c0,0.798 -0.475,1.197 -1.425,1.197l-6.218,0l-0,5.823c-0,0.454 -0.132,0.822 -0.397,1.104c-0.265,0.281 -0.624,0.422 -1.075,0.422Z" style="fill:#f8f8f8;fill-rule:nonzero;"/>
<path d="M19.432,21.614c0.367,-0.031 0.656,0.055 0.868,0.258c0.211,0.204 0.317,0.509 0.317,0.916c-0,0.423 -0.092,0.736 -0.275,0.939c-0.183,0.204 -0.515,0.337 -0.994,0.399l-0.635,0.071c-0.832,0.094 -1.441,0.407 -1.829,0.939c-0.388,0.532 -0.582,1.197 -0.582,1.996l0,4.93c0,0.454 -0.127,0.803 -0.381,1.045c-0.253,0.243 -0.571,0.364 -0.951,0.364c-0.381,0 -0.695,-0.121 -0.941,-0.364c-0.247,-0.242 -0.37,-0.591 -0.37,-1.045l-0,-9.086c-0,-0.438 0.123,-0.775 0.37,-1.01c0.246,-0.234 0.553,-0.352 0.92,-0.352c0.366,0 0.662,0.114 0.888,0.34c0.226,0.228 0.338,0.552 0.338,0.975l0,0.939c0.268,-0.689 0.667,-1.221 1.195,-1.597c0.529,-0.375 1.118,-0.587 1.766,-0.633l0.296,-0.024Z" style="fill:#f8f8f8;fill-rule:nonzero;"/>
<path d="M31.876,30.184c0.277,0 0.501,0.102 0.672,0.305c0.171,0.204 0.257,0.478 0.257,0.822c-0,0.485 -0.302,0.892 -0.905,1.221c-0.554,0.297 -1.181,0.536 -1.882,0.716c-0.701,0.18 -1.369,0.27 -2.004,0.27c-1.923,-0 -3.447,-0.532 -4.571,-1.596c-1.125,-1.065 -1.687,-2.521 -1.687,-4.368c0,-1.174 0.244,-2.215 0.734,-3.122c0.488,-0.908 1.177,-1.613 2.065,-2.113c0.888,-0.502 1.894,-0.752 3.019,-0.752c1.075,0 2.012,0.227 2.811,0.681c0.798,0.454 1.417,1.096 1.857,1.925c0.44,0.83 0.66,1.808 0.66,2.935c0,0.673 -0.309,1.01 -0.928,1.01l-7.211,-0c0.097,1.08 0.415,1.874 0.953,2.383c0.538,0.509 1.32,0.763 2.347,0.763c0.521,-0 0.981,-0.063 1.381,-0.188c0.399,-0.125 0.851,-0.297 1.356,-0.516c0.489,-0.251 0.848,-0.376 1.076,-0.376Zm-4.229,-6.551c-0.831,0 -1.495,0.251 -1.992,0.752c-0.497,0.501 -0.795,1.22 -0.892,2.16l5.524,-0c-0.033,-0.955 -0.277,-1.679 -0.733,-2.172c-0.457,-0.493 -1.092,-0.74 -1.907,-0.74Z" style="fill:#f8f8f8;fill-rule:nonzero;"/>
<path d="M45.134,30.184c0.277,0 0.501,0.102 0.672,0.305c0.171,0.204 0.257,0.478 0.257,0.822c-0,0.485 -0.302,0.892 -0.905,1.221c-0.554,0.297 -1.181,0.536 -1.882,0.716c-0.7,0.18 -1.369,0.27 -2.004,0.27c-1.923,-0 -3.447,-0.532 -4.571,-1.596c-1.125,-1.065 -1.687,-2.521 -1.687,-4.368c0,-1.174 0.245,-2.215 0.734,-3.122c0.488,-0.908 1.177,-1.613 2.065,-2.113c0.888,-0.502 1.894,-0.752 3.019,-0.752c1.075,0 2.012,0.227 2.811,0.681c0.798,0.454 1.417,1.096 1.857,1.925c0.44,0.83 0.66,1.808 0.66,2.935c0,0.673 -0.309,1.01 -0.928,1.01l-7.211,-0c0.098,1.08 0.415,1.874 0.953,2.383c0.538,0.509 1.32,0.763 2.347,0.763c0.521,-0 0.981,-0.063 1.381,-0.188c0.399,-0.125 0.851,-0.297 1.356,-0.516c0.489,-0.251 0.848,-0.376 1.076,-0.376Zm-4.229,-6.551c-0.831,0 -1.495,0.251 -1.992,0.752c-0.497,0.501 -0.794,1.22 -0.892,2.16l5.524,-0c-0.033,-0.955 -0.277,-1.679 -0.733,-2.172c-0.456,-0.493 -1.092,-0.74 -1.907,-0.74Z" style="fill:#f8f8f8;fill-rule:nonzero;"/>
<path d="M54.307,33.471c-0.521,0 -1.186,-0.164 -1.506,-0.494c-0.32,-0.329 -0.48,-0.768 -0.48,-1.316l-0,-11.898l-3.374,0c-1.102,0 -1.652,-0.501 -1.652,-1.504c-0,-0.988 0.55,-1.482 1.652,-1.482l10.719,0c1.102,0 1.653,0.494 1.653,1.482c0,1.003 -0.551,1.504 -1.653,1.504l-3.374,0l0,11.898c0,0.548 -0.156,0.987 -0.468,1.316c-0.313,0.33 -0.981,0.494 -1.517,0.494Z" style="fill:#f8f8f8;fill-rule:nonzero;"/>
<path d="M69.693,21.69c0.545,-0 0.978,0.148 1.297,0.446c0.32,0.297 0.479,0.704 0.479,1.221l0,8.616c0,0.486 -0.167,0.877 -0.502,1.175c-0.335,0.297 -0.768,0.446 -1.297,0.446c-0.499,-0 -0.896,-0.141 -1.192,-0.423c-0.297,-0.282 -0.445,-0.658 -0.445,-1.127l0,-0.235c-0.358,0.595 -0.829,1.049 -1.414,1.362c-0.584,0.313 -1.242,0.469 -1.975,0.469c-1.449,0 -2.528,-0.403 -3.237,-1.209c-0.709,-0.806 -1.064,-2.023 -1.064,-3.651l0,-5.423c0,-0.517 0.16,-0.924 0.479,-1.221c0.32,-0.298 0.752,-0.446 1.298,-0.446c0.545,-0 0.974,0.148 1.285,0.446c0.312,0.297 0.468,0.704 0.468,1.221l-0,5.494c-0,0.688 0.144,1.197 0.432,1.526c0.288,0.329 0.729,0.493 1.321,0.493c0.685,0 1.243,-0.235 1.671,-0.704c0.429,-0.47 0.643,-1.088 0.643,-1.855l-0,-4.954c-0,-0.517 0.156,-0.924 0.467,-1.221c0.312,-0.298 0.741,-0.446 1.286,-0.446Z" style="fill:#f8f8f8;fill-rule:nonzero;"/>
<path d="M81.429,21.643c1.017,-0 1.915,0.242 2.694,0.727c0.779,0.486 1.387,1.178 1.824,2.079c0.437,0.899 0.655,1.944 0.655,3.134c0,1.19 -0.218,2.242 -0.655,3.158c-0.437,0.915 -1.049,1.628 -1.836,2.137c-0.787,0.508 -1.681,0.762 -2.682,0.762c-0.811,0 -1.542,-0.168 -2.194,-0.504c-0.651,-0.337 -1.152,-0.802 -1.502,-1.397l0,0.187c0,0.501 -0.159,0.904 -0.477,1.21c-0.317,0.305 -0.747,0.458 -1.287,0.458c-0.54,-0 -0.974,-0.153 -1.299,-0.458c-0.326,-0.306 -0.489,-0.709 -0.489,-1.21l-0,-13.524c-0,-0.485 0.171,-0.876 0.512,-1.173c0.342,-0.298 0.791,-0.447 1.347,-0.447c0.525,0 0.946,0.141 1.264,0.423c0.318,0.282 0.477,0.657 0.477,1.127l-0,5.142c0.349,-0.579 0.846,-1.029 1.49,-1.35c0.644,-0.321 1.363,-0.481 2.158,-0.481l-0,-0Zm-1.049,9.298c0.842,-0 1.494,-0.294 1.955,-0.881c0.461,-0.587 0.691,-1.412 0.691,-2.477c0,-1.049 -0.23,-1.851 -0.691,-2.407c-0.461,-0.555 -1.113,-0.833 -1.955,-0.833c-0.843,-0 -1.494,0.286 -1.955,0.857c-0.461,0.571 -0.692,1.381 -0.692,2.43c0,1.064 0.231,1.882 0.692,2.454c0.461,0.571 1.112,0.857 1.955,0.857l-0,-0Z" style="fill:#f8f8f8;fill-rule:nonzero;"/>
<path d="M98.784,30.025c0.337,-0 0.612,0.125 0.823,0.375c0.211,0.251 0.317,0.572 0.317,0.963c-0,0.266 -0.084,0.513 -0.254,0.74c-0.168,0.227 -0.405,0.418 -0.709,0.575c-0.574,0.282 -1.241,0.513 -2.002,0.692c-0.76,0.181 -1.461,0.27 -2.103,0.27c-1.351,0 -2.53,-0.242 -3.535,-0.727c-1.005,-0.486 -1.778,-1.178 -2.318,-2.078c-0.541,-0.9 -0.811,-1.961 -0.811,-3.182c-0,-1.174 0.262,-2.214 0.786,-3.122c0.523,-0.908 1.25,-1.617 2.179,-2.125c0.929,-0.509 1.984,-0.763 3.167,-0.763c1.132,-0 2.124,0.231 2.977,0.692c0.853,0.462 1.517,1.12 1.989,1.973c0.473,0.853 0.71,1.85 0.71,2.993c0,0.345 -0.089,0.607 -0.266,0.787c-0.177,0.18 -0.427,0.27 -0.748,0.27l-7.095,-0c0.119,0.923 0.423,1.593 0.913,2.007c0.49,0.415 1.191,0.622 2.103,0.622c0.49,0 0.929,-0.054 1.317,-0.164c0.389,-0.11 0.82,-0.258 1.293,-0.446c0.236,-0.094 0.464,-0.176 0.684,-0.247c0.219,-0.07 0.414,-0.105 0.583,-0.105Zm-4.359,-5.941c-0.726,0 -1.309,0.216 -1.748,0.646c-0.439,0.431 -0.701,1.053 -0.786,1.867l4.891,-0c-0.051,-0.83 -0.275,-1.456 -0.672,-1.878c-0.397,-0.423 -0.958,-0.635 -1.685,-0.635Z" style="fill:#f8f8f8;fill-rule:nonzero;"/>
</svg>

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@ -0,0 +1,10 @@
<svg width="100" height="49" viewBox="0 0 100 49" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M3.029,33.471c-0.452,0 -0.815,-0.141 -1.088,-0.422c-0.272,-0.282 -0.409,-0.65 -0.409,-1.104l0,-13.735c0,-0.454 0.129,-0.806 0.386,-1.057c0.257,-0.25 0.612,-0.376 1.064,-0.376l8.204,0c0.951,0 1.426,0.407 1.426,1.221c-0,0.799 -0.475,1.198 -1.426,1.198l-6.685,-0l-0,4.508l6.218,-0c0.95,-0 1.425,0.407 1.425,1.221c0,0.798 -0.475,1.197 -1.425,1.197l-6.218,0l-0,5.823c-0,0.454 -0.132,0.822 -0.397,1.104c-0.265,0.281 -0.624,0.422 -1.075,0.422Z" style="fill:#eee;fill-rule:nonzero;"/>
<path d="M19.432,21.614c0.367,-0.031 0.656,0.055 0.868,0.258c0.211,0.204 0.317,0.509 0.317,0.916c-0,0.423 -0.092,0.736 -0.275,0.939c-0.183,0.204 -0.515,0.337 -0.994,0.399l-0.635,0.071c-0.832,0.094 -1.441,0.407 -1.829,0.939c-0.388,0.532 -0.582,1.197 -0.582,1.996l0,4.93c0,0.454 -0.127,0.803 -0.381,1.045c-0.253,0.243 -0.571,0.364 -0.951,0.364c-0.381,0 -0.695,-0.121 -0.941,-0.364c-0.247,-0.242 -0.37,-0.591 -0.37,-1.045l-0,-9.086c-0,-0.438 0.123,-0.775 0.37,-1.01c0.246,-0.234 0.553,-0.352 0.92,-0.352c0.366,0 0.662,0.114 0.888,0.34c0.226,0.228 0.338,0.552 0.338,0.975l0,0.939c0.268,-0.689 0.667,-1.221 1.195,-1.597c0.529,-0.375 1.118,-0.587 1.766,-0.633l0.296,-0.024Z" style="fill:#eee;fill-rule:nonzero;"/>
<path d="M31.876,30.184c0.277,0 0.501,0.102 0.672,0.305c0.171,0.204 0.257,0.478 0.257,0.822c-0,0.485 -0.302,0.892 -0.905,1.221c-0.554,0.297 -1.181,0.536 -1.882,0.716c-0.701,0.18 -1.369,0.27 -2.004,0.27c-1.923,-0 -3.447,-0.532 -4.571,-1.596c-1.125,-1.065 -1.687,-2.521 -1.687,-4.368c0,-1.174 0.244,-2.215 0.734,-3.122c0.488,-0.908 1.177,-1.613 2.065,-2.113c0.888,-0.502 1.894,-0.752 3.019,-0.752c1.075,0 2.012,0.227 2.811,0.681c0.798,0.454 1.417,1.096 1.857,1.925c0.44,0.83 0.66,1.808 0.66,2.935c0,0.673 -0.309,1.01 -0.928,1.01l-7.211,-0c0.097,1.08 0.415,1.874 0.953,2.383c0.538,0.509 1.32,0.763 2.347,0.763c0.521,-0 0.981,-0.063 1.381,-0.188c0.399,-0.125 0.851,-0.297 1.356,-0.516c0.489,-0.251 0.848,-0.376 1.076,-0.376Zm-4.229,-6.551c-0.831,0 -1.495,0.251 -1.992,0.752c-0.497,0.501 -0.795,1.22 -0.892,2.16l5.524,-0c-0.033,-0.955 -0.277,-1.679 -0.733,-2.172c-0.457,-0.493 -1.092,-0.74 -1.907,-0.74Z" style="fill:#eee;fill-rule:nonzero;"/>
<path d="M45.134,30.184c0.277,0 0.501,0.102 0.672,0.305c0.171,0.204 0.257,0.478 0.257,0.822c-0,0.485 -0.302,0.892 -0.905,1.221c-0.554,0.297 -1.181,0.536 -1.882,0.716c-0.7,0.18 -1.369,0.27 -2.004,0.27c-1.923,-0 -3.447,-0.532 -4.571,-1.596c-1.125,-1.065 -1.687,-2.521 -1.687,-4.368c0,-1.174 0.245,-2.215 0.734,-3.122c0.488,-0.908 1.177,-1.613 2.065,-2.113c0.888,-0.502 1.894,-0.752 3.019,-0.752c1.075,0 2.012,0.227 2.811,0.681c0.798,0.454 1.417,1.096 1.857,1.925c0.44,0.83 0.66,1.808 0.66,2.935c0,0.673 -0.309,1.01 -0.928,1.01l-7.211,-0c0.098,1.08 0.415,1.874 0.953,2.383c0.538,0.509 1.32,0.763 2.347,0.763c0.521,-0 0.981,-0.063 1.381,-0.188c0.399,-0.125 0.851,-0.297 1.356,-0.516c0.489,-0.251 0.848,-0.376 1.076,-0.376Zm-4.229,-6.551c-0.831,0 -1.495,0.251 -1.992,0.752c-0.497,0.501 -0.794,1.22 -0.892,2.16l5.524,-0c-0.033,-0.955 -0.277,-1.679 -0.733,-2.172c-0.456,-0.493 -1.092,-0.74 -1.907,-0.74Z" style="fill:#eee;fill-rule:nonzero;"/>
<path d="M54.307,33.471c-0.521,0 -1.186,-0.164 -1.506,-0.494c-0.32,-0.329 -0.48,-0.768 -0.48,-1.316l-0,-11.898l-3.374,0c-1.102,0 -1.652,-0.501 -1.652,-1.504c-0,-0.988 0.55,-1.482 1.652,-1.482l10.719,0c1.102,0 1.653,0.494 1.653,1.482c0,1.003 -0.551,1.504 -1.653,1.504l-3.374,0l0,11.898c0,0.548 -0.156,0.987 -0.468,1.316c-0.313,0.33 -0.981,0.494 -1.517,0.494Z" style="fill:#eee;fill-rule:nonzero;"/>
<path d="M69.693,21.69c0.545,-0 0.978,0.148 1.297,0.446c0.32,0.297 0.479,0.704 0.479,1.221l0,8.616c0,0.486 -0.167,0.877 -0.502,1.175c-0.335,0.297 -0.768,0.446 -1.297,0.446c-0.499,-0 -0.896,-0.141 -1.192,-0.423c-0.297,-0.282 -0.445,-0.658 -0.445,-1.127l0,-0.235c-0.358,0.595 -0.829,1.049 -1.414,1.362c-0.584,0.313 -1.242,0.469 -1.975,0.469c-1.449,0 -2.528,-0.403 -3.237,-1.209c-0.709,-0.806 -1.064,-2.023 -1.064,-3.651l0,-5.423c0,-0.517 0.16,-0.924 0.479,-1.221c0.32,-0.298 0.752,-0.446 1.298,-0.446c0.545,-0 0.974,0.148 1.285,0.446c0.312,0.297 0.468,0.704 0.468,1.221l-0,5.494c-0,0.688 0.144,1.197 0.432,1.526c0.288,0.329 0.729,0.493 1.321,0.493c0.685,0 1.243,-0.235 1.671,-0.704c0.429,-0.47 0.643,-1.088 0.643,-1.855l-0,-4.954c-0,-0.517 0.156,-0.924 0.467,-1.221c0.312,-0.298 0.741,-0.446 1.286,-0.446Z" style="fill:#eee;fill-rule:nonzero;"/>
<path d="M81.429,21.643c1.017,-0 1.915,0.242 2.694,0.727c0.779,0.486 1.387,1.178 1.824,2.079c0.437,0.899 0.655,1.944 0.655,3.134c0,1.19 -0.218,2.242 -0.655,3.158c-0.437,0.915 -1.049,1.628 -1.836,2.137c-0.787,0.508 -1.681,0.762 -2.682,0.762c-0.811,0 -1.542,-0.168 -2.194,-0.504c-0.651,-0.337 -1.152,-0.802 -1.502,-1.397l0,0.187c0,0.501 -0.159,0.904 -0.477,1.21c-0.317,0.305 -0.747,0.458 -1.287,0.458c-0.54,-0 -0.974,-0.153 -1.299,-0.458c-0.326,-0.306 -0.489,-0.709 -0.489,-1.21l-0,-13.524c-0,-0.485 0.171,-0.876 0.512,-1.173c0.342,-0.298 0.791,-0.447 1.347,-0.447c0.525,0 0.946,0.141 1.264,0.423c0.318,0.282 0.477,0.657 0.477,1.127l-0,5.142c0.349,-0.579 0.846,-1.029 1.49,-1.35c0.644,-0.321 1.363,-0.481 2.158,-0.481l-0,-0Zm-1.049,9.298c0.842,-0 1.494,-0.294 1.955,-0.881c0.461,-0.587 0.691,-1.412 0.691,-2.477c0,-1.049 -0.23,-1.851 -0.691,-2.407c-0.461,-0.555 -1.113,-0.833 -1.955,-0.833c-0.843,-0 -1.494,0.286 -1.955,0.857c-0.461,0.571 -0.692,1.381 -0.692,2.43c0,1.064 0.231,1.882 0.692,2.454c0.461,0.571 1.112,0.857 1.955,0.857l-0,-0Z" style="fill:#eee;fill-rule:nonzero;"/>
<path d="M98.784,30.025c0.337,-0 0.612,0.125 0.823,0.375c0.211,0.251 0.317,0.572 0.317,0.963c-0,0.266 -0.084,0.513 -0.254,0.74c-0.168,0.227 -0.405,0.418 -0.709,0.575c-0.574,0.282 -1.241,0.513 -2.002,0.692c-0.76,0.181 -1.461,0.27 -2.103,0.27c-1.351,0 -2.53,-0.242 -3.535,-0.727c-1.005,-0.486 -1.778,-1.178 -2.318,-2.078c-0.541,-0.9 -0.811,-1.961 -0.811,-3.182c-0,-1.174 0.262,-2.214 0.786,-3.122c0.523,-0.908 1.25,-1.617 2.179,-2.125c0.929,-0.509 1.984,-0.763 3.167,-0.763c1.132,-0 2.124,0.231 2.977,0.692c0.853,0.462 1.517,1.12 1.989,1.973c0.473,0.853 0.71,1.85 0.71,2.993c0,0.345 -0.089,0.607 -0.266,0.787c-0.177,0.18 -0.427,0.27 -0.748,0.27l-7.095,-0c0.119,0.923 0.423,1.593 0.913,2.007c0.49,0.415 1.191,0.622 2.103,0.622c0.49,0 0.929,-0.054 1.317,-0.164c0.389,-0.11 0.82,-0.258 1.293,-0.446c0.236,-0.094 0.464,-0.176 0.684,-0.247c0.219,-0.07 0.414,-0.105 0.583,-0.105Zm-4.359,-5.941c-0.726,0 -1.309,0.216 -1.748,0.646c-0.439,0.431 -0.701,1.053 -0.786,1.867l4.891,-0c-0.051,-0.83 -0.275,-1.456 -0.672,-1.878c-0.397,-0.423 -0.958,-0.635 -1.685,-0.635Z" style="fill:#eee;fill-rule:nonzero;"/>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="100"
height="49"
viewBox="0 0 100 49"
version="1.1"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"
id="svg8"
sodipodi:docname="textSolarizedDarkSmall.svg"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs8" /><sodipodi:namedview
id="namedview8"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="19.97"
inkscape:cx="50"
inkscape:cy="24.48673"
inkscape:window-width="2536"
inkscape:window-height="1356"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<path
d="M3.029,33.471c-0.452,0 -0.815,-0.141 -1.088,-0.422c-0.272,-0.282 -0.409,-0.65 -0.409,-1.104l0,-13.735c0,-0.454 0.129,-0.806 0.386,-1.057c0.257,-0.25 0.612,-0.376 1.064,-0.376l8.204,0c0.951,0 1.426,0.407 1.426,1.221c-0,0.799 -0.475,1.198 -1.426,1.198l-6.685,-0l-0,4.508l6.218,-0c0.95,-0 1.425,0.407 1.425,1.221c0,0.798 -0.475,1.197 -1.425,1.197l-6.218,0l-0,5.823c-0,0.454 -0.132,0.822 -0.397,1.104c-0.265,0.281 -0.624,0.422 -1.075,0.422Z"
style="fill:#002b36;fill-rule:nonzero;fill-opacity:1"
id="path1" />
<path
d="M19.432,21.614c0.367,-0.031 0.656,0.055 0.868,0.258c0.211,0.204 0.317,0.509 0.317,0.916c-0,0.423 -0.092,0.736 -0.275,0.939c-0.183,0.204 -0.515,0.337 -0.994,0.399l-0.635,0.071c-0.832,0.094 -1.441,0.407 -1.829,0.939c-0.388,0.532 -0.582,1.197 -0.582,1.996l0,4.93c0,0.454 -0.127,0.803 -0.381,1.045c-0.253,0.243 -0.571,0.364 -0.951,0.364c-0.381,0 -0.695,-0.121 -0.941,-0.364c-0.247,-0.242 -0.37,-0.591 -0.37,-1.045l-0,-9.086c-0,-0.438 0.123,-0.775 0.37,-1.01c0.246,-0.234 0.553,-0.352 0.92,-0.352c0.366,0 0.662,0.114 0.888,0.34c0.226,0.228 0.338,0.552 0.338,0.975l0,0.939c0.268,-0.689 0.667,-1.221 1.195,-1.597c0.529,-0.375 1.118,-0.587 1.766,-0.633l0.296,-0.024Z"
style="fill:#002b36;fill-rule:nonzero;fill-opacity:1"
id="path2" />
<path
d="M31.876,30.184c0.277,0 0.501,0.102 0.672,0.305c0.171,0.204 0.257,0.478 0.257,0.822c-0,0.485 -0.302,0.892 -0.905,1.221c-0.554,0.297 -1.181,0.536 -1.882,0.716c-0.701,0.18 -1.369,0.27 -2.004,0.27c-1.923,-0 -3.447,-0.532 -4.571,-1.596c-1.125,-1.065 -1.687,-2.521 -1.687,-4.368c0,-1.174 0.244,-2.215 0.734,-3.122c0.488,-0.908 1.177,-1.613 2.065,-2.113c0.888,-0.502 1.894,-0.752 3.019,-0.752c1.075,0 2.012,0.227 2.811,0.681c0.798,0.454 1.417,1.096 1.857,1.925c0.44,0.83 0.66,1.808 0.66,2.935c0,0.673 -0.309,1.01 -0.928,1.01l-7.211,-0c0.097,1.08 0.415,1.874 0.953,2.383c0.538,0.509 1.32,0.763 2.347,0.763c0.521,-0 0.981,-0.063 1.381,-0.188c0.399,-0.125 0.851,-0.297 1.356,-0.516c0.489,-0.251 0.848,-0.376 1.076,-0.376Zm-4.229,-6.551c-0.831,0 -1.495,0.251 -1.992,0.752c-0.497,0.501 -0.795,1.22 -0.892,2.16l5.524,-0c-0.033,-0.955 -0.277,-1.679 -0.733,-2.172c-0.457,-0.493 -1.092,-0.74 -1.907,-0.74Z"
style="fill:#002b36;fill-rule:nonzero;fill-opacity:1"
id="path3" />
<path
d="M45.134,30.184c0.277,0 0.501,0.102 0.672,0.305c0.171,0.204 0.257,0.478 0.257,0.822c-0,0.485 -0.302,0.892 -0.905,1.221c-0.554,0.297 -1.181,0.536 -1.882,0.716c-0.7,0.18 -1.369,0.27 -2.004,0.27c-1.923,-0 -3.447,-0.532 -4.571,-1.596c-1.125,-1.065 -1.687,-2.521 -1.687,-4.368c0,-1.174 0.245,-2.215 0.734,-3.122c0.488,-0.908 1.177,-1.613 2.065,-2.113c0.888,-0.502 1.894,-0.752 3.019,-0.752c1.075,0 2.012,0.227 2.811,0.681c0.798,0.454 1.417,1.096 1.857,1.925c0.44,0.83 0.66,1.808 0.66,2.935c0,0.673 -0.309,1.01 -0.928,1.01l-7.211,-0c0.098,1.08 0.415,1.874 0.953,2.383c0.538,0.509 1.32,0.763 2.347,0.763c0.521,-0 0.981,-0.063 1.381,-0.188c0.399,-0.125 0.851,-0.297 1.356,-0.516c0.489,-0.251 0.848,-0.376 1.076,-0.376Zm-4.229,-6.551c-0.831,0 -1.495,0.251 -1.992,0.752c-0.497,0.501 -0.794,1.22 -0.892,2.16l5.524,-0c-0.033,-0.955 -0.277,-1.679 -0.733,-2.172c-0.456,-0.493 -1.092,-0.74 -1.907,-0.74Z"
style="fill:#002b36;fill-rule:nonzero;fill-opacity:1"
id="path4" />
<path
d="M54.307,33.471c-0.521,0 -1.186,-0.164 -1.506,-0.494c-0.32,-0.329 -0.48,-0.768 -0.48,-1.316l-0,-11.898l-3.374,0c-1.102,0 -1.652,-0.501 -1.652,-1.504c-0,-0.988 0.55,-1.482 1.652,-1.482l10.719,0c1.102,0 1.653,0.494 1.653,1.482c0,1.003 -0.551,1.504 -1.653,1.504l-3.374,0l0,11.898c0,0.548 -0.156,0.987 -0.468,1.316c-0.313,0.33 -0.981,0.494 -1.517,0.494Z"
style="fill:#002b36;fill-rule:nonzero;fill-opacity:1"
id="path5" />
<path
d="M69.693,21.69c0.545,-0 0.978,0.148 1.297,0.446c0.32,0.297 0.479,0.704 0.479,1.221l0,8.616c0,0.486 -0.167,0.877 -0.502,1.175c-0.335,0.297 -0.768,0.446 -1.297,0.446c-0.499,-0 -0.896,-0.141 -1.192,-0.423c-0.297,-0.282 -0.445,-0.658 -0.445,-1.127l0,-0.235c-0.358,0.595 -0.829,1.049 -1.414,1.362c-0.584,0.313 -1.242,0.469 -1.975,0.469c-1.449,0 -2.528,-0.403 -3.237,-1.209c-0.709,-0.806 -1.064,-2.023 -1.064,-3.651l0,-5.423c0,-0.517 0.16,-0.924 0.479,-1.221c0.32,-0.298 0.752,-0.446 1.298,-0.446c0.545,-0 0.974,0.148 1.285,0.446c0.312,0.297 0.468,0.704 0.468,1.221l-0,5.494c-0,0.688 0.144,1.197 0.432,1.526c0.288,0.329 0.729,0.493 1.321,0.493c0.685,0 1.243,-0.235 1.671,-0.704c0.429,-0.47 0.643,-1.088 0.643,-1.855l-0,-4.954c-0,-0.517 0.156,-0.924 0.467,-1.221c0.312,-0.298 0.741,-0.446 1.286,-0.446Z"
style="fill:#002b36;fill-rule:nonzero;fill-opacity:1"
id="path6" />
<path
d="M81.429,21.643c1.017,-0 1.915,0.242 2.694,0.727c0.779,0.486 1.387,1.178 1.824,2.079c0.437,0.899 0.655,1.944 0.655,3.134c0,1.19 -0.218,2.242 -0.655,3.158c-0.437,0.915 -1.049,1.628 -1.836,2.137c-0.787,0.508 -1.681,0.762 -2.682,0.762c-0.811,0 -1.542,-0.168 -2.194,-0.504c-0.651,-0.337 -1.152,-0.802 -1.502,-1.397l0,0.187c0,0.501 -0.159,0.904 -0.477,1.21c-0.317,0.305 -0.747,0.458 -1.287,0.458c-0.54,-0 -0.974,-0.153 -1.299,-0.458c-0.326,-0.306 -0.489,-0.709 -0.489,-1.21l-0,-13.524c-0,-0.485 0.171,-0.876 0.512,-1.173c0.342,-0.298 0.791,-0.447 1.347,-0.447c0.525,0 0.946,0.141 1.264,0.423c0.318,0.282 0.477,0.657 0.477,1.127l-0,5.142c0.349,-0.579 0.846,-1.029 1.49,-1.35c0.644,-0.321 1.363,-0.481 2.158,-0.481l-0,-0Zm-1.049,9.298c0.842,-0 1.494,-0.294 1.955,-0.881c0.461,-0.587 0.691,-1.412 0.691,-2.477c0,-1.049 -0.23,-1.851 -0.691,-2.407c-0.461,-0.555 -1.113,-0.833 -1.955,-0.833c-0.843,-0 -1.494,0.286 -1.955,0.857c-0.461,0.571 -0.692,1.381 -0.692,2.43c0,1.064 0.231,1.882 0.692,2.454c0.461,0.571 1.112,0.857 1.955,0.857l-0,-0Z"
style="fill:#002b36;fill-rule:nonzero;fill-opacity:1"
id="path7" />
<path
d="M98.784,30.025c0.337,-0 0.612,0.125 0.823,0.375c0.211,0.251 0.317,0.572 0.317,0.963c-0,0.266 -0.084,0.513 -0.254,0.74c-0.168,0.227 -0.405,0.418 -0.709,0.575c-0.574,0.282 -1.241,0.513 -2.002,0.692c-0.76,0.181 -1.461,0.27 -2.103,0.27c-1.351,0 -2.53,-0.242 -3.535,-0.727c-1.005,-0.486 -1.778,-1.178 -2.318,-2.078c-0.541,-0.9 -0.811,-1.961 -0.811,-3.182c-0,-1.174 0.262,-2.214 0.786,-3.122c0.523,-0.908 1.25,-1.617 2.179,-2.125c0.929,-0.509 1.984,-0.763 3.167,-0.763c1.132,-0 2.124,0.231 2.977,0.692c0.853,0.462 1.517,1.12 1.989,1.973c0.473,0.853 0.71,1.85 0.71,2.993c0,0.345 -0.089,0.607 -0.266,0.787c-0.177,0.18 -0.427,0.27 -0.748,0.27l-7.095,-0c0.119,0.923 0.423,1.593 0.913,2.007c0.49,0.415 1.191,0.622 2.103,0.622c0.49,0 0.929,-0.054 1.317,-0.164c0.389,-0.11 0.82,-0.258 1.293,-0.446c0.236,-0.094 0.464,-0.176 0.684,-0.247c0.219,-0.07 0.414,-0.105 0.583,-0.105Zm-4.359,-5.941c-0.726,0 -1.309,0.216 -1.748,0.646c-0.439,0.431 -0.701,1.053 -0.786,1.867l4.891,-0c-0.051,-0.83 -0.275,-1.456 -0.672,-1.878c-0.397,-0.423 -0.958,-0.635 -1.685,-0.635Z"
style="fill:#002b36;fill-rule:nonzero;fill-opacity:1"
id="path8" />
</svg>

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="100"
height="49"
viewBox="0 0 100 49"
version="1.1"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"
id="svg8"
sodipodi:docname="textSolarizedLightSmall.svg"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs8" /><sodipodi:namedview
id="namedview8"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="19.97"
inkscape:cx="50"
inkscape:cy="24.48673"
inkscape:window-width="2536"
inkscape:window-height="1356"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<path
d="M3.029,33.471c-0.452,0 -0.815,-0.141 -1.088,-0.422c-0.272,-0.282 -0.409,-0.65 -0.409,-1.104l0,-13.735c0,-0.454 0.129,-0.806 0.386,-1.057c0.257,-0.25 0.612,-0.376 1.064,-0.376l8.204,0c0.951,0 1.426,0.407 1.426,1.221c-0,0.799 -0.475,1.198 -1.426,1.198l-6.685,-0l-0,4.508l6.218,-0c0.95,-0 1.425,0.407 1.425,1.221c0,0.798 -0.475,1.197 -1.425,1.197l-6.218,0l-0,5.823c-0,0.454 -0.132,0.822 -0.397,1.104c-0.265,0.281 -0.624,0.422 -1.075,0.422Z"
style="fill:#fdf6e3;fill-rule:nonzero;fill-opacity:1"
id="path1" />
<path
d="M19.432,21.614c0.367,-0.031 0.656,0.055 0.868,0.258c0.211,0.204 0.317,0.509 0.317,0.916c-0,0.423 -0.092,0.736 -0.275,0.939c-0.183,0.204 -0.515,0.337 -0.994,0.399l-0.635,0.071c-0.832,0.094 -1.441,0.407 -1.829,0.939c-0.388,0.532 -0.582,1.197 -0.582,1.996l0,4.93c0,0.454 -0.127,0.803 -0.381,1.045c-0.253,0.243 -0.571,0.364 -0.951,0.364c-0.381,0 -0.695,-0.121 -0.941,-0.364c-0.247,-0.242 -0.37,-0.591 -0.37,-1.045l-0,-9.086c-0,-0.438 0.123,-0.775 0.37,-1.01c0.246,-0.234 0.553,-0.352 0.92,-0.352c0.366,0 0.662,0.114 0.888,0.34c0.226,0.228 0.338,0.552 0.338,0.975l0,0.939c0.268,-0.689 0.667,-1.221 1.195,-1.597c0.529,-0.375 1.118,-0.587 1.766,-0.633l0.296,-0.024Z"
style="fill:#fdf6e3;fill-rule:nonzero;fill-opacity:1"
id="path2" />
<path
d="M31.876,30.184c0.277,0 0.501,0.102 0.672,0.305c0.171,0.204 0.257,0.478 0.257,0.822c-0,0.485 -0.302,0.892 -0.905,1.221c-0.554,0.297 -1.181,0.536 -1.882,0.716c-0.701,0.18 -1.369,0.27 -2.004,0.27c-1.923,-0 -3.447,-0.532 -4.571,-1.596c-1.125,-1.065 -1.687,-2.521 -1.687,-4.368c0,-1.174 0.244,-2.215 0.734,-3.122c0.488,-0.908 1.177,-1.613 2.065,-2.113c0.888,-0.502 1.894,-0.752 3.019,-0.752c1.075,0 2.012,0.227 2.811,0.681c0.798,0.454 1.417,1.096 1.857,1.925c0.44,0.83 0.66,1.808 0.66,2.935c0,0.673 -0.309,1.01 -0.928,1.01l-7.211,-0c0.097,1.08 0.415,1.874 0.953,2.383c0.538,0.509 1.32,0.763 2.347,0.763c0.521,-0 0.981,-0.063 1.381,-0.188c0.399,-0.125 0.851,-0.297 1.356,-0.516c0.489,-0.251 0.848,-0.376 1.076,-0.376Zm-4.229,-6.551c-0.831,0 -1.495,0.251 -1.992,0.752c-0.497,0.501 -0.795,1.22 -0.892,2.16l5.524,-0c-0.033,-0.955 -0.277,-1.679 -0.733,-2.172c-0.457,-0.493 -1.092,-0.74 -1.907,-0.74Z"
style="fill:#fdf6e3;fill-rule:nonzero;fill-opacity:1"
id="path3" />
<path
d="M45.134,30.184c0.277,0 0.501,0.102 0.672,0.305c0.171,0.204 0.257,0.478 0.257,0.822c-0,0.485 -0.302,0.892 -0.905,1.221c-0.554,0.297 -1.181,0.536 -1.882,0.716c-0.7,0.18 -1.369,0.27 -2.004,0.27c-1.923,-0 -3.447,-0.532 -4.571,-1.596c-1.125,-1.065 -1.687,-2.521 -1.687,-4.368c0,-1.174 0.245,-2.215 0.734,-3.122c0.488,-0.908 1.177,-1.613 2.065,-2.113c0.888,-0.502 1.894,-0.752 3.019,-0.752c1.075,0 2.012,0.227 2.811,0.681c0.798,0.454 1.417,1.096 1.857,1.925c0.44,0.83 0.66,1.808 0.66,2.935c0,0.673 -0.309,1.01 -0.928,1.01l-7.211,-0c0.098,1.08 0.415,1.874 0.953,2.383c0.538,0.509 1.32,0.763 2.347,0.763c0.521,-0 0.981,-0.063 1.381,-0.188c0.399,-0.125 0.851,-0.297 1.356,-0.516c0.489,-0.251 0.848,-0.376 1.076,-0.376Zm-4.229,-6.551c-0.831,0 -1.495,0.251 -1.992,0.752c-0.497,0.501 -0.794,1.22 -0.892,2.16l5.524,-0c-0.033,-0.955 -0.277,-1.679 -0.733,-2.172c-0.456,-0.493 -1.092,-0.74 -1.907,-0.74Z"
style="fill:#fdf6e3;fill-rule:nonzero;fill-opacity:1"
id="path4" />
<path
d="M54.307,33.471c-0.521,0 -1.186,-0.164 -1.506,-0.494c-0.32,-0.329 -0.48,-0.768 -0.48,-1.316l-0,-11.898l-3.374,0c-1.102,0 -1.652,-0.501 -1.652,-1.504c-0,-0.988 0.55,-1.482 1.652,-1.482l10.719,0c1.102,0 1.653,0.494 1.653,1.482c0,1.003 -0.551,1.504 -1.653,1.504l-3.374,0l0,11.898c0,0.548 -0.156,0.987 -0.468,1.316c-0.313,0.33 -0.981,0.494 -1.517,0.494Z"
style="fill:#fdf6e3;fill-rule:nonzero;fill-opacity:1"
id="path5" />
<path
d="M69.693,21.69c0.545,-0 0.978,0.148 1.297,0.446c0.32,0.297 0.479,0.704 0.479,1.221l0,8.616c0,0.486 -0.167,0.877 -0.502,1.175c-0.335,0.297 -0.768,0.446 -1.297,0.446c-0.499,-0 -0.896,-0.141 -1.192,-0.423c-0.297,-0.282 -0.445,-0.658 -0.445,-1.127l0,-0.235c-0.358,0.595 -0.829,1.049 -1.414,1.362c-0.584,0.313 -1.242,0.469 -1.975,0.469c-1.449,0 -2.528,-0.403 -3.237,-1.209c-0.709,-0.806 -1.064,-2.023 -1.064,-3.651l0,-5.423c0,-0.517 0.16,-0.924 0.479,-1.221c0.32,-0.298 0.752,-0.446 1.298,-0.446c0.545,-0 0.974,0.148 1.285,0.446c0.312,0.297 0.468,0.704 0.468,1.221l-0,5.494c-0,0.688 0.144,1.197 0.432,1.526c0.288,0.329 0.729,0.493 1.321,0.493c0.685,0 1.243,-0.235 1.671,-0.704c0.429,-0.47 0.643,-1.088 0.643,-1.855l-0,-4.954c-0,-0.517 0.156,-0.924 0.467,-1.221c0.312,-0.298 0.741,-0.446 1.286,-0.446Z"
style="fill:#fdf6e3;fill-rule:nonzero;fill-opacity:1"
id="path6" />
<path
d="M81.429,21.643c1.017,-0 1.915,0.242 2.694,0.727c0.779,0.486 1.387,1.178 1.824,2.079c0.437,0.899 0.655,1.944 0.655,3.134c0,1.19 -0.218,2.242 -0.655,3.158c-0.437,0.915 -1.049,1.628 -1.836,2.137c-0.787,0.508 -1.681,0.762 -2.682,0.762c-0.811,0 -1.542,-0.168 -2.194,-0.504c-0.651,-0.337 -1.152,-0.802 -1.502,-1.397l0,0.187c0,0.501 -0.159,0.904 -0.477,1.21c-0.317,0.305 -0.747,0.458 -1.287,0.458c-0.54,-0 -0.974,-0.153 -1.299,-0.458c-0.326,-0.306 -0.489,-0.709 -0.489,-1.21l-0,-13.524c-0,-0.485 0.171,-0.876 0.512,-1.173c0.342,-0.298 0.791,-0.447 1.347,-0.447c0.525,0 0.946,0.141 1.264,0.423c0.318,0.282 0.477,0.657 0.477,1.127l-0,5.142c0.349,-0.579 0.846,-1.029 1.49,-1.35c0.644,-0.321 1.363,-0.481 2.158,-0.481l-0,-0Zm-1.049,9.298c0.842,-0 1.494,-0.294 1.955,-0.881c0.461,-0.587 0.691,-1.412 0.691,-2.477c0,-1.049 -0.23,-1.851 -0.691,-2.407c-0.461,-0.555 -1.113,-0.833 -1.955,-0.833c-0.843,-0 -1.494,0.286 -1.955,0.857c-0.461,0.571 -0.692,1.381 -0.692,2.43c0,1.064 0.231,1.882 0.692,2.454c0.461,0.571 1.112,0.857 1.955,0.857l-0,-0Z"
style="fill:#fdf6e3;fill-rule:nonzero;fill-opacity:1"
id="path7" />
<path
d="M98.784,30.025c0.337,-0 0.612,0.125 0.823,0.375c0.211,0.251 0.317,0.572 0.317,0.963c-0,0.266 -0.084,0.513 -0.254,0.74c-0.168,0.227 -0.405,0.418 -0.709,0.575c-0.574,0.282 -1.241,0.513 -2.002,0.692c-0.76,0.181 -1.461,0.27 -2.103,0.27c-1.351,0 -2.53,-0.242 -3.535,-0.727c-1.005,-0.486 -1.778,-1.178 -2.318,-2.078c-0.541,-0.9 -0.811,-1.961 -0.811,-3.182c-0,-1.174 0.262,-2.214 0.786,-3.122c0.523,-0.908 1.25,-1.617 2.179,-2.125c0.929,-0.509 1.984,-0.763 3.167,-0.763c1.132,-0 2.124,0.231 2.977,0.692c0.853,0.462 1.517,1.12 1.989,1.973c0.473,0.853 0.71,1.85 0.71,2.993c0,0.345 -0.089,0.607 -0.266,0.787c-0.177,0.18 -0.427,0.27 -0.748,0.27l-7.095,-0c0.119,0.923 0.423,1.593 0.913,2.007c0.49,0.415 1.191,0.622 2.103,0.622c0.49,0 0.929,-0.054 1.317,-0.164c0.389,-0.11 0.82,-0.258 1.293,-0.446c0.236,-0.094 0.464,-0.176 0.684,-0.247c0.219,-0.07 0.414,-0.105 0.583,-0.105Zm-4.359,-5.941c-0.726,0 -1.309,0.216 -1.748,0.646c-0.439,0.431 -0.701,1.053 -0.786,1.867l4.891,-0c-0.051,-0.83 -0.275,-1.456 -0.672,-1.878c-0.397,-0.423 -0.958,-0.635 -1.685,-0.635Z"
style="fill:#fdf6e3;fill-rule:nonzero;fill-opacity:1"
id="path8" />
</svg>

After

Width:  |  Height:  |  Size: 7.7 KiB

10
_icons/textWhite.svg Normal file
View File

@ -0,0 +1,10 @@
<svg width="410" height="200" viewBox="0 0 410 200" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M12.417,136.617c-1.853,-0 -3.339,-0.575 -4.457,-1.725c-1.118,-1.15 -1.677,-2.652 -1.677,-4.504l0,-56.063c0,-1.853 0.527,-3.29 1.582,-4.312c1.054,-1.023 2.507,-1.534 4.36,-1.534l33.638,0c3.897,0 5.845,1.661 5.845,4.984c0,3.258 -1.948,4.887 -5.845,4.887l-27.409,0l0,18.4l25.492,0c3.897,0 5.846,1.661 5.846,4.983c-0,3.259 -1.949,4.888 -5.846,4.888l-25.492,-0l0,23.767c0,1.852 -0.543,3.354 -1.629,4.504c-1.086,1.15 -2.556,1.725 -4.408,1.725Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M79.673,88.221c1.503,-0.128 2.688,0.223 3.555,1.054c0.868,0.831 1.301,2.076 1.301,3.737c0,1.725 -0.376,3.003 -1.127,3.834c-0.752,0.83 -2.11,1.373 -4.076,1.629l-2.601,0.287c-3.411,0.384 -5.911,1.662 -7.501,3.834c-1.59,2.172 -2.385,4.887 -2.385,8.146l0,20.125c0,1.852 -0.52,3.274 -1.561,4.264c-1.04,0.991 -2.341,1.486 -3.902,1.486c-1.561,-0 -2.847,-0.495 -3.858,-1.486c-1.012,-0.99 -1.518,-2.412 -1.518,-4.264l-0,-37.088c-0,-1.789 0.506,-3.162 1.518,-4.121c1.011,-0.958 2.269,-1.437 3.772,-1.437c1.503,-0 2.717,0.463 3.642,1.389c0.925,0.927 1.387,2.252 1.387,3.977l0,3.834c1.098,-2.811 2.732,-4.984 4.899,-6.517c2.168,-1.533 4.582,-2.396 7.241,-2.587l1.214,-0.096Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M130.691,123.2c1.136,-0 2.054,0.415 2.756,1.246c0.701,0.83 1.052,1.948 1.052,3.354c0,1.981 -1.236,3.642 -3.708,4.983c-2.272,1.214 -4.844,2.189 -7.717,2.923c-2.873,0.735 -5.612,1.102 -8.218,1.102c-7.884,0 -14.131,-2.172 -18.741,-6.516c-4.61,-4.345 -6.915,-10.286 -6.915,-17.825c0,-4.792 1.002,-9.041 3.007,-12.746c2.004,-3.706 4.827,-6.581 8.468,-8.625c3.641,-2.045 7.767,-3.067 12.377,-3.067c4.41,0 8.252,0.927 11.525,2.779c3.274,1.853 5.813,4.473 7.617,7.859c1.804,3.386 2.706,7.379 2.706,11.979c0,2.747 -1.269,4.121 -3.808,4.121l-29.565,-0c0.401,4.408 1.704,7.65 3.909,9.727c2.204,2.076 5.411,3.114 9.621,3.114c2.138,0 4.025,-0.255 5.662,-0.766c1.637,-0.511 3.491,-1.214 5.562,-2.109c2.005,-1.022 3.474,-1.533 4.41,-1.533Zm-17.338,-26.738c-3.408,0 -6.13,1.023 -8.168,3.067c-2.038,2.045 -3.257,4.983 -3.658,8.817l22.65,-0c-0.134,-3.897 -1.136,-6.852 -3.007,-8.865c-1.871,-2.012 -4.477,-3.019 -7.817,-3.019Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M185.049,123.2c1.136,-0 2.055,0.415 2.756,1.246c0.702,0.83 1.052,1.948 1.052,3.354c0,1.981 -1.236,3.642 -3.708,4.983c-2.271,1.214 -4.844,2.189 -7.717,2.923c-2.872,0.735 -5.612,1.102 -8.218,1.102c-7.883,0 -14.13,-2.172 -18.741,-6.516c-4.61,-4.345 -6.915,-10.286 -6.915,-17.825c0,-4.792 1.003,-9.041 3.007,-12.746c2.004,-3.706 4.827,-6.581 8.468,-8.625c3.642,-2.045 7.767,-3.067 12.378,-3.067c4.409,0 8.251,0.927 11.525,2.779c3.274,1.853 5.812,4.473 7.616,7.859c1.804,3.386 2.706,7.379 2.706,11.979c0,2.747 -1.269,4.121 -3.808,4.121l-29.565,-0c0.401,4.408 1.704,7.65 3.909,9.727c2.205,2.076 5.412,3.114 9.621,3.114c2.138,0 4.025,-0.255 5.662,-0.766c1.637,-0.511 3.491,-1.214 5.562,-2.109c2.005,-1.022 3.475,-1.533 4.41,-1.533Zm-17.338,-26.738c-3.407,0 -6.13,1.023 -8.168,3.067c-2.037,2.045 -3.257,4.983 -3.658,8.817l22.65,-0c-0.134,-3.897 -1.136,-6.852 -3.007,-8.865c-1.87,-2.012 -4.476,-3.019 -7.817,-3.019Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M222.658,136.617c-2.137,-0 -4.861,-0.672 -6.173,-2.016c-1.313,-1.343 -1.969,-3.135 -1.969,-5.374l0,-48.56l-13.833,0c-4.517,0 -6.775,-2.047 -6.775,-6.142c-0,-4.03 2.258,-6.046 6.775,-6.046l43.949,0c4.517,0 6.776,2.016 6.776,6.046c-0,4.095 -2.259,6.142 -6.776,6.142l-13.833,0l0,48.56c0,2.239 -0.64,4.031 -1.922,5.374c-1.282,1.344 -4.022,2.016 -6.219,2.016Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M285.741,88.529c2.236,0 4.009,0.607 5.319,1.821c1.31,1.214 1.964,2.875 1.964,4.983l0,35.171c0,1.981 -0.686,3.578 -2.06,4.792c-1.374,1.214 -3.147,1.821 -5.319,1.821c-2.044,-0 -3.673,-0.575 -4.887,-1.725c-1.214,-1.15 -1.821,-2.684 -1.821,-4.6l-0,-0.959c-1.47,2.428 -3.402,4.281 -5.798,5.559c-2.396,1.277 -5.095,1.916 -8.098,1.916c-5.942,0 -10.366,-1.645 -13.273,-4.935c-2.907,-3.29 -4.36,-8.258 -4.36,-14.902l-0,-22.138c-0,-2.108 0.655,-3.769 1.964,-4.983c1.31,-1.214 3.083,-1.821 5.319,-1.821c2.236,0 3.993,0.607 5.271,1.821c1.278,1.214 1.917,2.875 1.917,4.983l-0,22.425c-0,2.811 0.591,4.888 1.772,6.23c1.182,1.341 2.987,2.012 5.415,2.012c2.811,0 5.095,-0.958 6.852,-2.875c1.757,-1.917 2.636,-4.44 2.636,-7.571l-0,-20.221c-0,-2.108 0.638,-3.769 1.916,-4.983c1.278,-1.214 3.035,-1.821 5.271,-1.821Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M333.858,88.338c4.171,-0.001 7.853,0.99 11.046,2.97c3.193,1.981 5.686,4.808 7.478,8.482c1.792,3.673 2.688,7.938 2.688,12.793c0,4.856 -0.896,9.152 -2.688,12.89c-1.792,3.737 -4.301,6.644 -7.527,8.721c-3.226,2.076 -6.891,3.114 -10.997,3.114c-3.324,0 -6.321,-0.686 -8.993,-2.06c-2.672,-1.374 -4.725,-3.274 -6.159,-5.702l0,0.766c0,2.045 -0.651,3.69 -1.955,4.936c-1.303,1.246 -3.063,1.869 -5.278,1.869c-2.216,-0 -3.992,-0.623 -5.328,-1.869c-1.336,-1.246 -2.004,-2.891 -2.004,-4.936l0,-55.2c0,-1.98 0.701,-3.577 2.102,-4.791c1.401,-1.214 3.242,-1.821 5.523,-1.821c2.15,-0 3.877,0.575 5.181,1.725c1.303,1.15 1.955,2.683 1.955,4.6l-0,20.987c1.433,-2.363 3.47,-4.2 6.109,-5.51c2.64,-1.31 5.588,-1.965 8.847,-1.965Zm-4.301,37.95c3.454,0 6.126,-1.197 8.016,-3.593c1.889,-2.396 2.834,-5.766 2.834,-10.111c0,-4.28 -0.945,-7.555 -2.834,-9.823c-1.89,-2.268 -4.562,-3.402 -8.016,-3.402c-3.454,0 -6.126,1.166 -8.016,3.498c-1.89,2.332 -2.835,5.638 -2.835,9.919c0,4.344 0.945,7.683 2.835,10.015c1.89,2.332 4.562,3.498 8.016,3.498Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M405.013,122.55c1.385,0 2.511,0.511 3.377,1.533c0.865,1.023 1.298,2.332 1.298,3.929c0,1.087 -0.346,2.093 -1.039,3.019c-0.692,0.927 -1.662,1.709 -2.909,2.348c-2.354,1.15 -5.09,2.093 -8.207,2.827c-3.117,0.735 -5.991,1.102 -8.623,1.102c-5.541,0 -10.372,-0.99 -14.493,-2.971c-4.121,-1.98 -7.289,-4.807 -9.506,-8.481c-2.216,-3.673 -3.324,-8.002 -3.324,-12.985c-0,-4.792 1.073,-9.04 3.221,-12.746c2.147,-3.706 5.125,-6.597 8.934,-8.673c3.809,-2.076 8.138,-3.115 12.986,-3.115c4.641,0 8.71,0.943 12.208,2.828c3.497,1.884 6.216,4.568 8.155,8.05c1.939,3.482 2.909,7.554 2.909,12.218c0,1.406 -0.364,2.476 -1.091,3.211c-0.727,0.734 -1.749,1.102 -3.065,1.102l-29.089,-0c0.485,3.769 1.731,6.501 3.74,8.194c2.009,1.693 4.883,2.539 8.623,2.539c2.009,0 3.809,-0.223 5.402,-0.671c1.593,-0.447 3.359,-1.054 5.299,-1.821c0.969,-0.383 1.904,-0.718 2.805,-1.006c0.9,-0.287 1.697,-0.431 2.389,-0.431Zm-17.869,-24.246c-2.978,0 -5.368,0.879 -7.168,2.636c-1.801,1.757 -2.875,4.296 -3.221,7.618l20.051,0c-0.208,-3.386 -1.126,-5.941 -2.753,-7.666c-1.628,-1.725 -3.931,-2.588 -6.909,-2.588Z" style="fill:#fff;fill-rule:nonzero;"/>
</svg>

After

Width:  |  Height:  |  Size: 6.7 KiB

10
_icons/textWhiteSmall.svg Normal file
View File

@ -0,0 +1,10 @@
<svg width="100" height="49" viewBox="0 0 100 49" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M3.029,33.471c-0.452,0 -0.815,-0.141 -1.088,-0.422c-0.272,-0.282 -0.409,-0.65 -0.409,-1.104l0,-13.735c0,-0.454 0.129,-0.806 0.386,-1.057c0.257,-0.25 0.612,-0.376 1.064,-0.376l8.204,0c0.951,0 1.426,0.407 1.426,1.221c-0,0.799 -0.475,1.198 -1.426,1.198l-6.685,-0l-0,4.508l6.218,-0c0.95,-0 1.425,0.407 1.425,1.221c0,0.798 -0.475,1.197 -1.425,1.197l-6.218,0l-0,5.823c-0,0.454 -0.132,0.822 -0.397,1.104c-0.265,0.281 -0.624,0.422 -1.075,0.422Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M19.432,21.614c0.367,-0.031 0.656,0.055 0.868,0.258c0.211,0.204 0.317,0.509 0.317,0.916c-0,0.423 -0.092,0.736 -0.275,0.939c-0.183,0.204 -0.515,0.337 -0.994,0.399l-0.635,0.071c-0.832,0.094 -1.441,0.407 -1.829,0.939c-0.388,0.532 -0.582,1.197 -0.582,1.996l0,4.93c0,0.454 -0.127,0.803 -0.381,1.045c-0.253,0.243 -0.571,0.364 -0.951,0.364c-0.381,0 -0.695,-0.121 -0.941,-0.364c-0.247,-0.242 -0.37,-0.591 -0.37,-1.045l-0,-9.086c-0,-0.438 0.123,-0.775 0.37,-1.01c0.246,-0.234 0.553,-0.352 0.92,-0.352c0.366,0 0.662,0.114 0.888,0.34c0.226,0.228 0.338,0.552 0.338,0.975l0,0.939c0.268,-0.689 0.667,-1.221 1.195,-1.597c0.529,-0.375 1.118,-0.587 1.766,-0.633l0.296,-0.024Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M31.876,30.184c0.277,0 0.501,0.102 0.672,0.305c0.171,0.204 0.257,0.478 0.257,0.822c-0,0.485 -0.302,0.892 -0.905,1.221c-0.554,0.297 -1.181,0.536 -1.882,0.716c-0.701,0.18 -1.369,0.27 -2.004,0.27c-1.923,-0 -3.447,-0.532 -4.571,-1.596c-1.125,-1.065 -1.687,-2.521 -1.687,-4.368c0,-1.174 0.244,-2.215 0.734,-3.122c0.488,-0.908 1.177,-1.613 2.065,-2.113c0.888,-0.502 1.894,-0.752 3.019,-0.752c1.075,0 2.012,0.227 2.811,0.681c0.798,0.454 1.417,1.096 1.857,1.925c0.44,0.83 0.66,1.808 0.66,2.935c0,0.673 -0.309,1.01 -0.928,1.01l-7.211,-0c0.097,1.08 0.415,1.874 0.953,2.383c0.538,0.509 1.32,0.763 2.347,0.763c0.521,-0 0.981,-0.063 1.381,-0.188c0.399,-0.125 0.851,-0.297 1.356,-0.516c0.489,-0.251 0.848,-0.376 1.076,-0.376Zm-4.229,-6.551c-0.831,0 -1.495,0.251 -1.992,0.752c-0.497,0.501 -0.795,1.22 -0.892,2.16l5.524,-0c-0.033,-0.955 -0.277,-1.679 -0.733,-2.172c-0.457,-0.493 -1.092,-0.74 -1.907,-0.74Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M45.134,30.184c0.277,0 0.501,0.102 0.672,0.305c0.171,0.204 0.257,0.478 0.257,0.822c-0,0.485 -0.302,0.892 -0.905,1.221c-0.554,0.297 -1.181,0.536 -1.882,0.716c-0.7,0.18 -1.369,0.27 -2.004,0.27c-1.923,-0 -3.447,-0.532 -4.571,-1.596c-1.125,-1.065 -1.687,-2.521 -1.687,-4.368c0,-1.174 0.245,-2.215 0.734,-3.122c0.488,-0.908 1.177,-1.613 2.065,-2.113c0.888,-0.502 1.894,-0.752 3.019,-0.752c1.075,0 2.012,0.227 2.811,0.681c0.798,0.454 1.417,1.096 1.857,1.925c0.44,0.83 0.66,1.808 0.66,2.935c0,0.673 -0.309,1.01 -0.928,1.01l-7.211,-0c0.098,1.08 0.415,1.874 0.953,2.383c0.538,0.509 1.32,0.763 2.347,0.763c0.521,-0 0.981,-0.063 1.381,-0.188c0.399,-0.125 0.851,-0.297 1.356,-0.516c0.489,-0.251 0.848,-0.376 1.076,-0.376Zm-4.229,-6.551c-0.831,0 -1.495,0.251 -1.992,0.752c-0.497,0.501 -0.794,1.22 -0.892,2.16l5.524,-0c-0.033,-0.955 -0.277,-1.679 -0.733,-2.172c-0.456,-0.493 -1.092,-0.74 -1.907,-0.74Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M54.307,33.471c-0.521,0 -1.186,-0.164 -1.506,-0.494c-0.32,-0.329 -0.48,-0.768 -0.48,-1.316l-0,-11.898l-3.374,0c-1.102,0 -1.652,-0.501 -1.652,-1.504c-0,-0.988 0.55,-1.482 1.652,-1.482l10.719,0c1.102,0 1.653,0.494 1.653,1.482c0,1.003 -0.551,1.504 -1.653,1.504l-3.374,0l0,11.898c0,0.548 -0.156,0.987 -0.468,1.316c-0.313,0.33 -0.981,0.494 -1.517,0.494Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M69.693,21.69c0.545,-0 0.978,0.148 1.297,0.446c0.32,0.297 0.479,0.704 0.479,1.221l0,8.616c0,0.486 -0.167,0.877 -0.502,1.175c-0.335,0.297 -0.768,0.446 -1.297,0.446c-0.499,-0 -0.896,-0.141 -1.192,-0.423c-0.297,-0.282 -0.445,-0.658 -0.445,-1.127l0,-0.235c-0.358,0.595 -0.829,1.049 -1.414,1.362c-0.584,0.313 -1.242,0.469 -1.975,0.469c-1.449,0 -2.528,-0.403 -3.237,-1.209c-0.709,-0.806 -1.064,-2.023 -1.064,-3.651l0,-5.423c0,-0.517 0.16,-0.924 0.479,-1.221c0.32,-0.298 0.752,-0.446 1.298,-0.446c0.545,-0 0.974,0.148 1.285,0.446c0.312,0.297 0.468,0.704 0.468,1.221l-0,5.494c-0,0.688 0.144,1.197 0.432,1.526c0.288,0.329 0.729,0.493 1.321,0.493c0.685,0 1.243,-0.235 1.671,-0.704c0.429,-0.47 0.643,-1.088 0.643,-1.855l-0,-4.954c-0,-0.517 0.156,-0.924 0.467,-1.221c0.312,-0.298 0.741,-0.446 1.286,-0.446Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M81.429,21.643c1.017,-0 1.915,0.242 2.694,0.727c0.779,0.486 1.387,1.178 1.824,2.079c0.437,0.899 0.655,1.944 0.655,3.134c0,1.19 -0.218,2.242 -0.655,3.158c-0.437,0.915 -1.049,1.628 -1.836,2.137c-0.787,0.508 -1.681,0.762 -2.682,0.762c-0.811,0 -1.542,-0.168 -2.194,-0.504c-0.651,-0.337 -1.152,-0.802 -1.502,-1.397l0,0.187c0,0.501 -0.159,0.904 -0.477,1.21c-0.317,0.305 -0.747,0.458 -1.287,0.458c-0.54,-0 -0.974,-0.153 -1.299,-0.458c-0.326,-0.306 -0.489,-0.709 -0.489,-1.21l-0,-13.524c-0,-0.485 0.171,-0.876 0.512,-1.173c0.342,-0.298 0.791,-0.447 1.347,-0.447c0.525,0 0.946,0.141 1.264,0.423c0.318,0.282 0.477,0.657 0.477,1.127l-0,5.142c0.349,-0.579 0.846,-1.029 1.49,-1.35c0.644,-0.321 1.363,-0.481 2.158,-0.481l-0,-0Zm-1.049,9.298c0.842,-0 1.494,-0.294 1.955,-0.881c0.461,-0.587 0.691,-1.412 0.691,-2.477c0,-1.049 -0.23,-1.851 -0.691,-2.407c-0.461,-0.555 -1.113,-0.833 -1.955,-0.833c-0.843,-0 -1.494,0.286 -1.955,0.857c-0.461,0.571 -0.692,1.381 -0.692,2.43c0,1.064 0.231,1.882 0.692,2.454c0.461,0.571 1.112,0.857 1.955,0.857l-0,-0Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M98.784,30.025c0.337,-0 0.612,0.125 0.823,0.375c0.211,0.251 0.317,0.572 0.317,0.963c-0,0.266 -0.084,0.513 -0.254,0.74c-0.168,0.227 -0.405,0.418 -0.709,0.575c-0.574,0.282 -1.241,0.513 -2.002,0.692c-0.76,0.181 -1.461,0.27 -2.103,0.27c-1.351,0 -2.53,-0.242 -3.535,-0.727c-1.005,-0.486 -1.778,-1.178 -2.318,-2.078c-0.541,-0.9 -0.811,-1.961 -0.811,-3.182c-0,-1.174 0.262,-2.214 0.786,-3.122c0.523,-0.908 1.25,-1.617 2.179,-2.125c0.929,-0.509 1.984,-0.763 3.167,-0.763c1.132,-0 2.124,0.231 2.977,0.692c0.853,0.462 1.517,1.12 1.989,1.973c0.473,0.853 0.71,1.85 0.71,2.993c0,0.345 -0.089,0.607 -0.266,0.787c-0.177,0.18 -0.427,0.27 -0.748,0.27l-7.095,-0c0.119,0.923 0.423,1.593 0.913,2.007c0.49,0.415 1.191,0.622 2.103,0.622c0.49,0 0.929,-0.054 1.317,-0.164c0.389,-0.11 0.82,-0.258 1.293,-0.446c0.236,-0.094 0.464,-0.176 0.684,-0.247c0.219,-0.07 0.414,-0.105 0.583,-0.105Zm-4.359,-5.941c-0.726,0 -1.309,0.216 -1.748,0.646c-0.439,0.431 -0.701,1.053 -0.786,1.867l4.891,-0c-0.051,-0.83 -0.275,-1.456 -0.672,-1.878c-0.397,-0.423 -0.958,-0.635 -1.685,-0.635Z" style="fill:#fff;fill-rule:nonzero;"/>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@ -0,0 +1,165 @@
const { existsSync, readFileSync, statSync } = require('fs')
const { brotliCompress, constants } = require('zlib')
const { promisify } = require('util')
const { load: loadYaml } = require('js-yaml')
const brotliCompressAsync = promisify(brotliCompress)
class ProcessLocalesPlugin {
constructor(options = {}) {
this.compress = !!options.compress
this.isIncrementalBuild = false
if (typeof options.inputDir !== 'string') {
throw new Error('ProcessLocalesPlugin: no input directory `inputDir` specified.')
} else if (!existsSync(options.inputDir)) {
throw new Error('ProcessLocalesPlugin: the specified input directory does not exist.')
}
this.inputDir = options.inputDir
if (typeof options.outputDir !== 'string') {
throw new Error('ProcessLocalesPlugin: no output directory `outputDir` specified.')
}
this.outputDir = options.outputDir
this.locales = {}
this.localeNames = []
this.activeLocales = []
this.cache = {}
this.loadLocales()
}
apply(compiler) {
compiler.hooks.thisCompilation.tap('ProcessLocalesPlugin', (compilation) => {
const IS_DEV_SERVER = !!compiler.watching
const { CachedSource, RawSource } = compiler.webpack.sources;
compilation.hooks.additionalAssets.tapPromise('process-locales-plugin', async (_assets) => {
// While running in the webpack dev server, this hook gets called for every incremental build.
// For incremental builds we can return the already processed versions, which saves time
// and makes webpack treat them as cached
const promises = []
// Prevents `loadLocales` called twice on first time (e.g. release build)
if (this.isIncrementalBuild) {
this.loadLocales(true)
} else {
this.isIncrementalBuild = true
}
Object.values(this.locales).forEach((localeEntry) => {
const { locale, data, mtimeMs } = localeEntry
promises.push(new Promise(async (resolve) => {
if (IS_DEV_SERVER) {
const cacheEntry = this.cache[locale]
if (cacheEntry != null) {
const { filename, source, mtimeMs: cachedMtimeMs } = cacheEntry
if (cachedMtimeMs === mtimeMs) {
compilation.emitAsset(filename, source, { minimized: true })
resolve()
return
}
}
}
this.removeEmptyValues(data)
let filename = `${this.outputDir}/${locale}.json`
let output = JSON.stringify(data)
if (this.compress) {
filename += '.br'
output = await this.compressLocale(output)
}
let source = new RawSource(output)
if (IS_DEV_SERVER) {
source = new CachedSource(source)
this.cache[locale] = { filename, source, mtimeMs }
}
compilation.emitAsset(filename, source, { minimized: true })
resolve()
}))
if (IS_DEV_SERVER) {
// we don't need the unmodified sources anymore, as we use the cache `this.cache`
// so we can clear this to free some memory
delete localeEntry.data
}
})
await Promise.all(promises)
})
})
}
loadLocales(loadModifiedFilesOnly = false) {
if (this.activeLocales.length === 0) {
this.activeLocales = JSON.parse(readFileSync(`${this.inputDir}/activeLocales.json`))
}
for (const locale of this.activeLocales) {
const filePath = `${this.inputDir}/${locale}.yaml`
// Cannot use `mtime` since values never equal
const mtimeMsFromStats = statSync(filePath).mtimeMs
if (loadModifiedFilesOnly) {
// Skip reading files where mtime (modified time) same as last read
// (stored in mtime)
const existingMtime = this.locales[locale]?.mtimeMs
if (existingMtime != null && existingMtime === mtimeMsFromStats) {
continue
}
}
const contents = readFileSync(filePath, 'utf-8')
const data = loadYaml(contents)
this.locales[locale] = { locale, data, mtimeMs: mtimeMsFromStats }
const localeName = data['Locale Name'] ?? locale
if (!loadModifiedFilesOnly) {
this.localeNames.push(localeName)
}
}
}
async compressLocale(data) {
const buffer = Buffer.from(data, 'utf-8')
return await brotliCompressAsync(buffer, {
params: {
[constants.BROTLI_PARAM_MODE]: constants.BROTLI_MODE_TEXT,
[constants.BROTLI_PARAM_QUALITY]: constants.BROTLI_MAX_QUALITY,
[constants.BROTLI_PARAM_SIZE_HINT]: buffer.byteLength
}
})
}
/**
* vue-i18n doesn't fallback if the translation is an empty string
* so we want to get rid of them and also remove the empty objects that can get left behind
* if we've removed all the keys and values in them
* @param {object|string} data
*/
removeEmptyValues(data) {
for (const key of Object.keys(data)) {
const value = data[key]
if (typeof value === 'object') {
this.removeEmptyValues(value)
}
if (!value || (typeof value === 'object' && Object.keys(value).length === 0)) {
delete data[key]
}
}
}
}
module.exports = ProcessLocalesPlugin

5
_scripts/_domParser.js Normal file
View File

@ -0,0 +1,5 @@
const DOMParser = window.DOMParser
export {
DOMParser
}

0
_scripts/_empty.js Normal file
View File

53
_scripts/build.js Normal file
View File

@ -0,0 +1,53 @@
const os = require('os')
const builder = require('electron-builder')
const config = require('./ebuilder.config.js')
const Platform = builder.Platform
const Arch = builder.Arch
const args = process.argv
let targets
const platform = os.platform()
if (platform === 'darwin') {
let arch = Arch.x64
if (args[2] === 'arm64') {
arch = Arch.arm64
}
targets = Platform.MAC.createTarget(['DMG','zip', '7z'], arch)
} else if (platform === 'win32') {
let arch = Arch.x64
if (args[2] === 'arm64') {
arch = Arch.arm64
}
targets = Platform.WINDOWS.createTarget(['nsis', 'zip', '7z', 'portable'], arch)
} else if (platform === 'linux') {
let arch = Arch.x64
if (args[2] === 'arm64') {
arch = Arch.arm64
}
if (args[2] === 'arm32') {
arch = Arch.armv7l
}
targets = Platform.LINUX.createTarget(['deb', 'zip', '7z', 'apk', 'rpm', 'AppImage', 'pacman'], arch)
}
builder
.build({
targets,
config,
publish: 'never'
})
.then(m => {
console.log(m)
})
.catch(e => {
console.error(e)
})

164
_scripts/dev-runner.js Normal file
View File

@ -0,0 +1,164 @@
process.env.NODE_ENV = 'development'
const electron = require('electron')
const webpack = require('webpack')
const WebpackDevServer = require('webpack-dev-server')
const kill = require('tree-kill')
const path = require('path')
const { spawn } = require('child_process')
let electronProcess = null
let manualRestart = null
const remoteDebugging = process.argv.indexOf('--remote-debug') !== -1
const web = process.argv.indexOf('--web') !== -1
let mainConfig
let rendererConfig
let webConfig
if (!web) {
mainConfig = require('./webpack.main.config')
rendererConfig = require('./webpack.renderer.config')
} else {
webConfig = require('./webpack.web.config')
}
if (remoteDebugging) {
// disable dvtools open in electron
process.env.RENDERER_REMOTE_DEBUGGING = true
}
// Define exit code for relaunch and set it in the environment
const relaunchExitCode = 69
process.env.FREETUBE_RELAUNCH_EXIT_CODE = relaunchExitCode
const port = 9080
async function killElectron(pid) {
return new Promise((resolve, reject) => {
if (pid) {
kill(pid, err => {
if (err) reject(err)
resolve()
})
} else {
resolve()
}
})
}
async function restartElectron() {
console.log('\nStarting electron...')
const { pid } = electronProcess || {}
await killElectron(pid)
electronProcess = spawn(electron, [
path.join(__dirname, '../dist/main.js'),
// '--enable-logging', // Enable to show logs from all electron processes
remoteDebugging ? '--inspect=9222' : '',
remoteDebugging ? '--remote-debugging-port=9223' : ''
],
// { stdio: 'inherit' } // required for logs to actually appear in the stdout
)
electronProcess.on('exit', (code, _) => {
if (code === relaunchExitCode) {
electronProcess = null
restartElectron()
return
}
if (!manualRestart) process.exit(0)
})
}
function startMain() {
const compiler = webpack(mainConfig)
const { name } = compiler
compiler.hooks.afterEmit.tap('afterEmit', async () => {
console.log(`\nCompiled ${name} script!`)
manualRestart = true
await restartElectron()
setTimeout(() => {
manualRestart = false
}, 2500)
console.log(`\nWatching file changes for ${name} script...`)
})
compiler.watch({
aggregateTimeout: 500,
},
err => {
if (err) console.error(err)
})
}
function startRenderer(callback) {
const compiler = webpack(rendererConfig)
const { name } = compiler
compiler.hooks.afterEmit.tap('afterEmit', () => {
console.log(`\nCompiled ${name} script!`)
console.log(`\nWatching file changes for ${name} script...`)
})
const server = new WebpackDevServer({
static: {
directory: path.resolve(__dirname, '..', 'static'),
watch: {
ignored: [
/(dashFiles|storyboards)\/*/,
'/**/.DS_Store',
]
},
publicPath: '/static'
},
port
}, compiler)
server.startCallback(err => {
if (err) console.error(err)
callback()
})
}
function startWeb () {
const compiler = webpack(webConfig)
const { name } = compiler
compiler.hooks.afterEmit.tap('afterEmit', () => {
console.log(`\nCompiled ${name} script!`)
console.log(`\nWatching file changes for ${name} script...`)
})
const server = new WebpackDevServer({
open: true,
static: {
directory: path.join(process.cwd(), 'dist/web/static'),
watch: {
ignored: [
/(dashFiles|storyboards)\/*/,
'/**/.DS_Store',
]
}
},
port
}, compiler)
server.startCallback(err => {
if (err) console.error(err)
})
}
if (!web) {
startRenderer(startMain)
} else {
startWeb()
}

View File

@ -0,0 +1,94 @@
const { name, productName } = require('../package.json')
const config = {
appId: `io.freetubeapp.${name}`,
copyright: 'Copyleft © 2020-2024 freetubeapp@protonmail.com',
// asar: false,
// compression: 'store',
productName,
directories: {
output: './build/',
},
protocols: [
{
name: "FreeTube",
schemes: [
"freetube"
]
}
],
files: [
'_icons/iconColor.*',
'icon.svg',
'./dist/**/*',
'!dist/web/*',
'!node_modules/**/*',
],
dmg: {
contents: [
{
path: '/Applications',
type: 'link',
x: 410,
y: 230,
},
{
type: 'file',
x: 130,
y: 230,
},
],
window: {
height: 380,
width: 540,
}
},
linux: {
category: 'Network',
icon: '_icons/icon.svg',
target: ['deb', 'zip', '7z', 'apk', 'rpm', 'AppImage', 'pacman'],
},
// See the following issues for more information
// https://github.com/jordansissel/fpm/issues/1503
// https://github.com/jgraph/drawio-desktop/issues/259
rpm: {
fpm: [`--rpm-rpmbuild-define=_build_id_links none`]
},
deb: {
depends: [
"libgtk-3-0",
"libnotify4",
"libnss3",
"libxss1",
"libxtst6",
"xdg-utils",
"libatspi2.0-0",
"libuuid1",
"libsecret-1-0"
]
},
mac: {
category: 'public.app-category.utilities',
icon: '_icons/iconMac.icns',
target: ['dmg', 'zip', '7z'],
type: 'distribution',
extendInfo: {
CFBundleURLTypes: [
'freetube'
],
CFBundleURLSchemes: [
'freetube'
]
}
},
win: {
icon: '_icons/icon.ico',
target: ['nsis', 'zip', '7z', 'portable'],
},
nsis: {
allowToChangeInstallationDirectory: true,
oneClick: false,
},
}
module.exports = config

16
_scripts/getInstances.js Normal file
View File

@ -0,0 +1,16 @@
const fs = require('fs/promises')
const invidiousApiUrl = 'https://api.invidious.io/instances.json'
fetch(invidiousApiUrl).then(e => e.json()).then(res => {
const data = res.filter((instance) => {
return !(instance[0].includes('.onion') ||
instance[0].includes('.i2p') ||
!instance[1].api)
}).map((instance) => {
return {
url: instance[1].uri.replace(/\/$/, ''),
cors: instance[1].cors
}
})
fs.writeFile('././static/invidious-instances.json', JSON.stringify(data, null, 2))
})

148
_scripts/getRegions.mjs Normal file
View File

@ -0,0 +1,148 @@
/**
* This script updates the files in static/geolocations with the available locations on YouTube.
*
* It tries to map every active FreeTube language (static/locales/activelocales.json)
* to it's equivalent on YouTube.
*
* It then uses those language mappings,
* to scrape the location selection menu on the YouTube website, in every mapped language.
*
* All languages it couldn't find on YouTube, that don't have manually added mapping,
* get logged to the console, as well as all unmapped YouTube languages.
*/
import { mkdirSync, readFileSync, rmSync, writeFileSync } from 'fs'
import { dirname } from 'path'
import { fileURLToPath } from 'url'
import { Innertube, Misc } from 'youtubei.js'
const STATIC_DIRECTORY = `${dirname(fileURLToPath(import.meta.url))}/../static`
const activeLanguagesPath = `${STATIC_DIRECTORY}/locales/activeLocales.json`
/** @type {string[]} */
const activeLanguages = JSON.parse(readFileSync(activeLanguagesPath, { encoding: 'utf8' }))
// en-US is en on YouTube
const initialResponse = await scrapeLanguage('en')
// Scrape language menu in en-US
/** @type {string[]} */
const youTubeLanguages = initialResponse.data.actions[0].openPopupAction.popup.multiPageMenuRenderer.sections[1].multiPageMenuSectionRenderer.items[1].compactLinkRenderer.serviceEndpoint.signalServiceEndpoint.actions[0].getMultiPageMenuAction.menu.multiPageMenuRenderer.sections[0].multiPageMenuSectionRenderer.items
.map(({ compactLinkRenderer }) => {
return compactLinkRenderer.serviceEndpoint.signalServiceEndpoint.actions[0].selectLanguageCommand.hl
})
// map FreeTube languages to their YouTube equivalents
const foundLanguageNames = ['en-US']
const unusedYouTubeLanguageNames = []
const languagesToScrape = []
for (const language of youTubeLanguages) {
if (activeLanguages.includes(language)) {
foundLanguageNames.push(language)
languagesToScrape.push({
youTube: language,
freeTube: language
})
} else if (activeLanguages.includes(language.replace('-', '_'))) {
const withUnderScore = language.replace('-', '_')
foundLanguageNames.push(withUnderScore)
languagesToScrape.push({
youTube: language,
freeTube: withUnderScore
})
}
// special cases
else if (language === 'de') {
foundLanguageNames.push('de-DE')
languagesToScrape.push({
youTube: 'de',
freeTube: 'de-DE'
})
} else if (language === 'fr') {
foundLanguageNames.push('fr-FR')
languagesToScrape.push({
youTube: 'fr',
freeTube: 'fr-FR'
})
} else if (language === 'no') {
// according to https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
// "no" is the macro language for "nb" and "nn"
foundLanguageNames.push('nb_NO', 'nn')
languagesToScrape.push({
youTube: 'no',
freeTube: 'nb_NO'
})
languagesToScrape.push({
youTube: 'no',
freeTube: 'nn'
})
} else if (language !== 'en') {
unusedYouTubeLanguageNames.push(language)
}
}
console.log("Active FreeTube languages that aren't available on YouTube:")
console.log(activeLanguages.filter(lang => !foundLanguageNames.includes(lang)).sort())
console.log("YouTube languages that don't have an equivalent active FreeTube language:")
console.log(unusedYouTubeLanguageNames.sort())
// Scrape the location menu in various languages and write files to the file system
rmSync(`${STATIC_DIRECTORY}/geolocations`, { recursive: true })
mkdirSync(`${STATIC_DIRECTORY}/geolocations`)
processGeolocations('en-US', 'en', initialResponse)
for (const { youTube, freeTube } of languagesToScrape) {
const response = await scrapeLanguage(youTube)
processGeolocations(freeTube, youTube, response)
}
async function scrapeLanguage(youTubeLanguageCode) {
const session = await Innertube.create({
retrieve_player: false,
generate_session_locally: true,
lang: youTubeLanguageCode
})
return await session.actions.execute('/account/account_menu')
}
function processGeolocations(freeTubeLanguage, youTubeLanguage, response) {
const geolocations = response.data.actions[0].openPopupAction.popup.multiPageMenuRenderer.sections[1].multiPageMenuSectionRenderer.items[3].compactLinkRenderer.serviceEndpoint.signalServiceEndpoint.actions[0].getMultiPageMenuAction.menu.multiPageMenuRenderer.sections[0].multiPageMenuSectionRenderer.items
.map(({ compactLinkRenderer }) => {
return {
name: new Misc.Text(compactLinkRenderer.title).toString().trim(),
code: compactLinkRenderer.serviceEndpoint.signalServiceEndpoint.actions[0].selectCountryCommand.gl
}
})
const normalisedFreeTubeLanguage = freeTubeLanguage.replace('_', '-')
// give Intl.Collator 4 locales, in the hopes that it supports one of them
// deduplicate the list so it doesn't have to do duplicate work
const localeSet = new Set()
localeSet.add(normalisedFreeTubeLanguage)
localeSet.add(youTubeLanguage)
localeSet.add(normalisedFreeTubeLanguage.split('-')[0])
localeSet.add(youTubeLanguage.split('-')[0])
const locales = Array.from(localeSet)
// only sort if node supports sorting the language, otherwise hope that YouTube's sorting was correct
// node 20.3.1 doesn't support sorting `eu`
if (Intl.Collator.supportedLocalesOf(locales).length > 0) {
const collator = new Intl.Collator(locales)
geolocations.sort((a, b) => collator.compare(a.name, b.name))
}
writeFileSync(`${STATIC_DIRECTORY}/geolocations/${freeTubeLanguage}.json`, JSON.stringify(geolocations))
}

View File

@ -0,0 +1,50 @@
/**
* Injects the paths that the renderer process is allowed to read into the main.js file,
* by replacing __FREETUBE_ALLOWED_PATHS__ with an array of strings with the paths.
*
* This allows the main process to validate the paths which the renderer process accesses,
* to ensure that it cannot access other files on the disk, without the users permission (e.g. file picker).
*/
import { closeSync, ftruncateSync, openSync, readFileSync, readdirSync, writeSync } from 'fs'
import { dirname, join, relative, resolve } from 'path'
import { fileURLToPath } from 'url'
const __dirname = dirname(fileURLToPath(import.meta.url));
const distDirectory = resolve(__dirname, '..', 'dist')
const webDirectory = join(distDirectory, 'web')
const paths = readdirSync(distDirectory, {
recursive: true,
withFileTypes: true
})
.filter(dirent => {
// only include files not directories
return dirent.isFile() &&
// disallow the renderer process/browser windows to read the main.js file
dirent.name !== 'main.js' &&
dirent.name !== 'main.js.LICENSE.txt' &&
// filter out any web build files, in case the dist directory contains a web build
!dirent.path.startsWith(webDirectory);
})
.map(dirent => {
const joined = join(dirent.path, dirent.name)
return '/' + relative(distDirectory, joined).replaceAll('\\', '/')
})
let fileHandle
try {
fileHandle = openSync(join(distDirectory, 'main.js'), 'r+')
let contents = readFileSync(fileHandle, 'utf-8')
contents = contents.replace('__FREETUBE_ALLOWED_PATHS__', JSON.stringify(paths))
ftruncateSync(fileHandle)
writeSync(fileHandle, contents, 0, 'utf-8')
} finally {
if (typeof fileHandle !== 'undefined') {
closeSync(fileHandle)
}
}

View File

@ -0,0 +1,67 @@
const path = require('path')
const webpack = require('webpack')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const JsonMinimizerPlugin = require('json-minimizer-webpack-plugin')
const isDevMode = process.env.NODE_ENV === 'development'
const config = {
name: 'main',
mode: process.env.NODE_ENV,
devtool: isDevMode ? 'eval-cheap-module-source-map' : false,
entry: {
main: path.join(__dirname, '../src/main/index.js'),
},
module: {
rules: [
{
test: /\.js$/,
use: 'babel-loader',
exclude: /node_modules/,
},
],
},
// webpack defaults to only optimising the production builds, so having this here is fine
optimization: {
minimizer: [
'...', // extend webpack's list instead of overwriting it
new JsonMinimizerPlugin({
exclude: /\/locales\/.*\.json/
})
]
},
node: {
__dirname: isDevMode,
__filename: isDevMode
},
plugins: [
new webpack.DefinePlugin({
'process.env.IS_ELECTRON_MAIN': true
})
],
output: {
filename: '[name].js',
libraryTarget: 'commonjs2',
path: path.join(__dirname, '../dist'),
},
target: 'electron-main',
}
if (!isDevMode) {
config.plugins.push(
new CopyWebpackPlugin({
patterns: [
{
from: path.join(__dirname, '../static'),
to: path.join(__dirname, '../dist/static'),
globOptions: {
dot: true,
ignore: ['**/.*', '**/locales/**', '**/pwabuilder-sw.js', '**/manifest.json', '**/dashFiles/**', '**/storyboards/**'],
},
},
]
})
)
}
module.exports = config

View File

@ -0,0 +1,180 @@
const path = require('path')
const { readFileSync, readdirSync } = require('fs')
const webpack = require('webpack')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const VueLoaderPlugin = require('vue-loader/lib/plugin')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin')
const ProcessLocalesPlugin = require('./ProcessLocalesPlugin')
const WatchExternalFilesPlugin = require('webpack-watch-external-files-plugin')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const isDevMode = process.env.NODE_ENV === 'development'
const { version: swiperVersion } = JSON.parse(readFileSync(path.join(__dirname, '../node_modules/swiper/package.json')))
const processLocalesPlugin = new ProcessLocalesPlugin({
compress: !isDevMode,
inputDir: path.join(__dirname, '../static/locales'),
outputDir: 'static/locales',
})
const config = {
name: 'renderer',
mode: process.env.NODE_ENV,
devtool: isDevMode ? 'eval-cheap-module-source-map' : false,
entry: {
renderer: path.join(__dirname, '../src/renderer/main.js'),
},
infrastructureLogging: {
// Only warnings and errors
// level: 'none' disable logging
// Please read https://webpack.js.org/configuration/other-options/#infrastructurelogginglevel
level: isDevMode ? 'info' : 'none'
},
output: {
libraryTarget: 'commonjs2',
path: path.join(__dirname, '../dist'),
filename: '[name].js',
},
module: {
rules: [
{
test: /\.js$/,
use: 'babel-loader',
exclude: /node_modules/,
},
{
test: /\.vue$/,
loader: 'vue-loader',
options: {
compilerOptions: {
whitespace: 'condense',
}
}
},
{
test: /\.scss$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
},
{
loader: 'css-loader',
options: {
esModule: false
}
},
{
loader: 'sass-loader',
options: {
implementation: require('sass')
}
},
],
},
{
test: /\.css$/,
use: [
{
loader: MiniCssExtractPlugin.loader
},
{
loader: 'css-loader',
options: {
esModule: false
}
}
],
},
{
test: /\.(png|jpe?g|gif|tif?f|bmp|webp|svg)(\?.*)?$/,
type: 'asset/resource',
generator: {
filename: 'imgs/[name][ext]'
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
type: 'asset/resource',
generator: {
filename: 'fonts/[name][ext]'
}
},
],
},
// webpack defaults to only optimising the production builds, so having this here is fine
optimization: {
minimizer: [
'...', // extend webpack's list instead of overwriting it
new CssMinimizerPlugin()
]
},
node: {
__dirname: false,
__filename: false
},
plugins: [
processLocalesPlugin,
new webpack.DefinePlugin({
'process.env.IS_ELECTRON': true,
'process.env.IS_ELECTRON_MAIN': false,
'process.env.SUPPORTS_LOCAL_API': true,
'process.env.LOCALE_NAMES': JSON.stringify(processLocalesPlugin.localeNames),
'process.env.GEOLOCATION_NAMES': JSON.stringify(readdirSync(path.join(__dirname, '..', 'static', 'geolocations')).map(filename => filename.replace('.json', ''))),
'process.env.SWIPER_VERSION': `'${swiperVersion}'`
}),
new HtmlWebpackPlugin({
excludeChunks: ['processTaskWorker'],
filename: 'index.html',
template: path.resolve(__dirname, '../src/index.ejs')
}),
new VueLoaderPlugin(),
new MiniCssExtractPlugin({
filename: isDevMode ? '[name].css' : '[name].[contenthash].css',
chunkFilename: isDevMode ? '[id].css' : '[id].[contenthash].css',
}),
new CopyWebpackPlugin({
patterns: [
{
from: path.join(__dirname, '../node_modules/swiper/modules/{a11y,navigation,pagination}-element.css').replaceAll('\\', '/'),
to: `swiper-${swiperVersion}.css`,
context: path.join(__dirname, '../node_modules/swiper/modules'),
transformAll: (assets) => {
return Buffer.concat(assets.map(asset => asset.data))
}
}
]
})
],
resolve: {
alias: {
vue$: 'vue/dist/vue.runtime.esm.js',
'DB_HANDLERS_ELECTRON_RENDERER_OR_WEB$': path.resolve(__dirname, '../src/datastores/handlers/electron.js'),
'youtubei.js$': 'youtubei.js/web',
// video.js's mpd-parser uses @xmldom/xmldom so that it can support both node and web browsers
// as FreeTube only runs in electron and web browsers we can use the native DOMParser class, instead of the "polyfill"
// https://caniuse.com/mdn-api_domparser
'@xmldom/xmldom$': path.resolve(__dirname, '_domParser.js')
},
extensions: ['.js', '.vue']
},
target: 'electron-renderer',
}
if (isDevMode) {
const activeLocales = JSON.parse(readFileSync(path.join(__dirname, '../static/locales/activeLocales.json')))
config.plugins.push(
new WatchExternalFilesPlugin({
files: [
`./static/locales/{${activeLocales.join(',')}}.yaml`,
],
}),
)
}
module.exports = config

View File

@ -0,0 +1,210 @@
const path = require('path')
const fs = require('fs')
const webpack = require('webpack')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const VueLoaderPlugin = require('vue-loader/lib/plugin')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const JsonMinimizerPlugin = require('json-minimizer-webpack-plugin')
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin')
const ProcessLocalesPlugin = require('./ProcessLocalesPlugin')
const isDevMode = process.env.NODE_ENV === 'development'
const { version: swiperVersion } = JSON.parse(fs.readFileSync(path.join(__dirname, '../node_modules/swiper/package.json')))
const config = {
name: 'web',
mode: process.env.NODE_ENV,
devtool: isDevMode ? 'eval-cheap-module-source-map' : false,
entry: {
web: path.join(__dirname, '../src/renderer/main.js'),
},
output: {
path: path.join(__dirname, '../dist/web'),
filename: '[name].js',
},
externals: {
'youtubei.js': '{}'
},
module: {
rules: [
{
test: /\.js$/,
use: 'babel-loader',
exclude: /node_modules/,
},
{
test: /\.vue$/,
loader: 'vue-loader',
options: {
compilerOptions: {
whitespace: 'condense',
}
}
},
{
test: /\.scss$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
},
{
loader: 'css-loader',
options: {
esModule: false
}
},
{
loader: 'sass-loader',
options: {
implementation: require('sass')
}
},
],
},
{
test: /\.css$/,
use: [
{
loader: MiniCssExtractPlugin.loader
},
{
loader: 'css-loader',
options: {
esModule: false
}
}
],
},
{
test: /\.html$/,
use: 'vue-html-loader',
},
{
test: /\.(png|jpe?g|gif|tif?f|bmp|webp|svg)(\?.*)?$/,
type: 'asset/resource',
generator: {
filename: 'imgs/[name][ext]'
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
type: 'asset/resource',
generator: {
filename: 'fonts/[name][ext]'
}
},
],
},
// webpack defaults to only optimising the production builds, so having this here is fine
optimization: {
minimizer: [
'...', // extend webpack's list instead of overwriting it
new JsonMinimizerPlugin({
exclude: /\/locales\/.*\.json/
}),
new CssMinimizerPlugin()
]
},
node: {
__dirname: false,
__filename: false
},
plugins: [
new webpack.DefinePlugin({
'process.env.IS_ELECTRON': false,
'process.env.IS_ELECTRON_MAIN': false,
'process.env.SUPPORTS_LOCAL_API': false,
'process.env.SWIPER_VERSION': `'${swiperVersion}'`,
// video.js' vhs-utils supports both atob() in web browsers and Buffer in node
// As the FreeTube web build only runs in web browsers, we can override their check for atob() here: https://github.com/videojs/vhs-utils/blob/main/src/decode-b64-to-uint8-array.js#L3
// overriding that check means we don't need to include a Buffer polyfill
// https://caniuse.com/atob-btoa
// NOTE FOR THE FUTURE: this override won't work with vite as their define does a find and replace in the code for production builds,
// but uses globals in development builds to save build time, so this would replace the actual atob() function with true if used with vite
// this works in webpack as webpack does a find and replace in the source code for both development and production builds
// https://vitejs.dev/config/shared-options.html#define
// https://webpack.js.org/plugins/define-plugin/
'window.atob': true
}),
new webpack.ProvidePlugin({
process: 'process/browser'
}),
new HtmlWebpackPlugin({
excludeChunks: ['processTaskWorker'],
filename: 'index.html',
template: path.resolve(__dirname, '../src/index.ejs')
}),
new VueLoaderPlugin(),
new MiniCssExtractPlugin({
filename: isDevMode ? '[name].css' : '[name].[contenthash].css',
chunkFilename: isDevMode ? '[id].css' : '[id].[contenthash].css',
}),
new CopyWebpackPlugin({
patterns: [
{
from: path.join(__dirname, '../node_modules/swiper/modules/{a11y,navigation,pagination}-element.css').replaceAll('\\', '/'),
to: `swiper-${swiperVersion}.css`,
context: path.join(__dirname, '../node_modules/swiper/modules'),
transformAll: (assets) => {
return Buffer.concat(assets.map(asset => asset.data))
}
}
]
})
],
resolve: {
alias: {
vue$: 'vue/dist/vue.runtime.esm.js',
'DB_HANDLERS_ELECTRON_RENDERER_OR_WEB$': path.resolve(__dirname, '../src/datastores/handlers/web.js'),
// video.js's mpd-parser uses @xmldom/xmldom so that it can support both node and web browsers
// As FreeTube only runs in electron and web browsers, we can use the native DOMParser class, instead of the "polyfill"
// https://caniuse.com/mdn-api_domparser
'@xmldom/xmldom$': path.resolve(__dirname, '_domParser.js')
},
fallback: {
'fs/promises': path.resolve(__dirname, '_empty.js'),
path: require.resolve('path-browserify'),
},
extensions: ['.js', '.vue']
},
target: 'web',
}
const processLocalesPlugin = new ProcessLocalesPlugin({
compress: false,
inputDir: path.join(__dirname, '../static/locales'),
outputDir: 'static/locales',
})
config.plugins.push(
processLocalesPlugin,
new webpack.DefinePlugin({
'process.env.LOCALE_NAMES': JSON.stringify(processLocalesPlugin.localeNames),
'process.env.GEOLOCATION_NAMES': JSON.stringify(fs.readdirSync(path.join(__dirname, '..', 'static', 'geolocations')).map(filename => filename.replace('.json', '')))
}),
new CopyWebpackPlugin({
patterns: [
{
from: path.join(__dirname, '../static/pwabuilder-sw.js'),
to: path.join(__dirname, '../dist/web/pwabuilder-sw.js'),
},
{
from: path.join(__dirname, '../static'),
to: path.join(__dirname, '../dist/web/static'),
globOptions: {
dot: true,
ignore: ['**/.*', '**/locales/**', '**/pwabuilder-sw.js', '**/dashFiles/**', '**/storyboards/**'],
},
},
]
})
)
module.exports = config

15
jsconfig.json Normal file
View File

@ -0,0 +1,15 @@
{
"vueCompilerOptions": {
"target": 2.7
},
"compilerOptions": {
"strictNullChecks": true,
"baseUrl": "./",
"paths": {
"DB_HANDLERS_ELECTRON_RENDERER_OR_WEB": [
"src/datastores/handlers/electron",
"src/datastores/handlers/web"
]
}
}
}

View File

@ -0,0 +1,7 @@
# See following doc for details
# https://github.com/evilmartians/lefthook/blob/master/docs/configuration.md#rc
# You can choose whatever name/path you want for `~/.lefthookrc`.
# You can share it between projects where you use lefthook.
# Make sure the path is absolute.
rc: ~/.lefthookrc

50
lefthook.yml Normal file
View File

@ -0,0 +1,50 @@
# Refer for explanation to following link:
# https://github.com/evilmartians/lefthook/blob/master/docs/full_guide.md
pre-commit:
parallel: true
commands:
eslint:
# Only runs when any file with filename
# matching the glob is being committed
glob: "*.{js,vue}"
run: yarn run eslint --no-color {staged_files}
skip:
- rebase
stylelint:
glob: "*.{css,scss}"
run: yarn stylelint --no-color --allow-empty-input {staged_files}
skip:
- rebase
# EXAMPLE USAGE
#
# pre-push:
# commands:
# packages-audit:
# tags: frontend security
# run: yarn audit
# gems-audit:
# tags: backend security
# run: bundle audit
#
# pre-commit:
# parallel: true
# commands:
# eslint:
# glob: "*.{js,ts}"
# run: yarn eslint {staged_files}
# rubocop:
# tags: backend style
# glob: "*.rb"
# exclude: "application.rb|routes.rb"
# run: bundle exec rubocop --force-exclusion {all_files}
# govet:
# tags: backend style
# files: git ls-files -m
# glob: "*.go"
# run: go vet {files}
# scripts:
# "hello.js":
# runner: node
# "any.go":
# runner: go run

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