Merge branch 'master' into redeem-transaction-link-mutation

This commit is contained in:
Moriz Wahl 2022-03-11 15:25:24 +01:00
commit df7406b145
90 changed files with 2441 additions and 1417 deletions

View File

@ -185,7 +185,7 @@ jobs:
##########################################################################
# LOCALES FRONTEND #######################################################
##########################################################################
- name: frontend | Locales
- name: Frontend | Locales
run: docker run --rm gradido/frontend:test yarn run locales
##############################################################################
@ -214,9 +214,38 @@ jobs:
##########################################################################
# LINT FRONTEND ##########################################################
##########################################################################
- name: frontend | Lint
- name: Frontend | Lint
run: docker run --rm gradido/frontend:test yarn run lint
##############################################################################
# JOB: STYLELINT FRONTEND ####################################################
##############################################################################
stylelint_frontend:
name: Stylelint - Frontend
runs-on: ubuntu-latest
needs: [build_test_frontend]
steps:
##########################################################################
# CHECKOUT CODE ##########################################################
##########################################################################
- name: Checkout code
uses: actions/checkout@v2
##########################################################################
# DOWNLOAD DOCKER IMAGE ##################################################
##########################################################################
- name: Download Docker Image (Frontend)
uses: actions/download-artifact@v2
with:
name: docker-frontend-test
path: /tmp
- name: Load Docker Image
run: docker load < /tmp/frontend.tar
##########################################################################
# STYLELINT FRONTEND #####################################################
##########################################################################
- name: Frontend | Stylelint
run: docker run --rm gradido/frontend:test yarn run stylelint
##############################################################################
# JOB: LINT ADMIN INTERFACE ##################################################
##############################################################################
@ -247,7 +276,36 @@ jobs:
run: docker run --rm gradido/admin:test yarn run lint
##############################################################################
# JOB: LOCALES ADMIN ######################################################
# JOB: STYLELINT ADMIN INTERFACE ##############################################
##############################################################################
stylelint_admin:
name: Stylelint - Admin Interface
runs-on: ubuntu-latest
needs: [build_test_admin]
steps:
##########################################################################
# CHECKOUT CODE ##########################################################
##########################################################################
- name: Checkout code
uses: actions/checkout@v2
##########################################################################
# DOWNLOAD DOCKER IMAGE ##################################################
##########################################################################
- name: Download Docker Image (Admin Interface)
uses: actions/download-artifact@v2
with:
name: docker-admin-test
path: /tmp
- name: Load Docker Image
run: docker load < /tmp/admin.tar
##########################################################################
# STYLELINT ADMIN INTERFACE ##############################################
##########################################################################
- name: Admin Interface | Stylelint
run: docker run --rm gradido/admin:test yarn run stylelint
##############################################################################
# JOB: LOCALES ADMIN #########################################################
##############################################################################
locales_admin:
name: Locales - Admin

View File

@ -16,6 +16,12 @@ module.exports = {
'no-console': ['error'],
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'vue/component-name-in-template-casing': ['error', 'kebab-case'],
'vue/no-static-inline-styles': [
'error',
{
allowBinding: false,
},
],
'prettier/prettier': [
'error',
{

18
admin/.stylelintrc.js Normal file
View File

@ -0,0 +1,18 @@
'use strict';
module.exports = {
extends: ["stylelint-config-standard-scss", "stylelint-config-recommended-vue"],
overrides: [
{
files: "**/*.{scss}",
customSyntax: "postcss-scss",
extends: ["stylelint-config-standard-scss"],
},
{
files: "**/*.vue",
customSyntax: "postcss-html",
extends: ["stylelint-config-recommended-vue"],
}
]
};

View File

@ -9,9 +9,12 @@
"scripts": {
"start": "node run/server.js",
"serve": "vue-cli-service serve --open",
"dev": "yarn run serve",
"build": "vue-cli-service build",
"dev": "yarn run serve",
"analyse-bundle": "yarn build && webpack-bundle-analyzer dist/webpack.stats.json",
"lint": "eslint --max-warnings=0 --ext .js,.vue .",
"stylelint": "stylelint --max-warnings=0 '**/*.{scss,vue}'",
"i18n:report": "vue-cli-service i18n:report --src './src/**/*.?(js|vue)' --locales './src/locales/**/*.json'",
"test": "TZ=UTC jest --coverage",
"locales": "scripts/missing-keys.sh && scripts/sort.sh"
},
@ -65,6 +68,13 @@
"eslint-plugin-promise": "^5.1.1",
"eslint-plugin-vue": "^7.20.0",
"jest-environment-jsdom-sixteen": "^2.0.0",
"postcss": "^8.4.8",
"postcss-html": "^1.3.0",
"postcss-scss": "^4.0.3",
"stylelint": "^14.5.3",
"stylelint-config-recommended-vue": "^1.3.0",
"stylelint-config-standard-scss": "^3.0.0",
"vue-cli-plugin-i18n": "^2.3.1",
"vue-template-compiler": "^2.6.11"
},
"browserslist": [

View File

@ -1,6 +1,6 @@
<template>
<div class="user-search">
<div style="text-align: right">
<div class="user-search-first-div">
<b-button class="unconfirmedRegisterMails" variant="light" @click="unconfirmedRegisterMails">
<b-icon icon="envelope" variant="danger"></b-icon>
{{ filterCheckedEmails ? $t('all_emails') : $t('unregistered_emails') }}
@ -136,3 +136,8 @@ export default {
},
}
</script>
<style>
.user-search-first-div {
text-align: right;
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -22,6 +22,7 @@ export enum RIGHTS {
DELETE_TRANSACTION_LINK = 'DELETE_TRANSACTION_LINK',
QUERY_TRANSACTION_LINK = 'QUERY_TRANSACTION_LINK',
REDEEM_TRANSACTION_LINK = 'REDEEM_TRANSACTION_LINK',
LIST_TRANSACTION_LINKS = 'LIST_TRANSACTION_LINKS',
// Admin
SEARCH_USERS = 'SEARCH_USERS',
CREATE_PENDING_CREATION = 'CREATE_PENDING_CREATION',

View File

@ -21,6 +21,7 @@ export const ROLE_USER = new Role('user', [
RIGHTS.CREATE_TRANSACTION_LINK,
RIGHTS.DELETE_TRANSACTION_LINK,
RIGHTS.REDEEM_TRANSACTION_LINK,
RIGHTS.LIST_TRANSACTION_LINKS,
])
export const ROLE_ADMIN = new Role('admin', Object.values(RIGHTS)) // all rights

View File

@ -1,10 +0,0 @@
import { ArgsType, Field, Int } from 'type-graphql'
@ArgsType()
export default class QueryTransactionLinkArgs {
@Field(() => String)
code: string
@Field(() => Int, { nullable: true })
redeemUserId?: number
}

View File

@ -6,6 +6,7 @@ export enum TransactionTypeId {
RECEIVE = 3,
// This is a virtual property, never occurring on the database
DECAY = 4,
TRANSACTION_LINK = 5,
}
registerEnumType(TransactionTypeId, {

View File

@ -5,9 +5,10 @@ import { Resolver, Args, Arg, Authorized, Ctx, Mutation, Query } from 'type-grap
import { getCustomRepository } from '@dbTools/typeorm'
import { TransactionLink } from '@model/TransactionLink'
import { TransactionLink as dbTransactionLink } from '@entity/TransactionLink'
import TransactionLinkArgs from '@arg/TransactionLinkArgs'
import QueryTransactionLinkArgs from '@arg/QueryTransactionLinkArgs'
import { User as dbUser } from '@entity/User'
import { UserRepository } from '@repository/User'
import TransactionLinkArgs from '@arg/TransactionLinkArgs'
import Paginated from '@arg/Paginated'
import { calculateBalance } from '@/util/validate'
import { RIGHTS } from '@/auth/RIGHTS'
import { randomBytes } from 'crypto'
@ -15,6 +16,7 @@ import { User } from '@model/User'
import { calculateDecay } from '@/util/decay'
import { executeTransaction } from './TransactionResolver'
import { User as dbUser } from '@entity/User'
import { Order } from '@enum/Order'
// TODO: do not export, test it inside the resolver
export const transactionLinkCode = (date: Date): string => {
@ -98,31 +100,39 @@ export class TransactionLinkResolver {
@Authorized([RIGHTS.QUERY_TRANSACTION_LINK])
@Query(() => TransactionLink)
async queryTransactionLink(
@Args() { code, redeemUserId }: QueryTransactionLinkArgs,
): Promise<TransactionLink> {
async queryTransactionLink(@Arg('code') code: string): Promise<TransactionLink> {
const transactionLink = await dbTransactionLink.findOneOrFail({ code })
const user = await dbUser.findOneOrFail({ id: transactionLink.userId })
let redeemedBy: User | null = null
if (transactionLink && transactionLink.redeemedBy) {
redeemedBy = new User(await dbUser.findOneOrFail({ id: transactionLink.redeemedBy }))
}
return new TransactionLink(transactionLink, new User(user), redeemedBy)
}
@Authorized([RIGHTS.LIST_TRANSACTION_LINKS])
@Query(() => [TransactionLink])
async listTransactionLinks(
@Args()
{ currentPage = 1, pageSize = 5, order = Order.DESC }: Paginated,
@Ctx() context: any,
): Promise<TransactionLink[]> {
const userRepository = getCustomRepository(UserRepository)
const user = await userRepository.findOneOrFail({ id: transactionLink.userId })
let userRedeem = null
if (redeemUserId && !transactionLink.redeemedBy) {
const redeemedByUser = await userRepository.findOne({ id: redeemUserId })
if (!redeemedByUser) {
throw new Error('Unable to find user that redeem the link')
}
userRedeem = new User(redeemedByUser)
transactionLink.redeemedBy = userRedeem.id
await dbTransactionLink.save(transactionLink).catch(() => {
throw new Error('Unable to save transaction link')
const user = await userRepository.findByPubkeyHex(context.pubKey)
// const now = new Date()
const transactionLinks = await dbTransactionLink.find({
where: {
userId: user.id,
redeemedBy: null,
// validUntil: MoreThan(now),
},
order: {
createdAt: order,
},
skip: (currentPage - 1) * pageSize,
take: pageSize,
})
} else if (transactionLink.redeemedBy) {
const redeemedByUser = await userRepository.findOne({ id: redeemUserId })
if (!redeemedByUser) {
throw new Error('Unable to find user that has redeemed the link')
}
userRedeem = new User(redeemedByUser)
}
return new TransactionLink(transactionLink, new User(user), userRedeem)
return transactionLinks.map((tl) => new TransactionLink(tl, new User(user)))
}
@Authorized([RIGHTS.REDEEM_TRANSACTION_LINK])

View File

@ -30,7 +30,7 @@ import { calculateBalance, isHexPublicKey } from '@/util/validate'
import { RIGHTS } from '@/auth/RIGHTS'
import { User } from '@model/User'
import { communityUser } from '@/util/communityUser'
import { virtualDecayTransaction } from '@/util/virtualDecayTransaction'
import { virtualLinkTransaction, virtualDecayTransaction } from '@/util/virtualTransactions'
import Decimal from 'decimal.js-light'
import { calculateDecay } from '@/util/decay'
@ -189,11 +189,29 @@ export class TransactionResolver {
const self = new User(user)
const transactions: Transaction[] = []
// decay transaction
const transactionLinkRepository = getCustomRepository(TransactionLinkRepository)
const { sumHoldAvailableAmount, sumAmount, lastDate, firstDate } =
await transactionLinkRepository.summary(user.id, now)
// decay & link transactions
if (!onlyCreations && currentPage === 1 && order === Order.DESC) {
transactions.push(
virtualDecayTransaction(lastTransaction.balance, lastTransaction.balanceDate, now, self),
)
// virtual transaction for pending transaction-links sum
if (sumHoldAvailableAmount.greaterThan(0)) {
transactions.push(
virtualLinkTransaction(
lastTransaction.balance.minus(sumHoldAvailableAmount.toString()),
sumAmount,
sumHoldAvailableAmount,
sumHoldAvailableAmount.minus(sumAmount.toString()),
firstDate || now,
lastDate || now,
self,
),
)
}
}
// transactions
@ -205,13 +223,10 @@ export class TransactionResolver {
transactions.push(new Transaction(userTransaction, self, linkedUser))
})
const transactionLinkRepository = getCustomRepository(TransactionLinkRepository)
const toHoldAvailable = await transactionLinkRepository.sumAmountToHoldAvailable(user.id, now)
// Construct Result
return new TransactionList(
calculateDecay(lastTransaction.balance, lastTransaction.balanceDate, now).balance.minus(
toHoldAvailable.toString(),
sumHoldAvailableAmount.toString(),
),
transactions,
userTransactionsCount,

View File

@ -4,13 +4,33 @@ import Decimal from 'decimal.js-light'
@EntityRepository(dbTransactionLink)
export class TransactionLinkRepository extends Repository<dbTransactionLink> {
async sumAmountToHoldAvailable(userId: number, date: Date): Promise<Decimal> {
const { sum } = await this.createQueryBuilder('transactionLinks')
.select('SUM(transactionLinks.holdAvailableAmount)', 'sum')
async summary(
userId: number,
date: Date,
): Promise<{
sumHoldAvailableAmount: Decimal
sumAmount: Decimal
lastDate: Date | null
firstDate: Date | null
}> {
const { sumHoldAvailableAmount, sumAmount, lastDate, firstDate } =
await this.createQueryBuilder('transactionLinks')
.select('SUM(transactionLinks.holdAvailableAmount)', 'sumHoldAvailableAmount')
.addSelect('SUM(transactionLinks.amount)', 'sumAmount')
.addSelect('MAX(transactionLinks.validUntil)', 'lastDate')
.addSelect('MIN(transactionLinks.createdAt)', 'firstDate')
.where('transactionLinks.userId = :userId', { userId })
.andWhere('transactionLinks.redeemedAt is NULL')
.andWhere('transactionLinks.validUntil > :date', { date })
.orderBy('transactionLinks.createdAt', 'DESC')
.getRawOne()
return sum ? new Decimal(sum) : new Decimal(0)
return {
sumHoldAvailableAmount: sumHoldAvailableAmount
? new Decimal(sumHoldAvailableAmount)
: new Decimal(0),
sumAmount: sumAmount ? new Decimal(sumAmount) : new Decimal(0),
lastDate: lastDate || null,
firstDate: firstDate || null,
}
}
}

View File

@ -30,9 +30,9 @@ async function calculateBalance(
// TODO why we have to use toString() here?
const balance = decay.balance.add(amount.toString())
const transactionLinkRepository = getCustomRepository(TransactionLinkRepository)
const toHoldAvailable = await transactionLinkRepository.sumAmountToHoldAvailable(userId, time)
const { sumHoldAvailableAmount } = await transactionLinkRepository.summary(userId, time)
if (balance.minus(toHoldAvailable.toString()).lessThan(0)) {
if (balance.minus(sumHoldAvailableAmount.toString()).lessThan(0)) {
return null
}
return { balance, lastTransactionId: lastTransaction.id, decay }

View File

@ -1,52 +0,0 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import Decimal from 'decimal.js-light'
import { SaveOptions, RemoveOptions } from '@dbTools/typeorm'
import { Transaction as dbTransaction } from '@entity/Transaction'
import { calculateDecay } from './decay'
import { TransactionTypeId } from '@enum/TransactionTypeId'
import { Transaction } from '@model/Transaction'
import { User } from '@model/User'
const virtualDecayTransaction = (
balance: Decimal,
balanceDate: Date,
time: Date = new Date(),
user: User,
): Transaction => {
const decay = calculateDecay(balance, balanceDate, time)
// const balance = decay.balance.minus(lastTransaction.balance)
const decayDbTransaction: dbTransaction = {
id: -1,
userId: -1,
previous: -1,
typeId: TransactionTypeId.DECAY,
amount: decay.decay ? decay.decay : new Decimal(0), // new Decimal(0), // this kinda is wrong, but helps with the frontend query
balance: decay.balance,
balanceDate: time,
decay: decay.decay ? decay.decay : new Decimal(0),
decayStart: decay.start,
memo: '',
creationDate: null,
hasId: function (): boolean {
throw new Error('Function not implemented.')
},
save: function (options?: SaveOptions): Promise<dbTransaction> {
throw new Error('Function not implemented.')
},
remove: function (options?: RemoveOptions): Promise<dbTransaction> {
throw new Error('Function not implemented.')
},
softRemove: function (options?: SaveOptions): Promise<dbTransaction> {
throw new Error('Function not implemented.')
},
recover: function (options?: SaveOptions): Promise<dbTransaction> {
throw new Error('Function not implemented.')
},
reload: function (): Promise<void> {
throw new Error('Function not implemented.')
},
}
return new Transaction(decayDbTransaction, user)
}
export { virtualDecayTransaction }

View File

@ -0,0 +1,82 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import { Transaction } from '@model/Transaction'
import { SaveOptions, RemoveOptions } from '@dbTools/typeorm'
import { Transaction as dbTransaction } from '@entity/Transaction'
import { TransactionTypeId } from '@enum/TransactionTypeId'
import { calculateDecay } from './decay'
import { User } from '@model/User'
import Decimal from 'decimal.js-light'
const defaultModelFunctions = {
hasId: function (): boolean {
throw new Error('Function not implemented.')
},
save: function (options?: SaveOptions): Promise<dbTransaction> {
throw new Error('Function not implemented.')
},
remove: function (options?: RemoveOptions): Promise<dbTransaction> {
throw new Error('Function not implemented.')
},
softRemove: function (options?: SaveOptions): Promise<dbTransaction> {
throw new Error('Function not implemented.')
},
recover: function (options?: SaveOptions): Promise<dbTransaction> {
throw new Error('Function not implemented.')
},
reload: function (): Promise<void> {
throw new Error('Function not implemented.')
},
}
const virtualLinkTransaction = (
balance: Decimal,
amount: Decimal,
holdAvailableAmount: Decimal,
decay: Decimal,
createdAt: Date,
validUntil: Date,
user: User,
): Transaction => {
const linkDbTransaction: dbTransaction = {
id: -2,
userId: -1,
previous: -1,
typeId: TransactionTypeId.TRANSACTION_LINK,
amount: amount,
balance: balance,
balanceDate: validUntil,
decayStart: createdAt,
decay: decay,
memo: '',
creationDate: null,
...defaultModelFunctions,
}
return new Transaction(linkDbTransaction, user)
}
const virtualDecayTransaction = (
balance: Decimal,
balanceDate: Date,
time: Date = new Date(),
user: User,
): Transaction => {
const decay = calculateDecay(balance, balanceDate, time)
// const balance = decay.balance.minus(lastTransaction.balance)
const decayDbTransaction: dbTransaction = {
id: -1,
userId: -1,
previous: -1,
typeId: TransactionTypeId.DECAY,
amount: decay.decay ? decay.decay : new Decimal(0), // new Decimal(0), // this kinda is wrong, but helps with the frontend query
balance: decay.balance,
balanceDate: time,
decay: decay.decay ? decay.decay : new Decimal(0),
decayStart: decay.start,
memo: '',
creationDate: null,
...defaultModelFunctions,
}
return new Transaction(decayDbTransaction, user)
}
export { virtualLinkTransaction, virtualDecayTransaction }

View File

@ -47,6 +47,15 @@ KLICKTIPP_APIKEY_EN=
GRAPHQL_URI=https://stage1.gradido.net/graphql
ADMIN_AUTH_URL=https://stage1.gradido.net/admin/authenticate?token={token}
META_URL=http://localhost
META_TITLE_DE="Gradido Dein Dankbarkeitskonto"
META_TITLE_EN="Gradido - Your gratitude account"
META_DESCRIPTION_DE="Dankbarkeit ist die Währung der neuen Zeit. Immer mehr Menschen entfalten ihr Potenzial und gestalten eine gute Zukunft für alle."
META_DESCRIPTION_EN="Gratitude is the currency of the new age. More and more people are unleashing their potential and shaping a good future for all."
META_KEYWORDS_DE="Grundeinkommen, Währung, Dankbarkeit, Schenk-Ökonomie, Natürliche Ökonomie des Lebens, Ökonomie, Ökologie, Potenzialentfaltung, Schenken und Danken, Kreislauf des Lebens, Geldsystem"
META_KEYWORDS_EN="Basic Income, Currency, Gratitude, Gift Economy, Natural Economy of Life, Economy, Ecology, Potential Development, Giving and Thanking, Cycle of Life, Monetary System"
META_AUTHOR="Bernd Hückstädt - Gradido-Akademie"
# admin
WALLET_AUTH_URL=https://stage1.gradido.net/authenticate?token={token}
WALLET_URL=https://stage1.gradido.net/login

View File

@ -1,3 +1,11 @@
META_URL=http://localhost
META_TITLE_DE="Gradido Dein Dankbarkeitskonto"
META_TITLE_EN="Gradido - Your gratitude account"
META_DESCRIPTION_DE="Dankbarkeit ist die Währung der neuen Zeit. Immer mehr Menschen entfalten ihr Potenzial und gestalten eine gute Zukunft für alle."
META_DESCRIPTION_EN="Gratitude is the currency of the new age. More and more people are unleashing their potential and shaping a good future for all."
META_KEYWORDS_DE="Grundeinkommen, Währung, Dankbarkeit, Schenk-Ökonomie, Natürliche Ökonomie des Lebens, Ökonomie, Ökologie, Potenzialentfaltung, Schenken und Danken, Kreislauf des Lebens, Geldsystem"
META_KEYWORDS_EN="Basic Income, Currency, Gratitude, Gift Economy, Natural Economy of Life, Economy, Ecology, Potential Development, Giving and Thanking, Cycle of Life, Monetary System"
META_AUTHOR="Bernd Hückstädt - Gradido-Akademie"
GRAPHQL_URI=http://localhost/graphql
DEFAULT_PUBLISHER_ID=2896
ADMIN_AUTH_URL=http://localhost/admin/authenticate?token={token}

View File

@ -1,3 +1,11 @@
META_URL=$META_URL
META_TITLE_DE=$META_TITLE_DE
META_TITLE_EN=$META_TITLE_EN
META_DESCRIPTION_DE=$META_DESCRIPTION_DE
META_DESCRIPTION_EN=$META_DESCRIPTION_EN
META_KEYWORDS_DE=$META_KEYWORDS_DE
META_KEYWORDS_EN=$META_KEYWORDS_EN
META_AUTHOR=$META_AUTHOR
GRAPHQL_URI=$GRAPHQL_URI
DEFAULT_PUBLISHER_ID=2896
ADMIN_AUTH_URL=$ADMIN_AUTH_URL

View File

@ -16,6 +16,12 @@ module.exports = {
'no-console': ['error'],
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'vue/component-name-in-template-casing': ['error', 'kebab-case'],
'vue/no-static-inline-styles': [
'error',
{
allowBinding: false,
},
],
'prettier/prettier': [
'error',
{

18
frontend/.stylelintrc.js Normal file
View File

@ -0,0 +1,18 @@
'use strict';
module.exports = {
extends: ["stylelint-config-standard-scss", "stylelint-config-recommended-vue"],
overrides: [
{
files: "**/*.{scss}",
customSyntax: "postcss-scss",
extends: ["stylelint-config-standard-scss"],
},
{
files: "**/*.vue",
customSyntax: "postcss-html",
extends: ["stylelint-config-recommended-vue"],
}
]
};

View File

@ -1,7 +1,7 @@
##################################################################################
# BASE ###########################################################################
##################################################################################
FROM node:12.19.0-alpine3.10 as base
FROM node:16-alpine3.14 as base
# ENVs (available in production aswell, can be overwritten by commandline or env file)
## DOCKER_WORKDIR would be a classical ARG, but that is not multi layer persistent - shame
@ -31,8 +31,8 @@ LABEL org.label-schema.schema-version="1.0"
LABEL maintainer="support@ogradido.net"
# Install Additional Software
## install: git
#RUN apk --no-cache add git
## install: node-gyp dependencies
RUN apk --no-cache add g++ make python3
# Settings
## Expose Container Port

View File

@ -6,9 +6,10 @@
"start": "node run/server.js",
"serve": "vue-cli-service serve --open",
"build": "vue-cli-service build",
"dev": "yarn run serve",
"analyse-bundle": "yarn build && webpack-bundle-analyzer dist/webpack.stats.json",
"lint": "eslint --max-warnings=0 --ext .js,.vue .",
"dev": "yarn run serve",
"stylelint": "stylelint --max-warnings=0 '**/*.{scss,vue}'",
"i18n:report": "vue-cli-service i18n:report --src './src/**/*.?(js|vue)' --locales './src/locales/**/*.json'",
"test": "TZ=UTC jest --coverage",
"locales": "scripts/missing-keys.sh && scripts/sort.sh"
@ -52,7 +53,6 @@
"vee-validate": "^3.4.5",
"vue": "2.6.12",
"vue-apollo": "^3.0.7",
"vue-cli-plugin-i18n": "^1.0.1",
"vue-flatpickr-component": "^8.1.2",
"vue-focus": "^2.1.0",
"vue-i18n": "^8.22.4",
@ -75,9 +75,17 @@
"babel-plugin-component": "^1.1.0",
"babel-plugin-transform-require-context": "^0.1.1",
"dotenv-webpack": "^7.0.3",
"node-sass": "^6.0.1",
"postcss": "^8.4.8",
"postcss-html": "^1.3.0",
"postcss-scss": "^4.0.3",
"sass": "1.32.13",
"sass-loader": "^10",
"stats-webpack-plugin": "^0.7.0",
"stylelint": "^14.5.3",
"stylelint-config-recommended-vue": "^1.3.0",
"stylelint-config-standard-scss": "^3.0.0",
"vue-cli-plugin-i18n": "^1.0.1",
"vue-html-webpack-plugin": "^3.2.2",
"vue-template-compiler": "^2.6.11",
"webpack-bundle-analyzer": "^4.5.0"
},

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

View File

@ -1,7 +1,7 @@
<!--
=========================================================
* Gradido Konto - v0.0.1
* Gradido Konto - v1.6.1
=========================================================
* Product Page: https://www.gradido.net
@ -17,16 +17,39 @@
<!DOCTYPE html>
<html>
<head>
<meta name="title" lang="de" content="<%= htmlWebpackPlugin.options.meta.title_de %>">
<meta name="title" lang="en" content="<%= htmlWebpackPlugin.options.meta.title_en %>">
<meta name="description" lang="de" content="<%= htmlWebpackPlugin.options.meta.description_de %>">
<meta name="description" lang="en" content="<%= htmlWebpackPlugin.options.meta.description_en %>">
<meta name="keywords" lang="de" content="<%= htmlWebpackPlugin.options.meta.keywords_de %>">
<meta name="keywords" lang="en" content="<%= htmlWebpackPlugin.options.meta.keywords_en %>">
<meta name="author" content="<%= htmlWebpackPlugin.options.meta.author %>">
<meta name="url" content="<%= htmlWebpackPlugin.options.meta.url %>">
<meta name="identifier-URL" content="<%= htmlWebpackPlugin.options.meta.url %>">
<meta charset="utf-8">
<link rel="icon" type="image/png" sizes="96x96" href="<%= webpackConfig.output.publicPath %>favicon.png">
<meta name="robots" content="index,follow">
<link rel='canonical' href='<%= htmlWebpackPlugin.options.meta.url %>'>
<link rel="icon" type="image/png" sizes="96x96" href="./favicon.png">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<title>Gradido Account</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<!-- Fonts -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
<meta property="og:title" content="<%= htmlWebpackPlugin.options.meta.title_de %>" />
<meta property="og:description" content="<%= htmlWebpackPlugin.options.meta.description_de %>" />
<meta property="og:type" content="Website" />
<meta property="og:url" content="<%= htmlWebpackPlugin.options.meta.url %>" />
<meta property="og:image" content="<%= htmlWebpackPlugin.options.meta.url %>/img/gradido-wallet-650-400.jpg" />
<meta lang="de" name="twitter:title" content="<%= htmlWebpackPlugin.options.meta.title_de %>">
<meta lang="en" name="twitter:title" content="<%= htmlWebpackPlugin.options.meta.title_en %>">
<meta lang="de" name="twitter:description" content="<%= htmlWebpackPlugin.options.meta.description_de %>">
<meta lang="en" name="twitter:description" content="<%= htmlWebpackPlugin.options.meta.description_en %>">
<meta name="twitter:image" content="<%= htmlWebpackPlugin.options.meta.url %>/img/gradido-wallet-650-400.jpg">
<meta name="twitter:card" content="summary_large_image">
</head>
<body>
<div class="wrapper" id="app">

File diff suppressed because it is too large Load Diff

View File

@ -3,8 +3,6 @@
$alert-padding-y: 1rem !default;
$alert-padding-x: 1.5rem !default;
$alert-border-radius: $border-radius !default;
$alert-bg-level: -2 !default;
$alert-border-level: -2 !default;
$alert-color-level: 0 !default;

View File

@ -1,14 +1,11 @@
// Badges
$badge-font-size: 66% !default;
$badge-font-weight: $font-weight-bold !default;
$badge-padding-y: .35rem !default;
$badge-padding-x: .375rem !default;
$badge-padding-y: 0.35rem !default;
$badge-padding-x: 0.375rem !default;
$badge-border-radius: $border-radius !default;
$badge-text-transfom: uppercase;
$badge-pill-padding-x: .875em !default;
$badge-pill-padding-x: 0.875em !default;
$badge-pill-border-radius: 10rem !default;
$badge-circle-size: 2rem !default;

View File

@ -1,5 +1,4 @@
// Body
$body-bg: #f8f9fe !default;
$body-color: $gray-700 !default;

View File

@ -1,23 +1,18 @@
// Buttons + Forms
$input-btn-padding-y: .625rem !default;
$input-btn-padding-x: .75rem !default;
$input-btn-padding-y: 0.625rem !default;
$input-btn-padding-x: 0.75rem !default;
$input-btn-line-height: $shape-height-base !default;
$input-btn-focus-width: 0 !default;
$input-btn-focus-color: rgba($component-active-bg, 1) !default;
$input-btn-focus-box-shadow: none !default;
$input-btn-padding-y-sm: .25rem !default;
$input-btn-padding-x-sm: .5rem !default;
$input-btn-padding-y-sm: 0.25rem !default;
$input-btn-padding-x-sm: 0.5rem !default;
$input-btn-line-height-sm: $shape-height-sm !default;
$input-btn-padding-y-lg: .875rem !default;
$input-btn-padding-y-lg: 0.875rem !default;
$input-btn-padding-x-lg: 1rem !default;
$input-btn-line-height-lg: $shape-height-lg !default;
$input-btn-border-width: 1px !default;
$input-btn-font-size-sm: .75rem !default;
$input-btn-font-size: .875rem !default;
$input-btn-font-size-lg: .875rem !default;
$input-btn-font-size-sm: 0.75rem !default;
$input-btn-font-size: 0.875rem !default;
$input-btn-font-size-lg: 0.875rem !default;

View File

@ -3,33 +3,23 @@
$btn-padding-y: $input-btn-padding-y !default;
$btn-padding-x: $input-btn-padding-x + 0.5 !default;
$btn-line-height: $input-btn-line-height !default;
$btn-padding-y-sm: $input-btn-padding-y-sm !default;
$btn-padding-x-sm: $input-btn-padding-x-sm !default;
$btn-line-height-sm: $input-btn-line-height-sm !default;
$btn-padding-y-lg: $input-btn-padding-y-lg !default;
$btn-padding-x-lg: $input-btn-padding-x-lg !default;
$btn-line-height-lg: $input-btn-line-height-lg !default;
$btn-border-width: $input-btn-border-width !default;
$btn-font-weight: 600 !default;
$btn-text-transform: none !default;
$btn-letter-spacing: .025em !default;
$btn-box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08) !default;
$btn-hover-box-shadow: 0 7px 14px rgba(50,50,93,.1), 0 3px 6px rgba(0,0,0,.08) !default;
$btn-letter-spacing: 0.025em !default;
$btn-box-shadow: 0 4px 6px rgb(50 50 93 / 11%), 0 1px 3px rgb(0 0 0 / 8%) !default;
$btn-hover-box-shadow: 0 7px 14px rgb(50 50 93 / 10%), 0 3px 6px rgb(0 0 0 / 8%) !default;
$btn-focus-box-shadow: $btn-hover-box-shadow !default;
$btn-focus-width: $input-btn-focus-width !default;
$btn-active-box-shadow: none !default;
$btn-hover-translate-y: -1px !default;
.btn-outline-secondary {
color: #4385b1 !important;
}
}

View File

@ -4,15 +4,14 @@ $card-spacer-y: 1.25rem !default;
$card-spacer-x: 1.5rem !default;
$card-border-width: $border-width !default;
$card-border-radius: $border-radius !default;
$card-border-color: rgba($black, .05) !default;
$card-border-color: rgba($black, 0.05) !default;
$card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;
$card-cap-bg: $white !default;
$card-bg: $white !default;
$card-img-overlay-padding: 1.25rem !default;
//$card-group-margin: ($grid-gutter-width / 2);
//$card-deck-margin: $card-group-margin !default;
// $card-group-margin: ($grid-gutter-width / 2);
// $card-deck-margin: $card-group-margin !default;
$card-columns-count: 3 !default;
$card-columns-gap: 1.25rem !default;

View File

@ -2,7 +2,6 @@
$chart-height: 350px !default;
$chart-height-sm: 230px !default;
$chart-legend-margin-top: 2.5rem !default;
$chart-legend-font-size: $font-size-sm !default;
$chart-legend-color: $text-muted !default;

View File

@ -4,6 +4,6 @@ $close-font-size: $font-size-base * 1.5 !default;
$close-font-weight: $font-weight-bold !default;
$close-bg: transparent !default;
$close-hover-bg: transparent !default;
$close-color: rgba(0, 0, 0, .6) !default !default;
$close-hover-color: rgba(0, 0, 0, .9) !default;
$close-color: rgb(0 0 0 / 60%) !default !default;
$close-hover-color: rgb(0 0 0 / 90%) !default;
$close-text-shadow: none !default;

View File

@ -1,6 +1,6 @@
// Color system
@use "sass:map";
@use "sass:color";
$white: #fff !default;
$gray-100: #f6f9fc !default;
@ -13,9 +13,9 @@ $gray-700: #525f7f !default; // Line p color
$gray-800: #32325d !default; // Line heading color
$gray-900: #212529 !default;
$black: #000 !default;
$grays: () !default;
$grays: map-merge((
$grays: map.merge(
(
"100": $gray-100,
"200": $gray-200,
"300": $gray-300,
@ -25,8 +25,9 @@ $grays: map-merge((
"700": $gray-700,
"800": $gray-800,
"900": $gray-900
), $grays);
),
$grays
);
$blue: #5e72e4 !default;
$indigo: #5603ad !default;
$purple: #8965e0 !default;
@ -37,9 +38,9 @@ $yellow: #ffd600 !default;
$green: #2dce89 !default;
$teal: #11cdef !default;
$cyan: #2bffc6 !default;
$colors: () !default;
$colors: map-merge((
$colors: map.merge(
(
"blue": $blue,
"indigo": $indigo,
"purple": $purple,
@ -55,8 +56,9 @@ $colors: map-merge((
"light": $gray-400,
"lighter": $gray-200,
"gray-dark": $gray-800
), $colors);
),
$colors
);
$default: #172b4d !default;
$primary: #5e72e4 !default;
$secondary: #f7fafc !default;
@ -66,8 +68,7 @@ $warning: $orange !default;
$danger: $red !default;
$light: $gray-500 !default;
$dark: $gray-900 !default;
$darker: darken($gray-900, 15%) !default;
$darker: color.adjust($gray-900, $lightness: -15%) !default;
$facebook: #3b5999 !default;
$twitter: #1da1f2 !default;
$google-plus: #dd4b39 !default;
@ -76,10 +77,10 @@ $pinterest: #bd081c !default;
$youtube: #cd201f !default;
$slack: #3aaf85 !default;
$dribbble: #ea4c89 !default;
$github: #222222 !default;
$github: #222 !default;
$theme-colors: () !default;
$theme-colors: map-merge((
$theme-colors: map.merge(
(
"default": $default,
"primary": $primary,
"secondary": $secondary,
@ -91,10 +92,12 @@ $theme-colors: map-merge((
"neutral": $white,
"dark": $dark,
"darker": $darker
), $theme-colors);
),
$theme-colors
);
$brand-colors: () !default;
$brand-colors: map-merge((
$brand-colors: map.merge(
(
"facebook": $facebook,
"twitter": $twitter,
"google-plus": $google-plus,
@ -104,20 +107,23 @@ $brand-colors: map-merge((
"slack": $slack,
"dribbble": $dribbble,
"github": $github
), $brand-colors);
),
$brand-colors
);
$shape-colors: () !default;
$shape-colors: map-merge((
$shape-colors: map.merge(
(
"default": #32325d,
"primary": #5533ff,
"primary": #53f,
"secondary": #24b47e,
"neutral": #e9ecef,
"blue-gray": #b2cbe1,
), $shape-colors);
),
$shape-colors
);
$shapes-primary-colors: () !default;
$shapes-primary-colors: map-merge((
$shapes-primary-colors: map.merge(
(
"step-1-gradient-bg": #281483,
"step-2-gradient-bg": #8f6ed5,
"step-3-gradient-bg": #d782d9,
@ -126,10 +132,12 @@ $shapes-primary-colors: map-merge((
"span-3-bg": #4f40ff,
"span-4-bg": #25ddf5,
"span-5-bg": #1fa2ff
), $shapes-primary-colors);
),
$shapes-primary-colors
);
$shapes-default-colors: () !default;
$shapes-default-colors: map-merge((
$shapes-default-colors: map.merge(
(
"step-1-gradient-bg": #7795f8,
"step-2-gradient-bg": #6772e5,
"step-3-gradient-bg": #555abf,
@ -138,10 +146,12 @@ $shapes-default-colors: map-merge((
"span-3-bg": #6f8ff8,
"span-4-bg": #76eea7,
"span-5-bg": #6adaff
), $shapes-default-colors);
),
$shapes-default-colors
);
$shapes-light-colors: () !default;
$shapes-light-colors: map-merge((
$shapes-light-colors: map.merge(
(
"step-1-gradient-bg": #b2cbe1,
"step-2-gradient-bg": #f6f9fc,
"step-3-gradient-bg": #f6f9fc,
@ -150,10 +160,12 @@ $shapes-light-colors: map-merge((
"span-3-bg": #b9d5ed,
"span-4-bg": #74e4a2,
"span-5-bg": #008169
), $shapes-light-colors);
),
$shapes-light-colors
);
$shapes-dark-colors: () !default;
$shapes-dark-colors: map-merge((
$shapes-dark-colors: map.merge(
(
"step-1-gradient-bg": #32325d,
"step-2-gradient-bg": #32325d,
"step-3-gradient-bg": #32325d,
@ -162,16 +174,18 @@ $shapes-dark-colors: map-merge((
"span-3-bg": #25254d,
"span-4-bg": #d782d9,
"span-5-bg": #008169
), $shapes-dark-colors);
),
$shapes-dark-colors
);
// Translucent color variations
$translucent-color-opacity: .6 !default;
$translucent-color-opacity: 0.6 !default;
// Set a specific jump point for requesting color jumps
$theme-color-interval: 8% !default;
// The yiq lightness value that determines when the lightness of color changes from "dark" to "light". Acceptable values are between 0 and 255.
// The yiq lightness value that determines when the lightness of color changes
// from "dark" to "light". Acceptable values are between 0 and 255.
$yiq-contrasted-threshold: 200 !default;
// Customize the light and dark text colors for use in our YIQ color contrast function.
@ -182,7 +196,6 @@ $yiq-text-light: $white !default;
$star-rating-color: $gray-400 !default;
$star-rating-color-active: $yellow !default;
$favorite-color: $yellow !default;
$like-color: $blue !default;
$love-color: $red !default;

View File

@ -3,29 +3,22 @@
$shape-height-xl: 1.5 !default;
$shape-height-lg: 1.5 !default;
$shape-height-sm: 1.5 !default;
$border-width: 1px !default;
$border-color: $gray-200 !default;
$border-radius: .375rem !default;
$border-radius-xl: .5rem !default;
$border-radius-lg: .4375rem !default;
$border-radius-sm: .25rem !default;
$box-shadow-sm: 0 0 .5rem rgba($gray-600, .075) !default;
$box-shadow: 0 0 2rem 0 rgba($gray-600, .15) !default;
$box-shadow-lg: 0 0 3rem rgba($gray-600, .175) !default;
$border-radius: 0.375rem !default;
$border-radius-xl: 0.5rem !default;
$border-radius-lg: 0.4375rem !default;
$border-radius-sm: 0.25rem !default;
$box-shadow-sm: 0 0 0.5rem rgba($gray-600, 0.075) !default;
$box-shadow: 0 0 2rem 0 rgba($gray-600, 0.15) !default;
$box-shadow-lg: 0 0 3rem rgba($gray-600, 0.175) !default;
$component-active-color: $white !default;
$component-active-bg: theme-color("primary") !default;
$component-active-border-color: theme-color("primary") !default;
$component-hover-color: $gray-300 !default;
$component-hover-bg: $gray-300 !default;
$component-hover-border-color: $gray-300 !default;
$caret-width: .3em !default;
$transition-base: all .15s ease !default;
$transition-fade: opacity .15s linear !default;
$transition-collapse: height .35s ease !default;
$caret-width: 0.3em !default;
$transition-base: all 0.15s ease !default;
$transition-fade: opacity 0.15s linear !default;
$transition-collapse: height 0.35s ease !default;

View File

@ -3,31 +3,27 @@
$custom-control-gutter: 1.75rem !default;
$custom-control-spacer-x: 1rem !default;
$custom-control-indicator-size: 1.25rem !default;
$custom-control-indicator-bg: $input-bg !default;
$custom-control-indicator-border-width: 1px !default;
$custom-control-indicator-border-color: $input-border-color !default;
$custom-control-indicator-box-shadow: none !default;
$custom-control-indicator-focus-box-shadow: $custom-control-indicator-box-shadow !default;
$custom-control-indicator-hover-color: $component-hover-color !default;
$custom-control-indicator-hover-bg: $component-hover-bg !default;
$custom-control-indicator-hover-border-color: $component-hover-border-color !default;
$custom-control-indicator-active-color: $component-active-color !default;
$custom-control-indicator-active-bg: $component-active-bg !default;
$custom-control-indicator-active-border-color: $component-active-border-color !default;
$custom-control-indicator-active-box-shadow: $custom-control-indicator-box-shadow !default;
$custom-control-indicator-checked-color: $component-active-color !default;
$custom-control-indicator-checked-bg: $component-active-bg !default;
$custom-control-indicator-checked-border-color: $component-active-border-color !default;
$custom-control-indicator-checked-box-shadow: $custom-control-indicator-box-shadow !default;
$custom-control-indicator-checked-disabled-bg: rgba(theme-color("primary"), .5) !default;
// $custom-control-indicator-checked-disabled-bg: rgb(theme-color("primary") 0.5) !default;
$custom-control-indicator-checked-disabled-bg: theme-color("primary") !default;
$custom-control-indicator-disabled-bg: $gray-200 !default;
$custom-control-label-disabled-color: $gray-600 !default;
$custom-checkbox-indicator-border-radius: $border-radius-sm !default;
//$custom-checkbox-indicator-icon-checked: str-replace(url("data:image/svg+xml !default;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E"), "#", "%23") !default;
// $custom-checkbox-indicator-icon-checked: str-replace(url("data:image/svg+xml !default;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E"), "#", "%23") !default;

View File

@ -1,28 +1,23 @@
// Datepicker
@use "sass:color";
$datepicker-border-radius: $card-border-radius !default;
$datepicker-dropdown-padding: 20px 22px !default;
$datepicker-cell-transition: $transition-base !default;
$datepicker-cell-hover-background: lighten($gray-400, 55%);
$datepicker-cell-hover-background: color.adjust($gray-400, $lightness: 55%);
$datepicker-cell-border-radius: 50% !default;
$datepicker-cell-width: 36px !default;
$datepicker-cell-height: 36px !default;
$datepicker-disabled-cell-color: $gray-300 !default;
$datepicker-disabled-old-new-color: $gray-500 !default;
$datepicker-header-cell-border-radius: $border-radius !default;
$datepicker-active-color: $white !default;
$datepicker-active-background: theme-color("primary") !default;
$datepicker-active-box-shadow: none !default;
$datepicker-range-background: theme-color("primary") !default;
$datepicker-range-cell-focused-background: darken($datepicker-range-background, 5%);
$datepicker-range-cell-focused-background: color.adjust($datepicker-range-background, $lightness: -5%);
$datepicker-range-color: $white !default;
$datepicker-range-highlighted-bg: $gray-200 !default;
$datepicker-dropdown-border: lighten($gray-400, 40%);
$datepicker-dropdown-border: color.adjust($gray-400, $lightness: 40%);
$datepicker-dropdown-bg: $white !default;
$datepicker-highlighted-bg: $datepicker-active-background !default;

View File

@ -2,6 +2,8 @@
$dropdown-bg: $white !default;
$dropdown-border-width: 0 !default;
$dropdown-border-color: rgba($black, .15) !default;
$dropdown-border-color: rgba($black, 0.15) !default;
$dropdown-border-radius: $border-radius-lg !default;
$dropdown-box-shadow: 0 50px 100px rgba(50, 50, 93, .1), 0 15px 35px rgba(50, 50, 93, .15), 0 5px 15px rgba(0, 0, 0, .1) !default;
$dropdown-box-shadow: 0 50px 100px rgb(50 50 93 / 10%),
0 15px 35px rgb(50 50 93 / 15%),
0 5px 15px rgb(0 0 0 / 10%) !default;

View File

@ -1,88 +1,63 @@
// Fonts
$font-family-sans-serif: Open Sans, sans-serif !default;
$font-family-sans-serif: open sans, sans-serif !default;
$font-family-base: $font-family-sans-serif !default;
$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`
$font-size-xl: ($font-size-base * 1.5);
$font-size-lg: ($font-size-base * 1.25);
$font-size-sm: ($font-size-base * .875);
$font-size-xs: ($font-size-base * .75);
$font-size-sm: ($font-size-base * 0.875);
$font-size-xs: ($font-size-base * 0.75);
$font-weight-light: 300 !default;
$font-weight-normal: 400 !default;
$font-weight-bold: 600 !default;
$font-weight-extra-bold: 700 !default;
$font-weight-base: $font-weight-normal !default;
$line-height-base: 1.5 !default;
$shape-height-base: 1.5 !default;
$h1-font-size: $font-size-base * 1.625 !default;
$h2-font-size: $font-size-base * 1.25 !default;
$h3-font-size: $font-size-base * 1.0625 !default;
$h4-font-size: $font-size-base * .9375 !default;
$h5-font-size: $font-size-base * .8125 !default;
$h6-font-size: $font-size-base * .625 !default;
$h4-font-size: $font-size-base * 0.9375 !default;
$h5-font-size: $font-size-base * 0.8125 !default;
$h6-font-size: $font-size-base * 0.625 !default;
$headings-margin-bottom: ($spacer / 2);
$headings-font-family: inherit !default;
$headings-font-weight: $font-weight-bold !default;
$headings-line-height: 1.5 !default;
$headings-color: $gray-800 !default;
$heading-letter-spacing: .025em !default;
$heading-font-size: .95rem !default;
$heading-letter-spacing: 0.025em !default;
$heading-font-size: 0.95rem !default;
$heading-text-transform: uppercase !default;
$heading-font-weight: $headings-font-weight !default;
$heading-title-letter-spacing: .025em !default;
$heading-title-letter-spacing: 0.025em !default;
$heading-title-font-size: 1.375rem !default;
$heading-title-font-weight: $font-weight-bold !default;
$heading-title-text-transform: uppercase !default;
$heading-section-letter-spacing: .025em !default;
$heading-section-letter-spacing: 0.025em !default;
$heading-section-font-size: 1.375rem !default;
$heading-section-font-weight: $font-weight-bold !default;
$heading-section-text-transform: uppercase !default;
$display1-size: 3.3rem !default;
$display2-size: 2.75rem !default;
$display3-size: 2.1875rem !default;
$display4-size: 1.6275rem !default;
$display1-weight: $font-weight-bold !default;
$display2-weight: $font-weight-bold !default;
$display3-weight: $font-weight-bold !default;
$display4-weight: $font-weight-bold !default;
$display-line-height: $headings-line-height !default;
$paragraph-font-size: 1rem !default;
$paragraph-font-weight: 300 !default;
$paragraph-line-height: 1.7 !default;
$lead-font-size: ($paragraph-font-size * 1.25) !default;
$lead-font-weight: 300 !default;
$small-font-size: 80% !default;
$text-muted: $gray-600 !default;
$blockquote-small-color: $gray-600 !default;
$blockquote-font-size: ($font-size-base * 1.25) !default;
$hr-border-color: rgba($black, .1);
$hr-border-color: rgba($black, 0.1);
$hr-border-width: $border-width !default;
$mark-padding: .2em !default;
$mark-padding: 0.2em !default;
$dt-font-weight: $font-weight-bold !default;
$list-inline-padding: .5rem !default;
$list-inline-padding: 0.5rem !default;
$mark-bg: #fcf8e3 !default;
$hr-margin-y: $spacer * 2 !default;

View File

@ -2,9 +2,7 @@
$footer-padding-y: 2.5rem;
$footer-padding-x: 0;
$footer-link-font-size: .85rem !default;
$footer-link-font-size: 0.85rem !default;
$footer-bg: theme-color("secondary") !default;
$footer-color: $gray-600 !default;
$footer-link-color: $gray-600 !default;

View File

@ -1,6 +1,7 @@
// Form validation
@use "sass:color";
$form-feedback-valid-bg: lighten($success, 15%) !default;
$form-feedback-valid-bg: color.adjust($success, $lightness: 15%) !default;
$form-feedback-valid-color: theme-color("success") !default;
$form-feedback-invalid-bg: lighten($warning, 15%) !default;
$form-feedback-invalid-bg: color.adjust($warning, $lightness: 15%) !default;
$form-feedback-invalid-color: theme-color("warning") !default;

View File

@ -1,4 +1,3 @@
// Global settings
$enable-caret: true !default;
@ -8,4 +7,3 @@ $enable-gradients: false !default;
$enable-transitions: true !default;
$enable-grid-classes: true !default;
$enable-print-styles: true !default;

View File

@ -11,7 +11,6 @@ $grid-breakpoints: (
@include _assert-ascending($grid-breakpoints, "$grid-breakpoints");
@include _assert-starts-at-zero($grid-breakpoints);
// Grid containers
//
// Define the maximum width of `.container` for different screen sizes.

View File

@ -1,4 +1,3 @@
// Icons
$icon-size: 3rem !default;

View File

@ -3,7 +3,6 @@
$input-group-addon-color: $input-placeholder-color !default;
$input-group-addon-bg: $input-bg !default;
$input-group-addon-border-color: $input-border-color !default;
$input-group-addon-focus-color: $input-focus-color !default;
$input-group-addon-focus-bg: $input-focus-bg !default;
$input-group-addon-focus-border-color: $input-focus-border-color !default;

View File

@ -1,45 +1,37 @@
// Input
@use "sass:color";
$input-padding-y: $input-btn-padding-y !default;
$input-padding-x: $input-btn-padding-x !default;
$input-line-height: $input-btn-line-height !default;
$input-padding-y-sm: $input-btn-padding-y-sm !default;
$input-padding-x-sm: $input-btn-padding-x-sm !default;
$input-line-height-sm: $input-btn-line-height-sm !default;
$input-padding-y-lg: $input-btn-padding-y-lg !default;
$input-padding-x-lg: $input-btn-padding-x-lg !default;
$input-line-height-lg: $input-btn-line-height-lg !default;
$input-border-radius: $border-radius !default;
$input-border-radius-xl: $border-radius-xl !default;
$input-border-radius-lg: $border-radius-lg !default;
$input-border-radius-sm: $border-radius-sm !default;
$input-bg: $white !default;
$input-disabled-bg: $gray-200 !default;
$input-muted-bg: #F7FAFE !default;
$input-focus-muted-bg: lighten($input-muted-bg, 1%) !default;
$input-alternative-box-shadow: 0 1px 3px rgba(50,50,93,.15), 0 1px 0 rgba(0,0,0,.02) !default;
$input-focus-alternative-box-shadow: 0 4px 6px rgba(50,50,93,.11),0 1px 3px rgba(0,0,0,.08) !default;
$input-muted-bg: #f7fafe !default;
$input-focus-muted-bg: color.adjust($input-muted-bg, $lightness: 1%) !default;
$input-alternative-box-shadow: 0 1px 3px rgb(50 50 93 / 15%), 0 1px 0 rgb(0 0 0 / 2%) !default;
$input-focus-alternative-box-shadow: 0 4px 6px rgb(50 50 93 / 11%),0 1px 3px rgb(0 0 0 / 8%) !default;
$input-color: $gray-600 !default;
$input-border-color: #cad1d7 !default;
$input-border-width: $input-btn-border-width !default;
$input-box-shadow: none !default; // 0 1px 3px 0 $gray-400 !default;
$input-focus-bg: $white !default;
$input-focus-border-color: rgba(50,151,211,.25) !default;
$input-focus-border-color: rgb(50 151 211 / 25%) !default;
$input-focus-color: $input-color !default;
$input-focus-width: 0 !default;
$input-focus-box-shadow: none !default; //0 1px 3px 0 $gray-500 !default;
$input-focus-box-shadow: none !default; // 0 1px 3px 0 $gray-500 !default;
$input-placeholder-color: $gray-500 !default;
$input-focus-placeholder-color: $gray-500 !default;
$input-height-border: $input-border-width * 2 !default;
$input-transition: all .2s cubic-bezier(0.68, -0.55, 0.265, 1.55) !default;
$input-transition: all 0.2s cubic-bezier(0.68, -0.55, 0.265, 1.55) !default;

View File

@ -1,6 +1,7 @@
// Links
@use "sass:color";
$link-color: $primary !default;
$link-decoration: none !default;
$link-hover-color: darken($link-color, 15%) !default;
$link-hover-color: color.adjust($link-color, $lightness: -15%) !default;
$link-hover-decoration: none !default;

View File

@ -1,23 +1,18 @@
// List group
$list-group-bg: $white !default;
$list-group-border-color: $border-color !default; //rgba($black, .125);
$list-group-border-color: $border-color !default; // rgba($black, .125);
$list-group-border-width: $border-width !default;
$list-group-border-radius: $border-radius !default;
$list-group-item-padding-y: 1rem !default;
$list-group-item-padding-x: 1rem !default;
$list-group-hover-bg: $gray-100 !default;
$list-group-active-color: $component-active-color !default;
$list-group-active-bg: $component-active-bg !default;
$list-group-active-border-color: $list-group-active-bg !default;
$list-group-disabled-color: $gray-600 !default;
$list-group-disabled-bg: $list-group-bg !default;
$list-group-action-color: $gray-700 !default;
$list-group-action-hover-color: $list-group-action-color !default;
$list-group-action-active-color: $list-group-action-color !default;
$list-group-action-active-bg: $gray-200 !default;

View File

@ -1,22 +1,18 @@
// Modals
$modal-inner-padding: 1.5rem !default;
$modal-lg: 800px !default;
$modal-md: 500px !default;
$modal-sm: 380px !default;
$modal-title-line-height: 1.1;
$modal-content-bg: $white !default;
$modal-content-border-color: rgba($black, .2) !default;
$modal-content-border-color: rgba($black, 0.2) !default;
$modal-content-border-width: 0 !default;
$modal-content-border-radius: $border-radius-lg !default;
$modal-content-box-shadow-xs: 0 15px 35px rgba(50,50,93,.2), 0 5px 15px rgba(0,0,0,.17);
$modal-content-box-shadow-sm-up: 0 15px 35px rgba(50,50,93,.2), 0 5px 15px rgba(0,0,0,.17);
$modal-content-box-shadow-xs: 0 15px 35px rgb(50 50 93 / 20%), 0 5px 15px rgb(0 0 0 / 17%);
$modal-content-box-shadow-sm-up: 0 15px 35px rgb(50 50 93 / 20%), 0 5px 15px rgb(0 0 0 / 17%);
$modal-backdrop-bg: $black !default;
$modal-backdrop-opacity: .16 !default;
$modal-backdrop-opacity: 0.16 !default;
$modal-header-border-color: $gray-200 !default;
$modal-footer-border-color: $modal-header-border-color !default;
$modal-header-border-width: $modal-content-border-width !default;

View File

@ -1,49 +1,41 @@
// Navbar
$navbar-transition: all .15s linear !default;
$navbar-transition: all 0.15s linear !default;
$navbar-padding-y: 1rem !default;
$navbar-padding-x: 1rem !default;
$navbar-nav-link-padding-x: 1rem !default;
$navbar-nav-link-padding-y: 1rem !default;
$navbar-nav-link-font-size: .9rem !default;
$navbar-nav-link-font-size: 0.9rem !default;
$navbar-nav-link-font-weight: 400 !default;
$navbar-nav-link-text-transform: normal !default;
$navbar-nav-link-letter-spacing: 0 !default;
$navbar-nav-link-border-radius: $border-radius !default;
$navbar-search-width: 270px !default;
$navbar-search-bg: transparent !default;
$navbar-search-border-radius: 2rem !default;
$navbar-search-border-width: 2px !default;
$navbar-dark-bg: transparent !default;
$navbar-dark-hover-bg: rgba(255, 255, 255, .1) !default;
$navbar-dark-active-bg: rgba(255, 255, 255, .1) !default;
$navbar-dark-color: rgba($white, .95) !default;
$navbar-dark-hover-color: rgba($white, .65) !default;
$navbar-dark-active-color: rgba($white, .65) !default;
$navbar-dark-disabled-color: rgba($white, .25) !default;
$navbar-dark-hover-bg: rgb(255 255 255 / 10%) !default;
$navbar-dark-active-bg: rgb(255 255 255 / 10%) !default;
$navbar-dark-color: rgba($white, 0.95) !default;
$navbar-dark-hover-color: rgba($white, 0.65) !default;
$navbar-dark-active-color: rgba($white, 0.65) !default;
$navbar-dark-disabled-color: rgba($white, 0.25) !default;
$navbar-dark-toggler-border-color: transparent !default;
$navbar-search-dark-border-color: rgba(255, 255, 255, .6) !default;
$navbar-search-dark-color: rgba(255, 255, 255, .6) !default;
$navbar-search-dark-focus-border-color: rgba(255, 255, 255, .9) !default;
$navbar-search-dark-focus-color: rgba(255, 255, 255, .9) !default;
$navbar-search-dark-border-color: rgb(255 255 255 / 60%) !default;
$navbar-search-dark-color: rgb(255 255 255 / 60%) !default;
$navbar-search-dark-focus-border-color: rgb(255 255 255 / 90%) !default;
$navbar-search-dark-focus-color: rgb(255 255 255 / 90%) !default;
$navbar-light-bg: transparent !default;
$navbar-light-hover-bg: rgba(0, 0, 0, .1) !default;
$navbar-light-active-bg: rgba(0, 0, 0, .1) !default;
$navbar-light-hover-bg: rgb(0 0 0 / 10%) !default;
$navbar-light-active-bg: rgb(0 0 0 / 10%) !default;
$navbar-light-border-color: $gray-100 !default;
$navbar-light-color: rgba($black, .5) !default;
$navbar-light-hover-color: rgba($black, .7) !default;
$navbar-light-active-color: rgba($black, .9) !default;
$navbar-light-disabled-color: rgba($black, .3) !default;
$navbar-light-color: rgba($black, 0.5) !default;
$navbar-light-hover-color: rgba($black, 0.7) !default;
$navbar-light-active-color: rgba($black, 0.9) !default;
$navbar-light-disabled-color: rgba($black, 0.3) !default;
$navbar-light-toggler-border-color: transparent !default;
$navbar-search-light-border-color: rgba(0, 0, 0, .6) !default;
$navbar-search-light-color: rgba(0, 0, 0, .6) !default;
$navbar-search-light-focus-border-color: rgba(0, 0, 0, .9) !default;
$navbar-search-light-focus-color: rgba(0, 0, 0, .9) !default;
$navbar-search-light-border-color: rgb(0 0 0 / 60%) !default;
$navbar-search-light-color: rgb(0 0 0 / 60%) !default;
$navbar-search-light-focus-border-color: rgb(0 0 0 / 90%) !default;
$navbar-search-light-focus-color: rgb(0 0 0 / 90%) !default;

View File

@ -1,23 +1,20 @@
// Navs
@use "sass:color";
$nav-link-padding-y: .25rem !default;
$nav-link-padding-x: .75rem !default;
$nav-link-padding-y: 0.25rem !default;
$nav-link-padding-x: 0.75rem !default;
$nav-link-color: $gray-700 !default;
$nav-link-hover-color: theme-color("primary") !default;
$nav-link-disabled-color: $gray-600 !default;
$nav-pills-padding-y: .75rem !default;
$nav-pills-padding-y: 0.75rem !default;
$nav-pills-padding-x: 1rem !default;
$nav-pills-space-x: 1rem !default;
$nav-pills-bg: $white !default;
$nav-pills-border-width: 1px !default;
$nav-pills-border-color: theme-color("primary") !default;
$nav-pills-border-radius: $border-radius !default;
$nav-pills-link-color: theme-color("primary") !default;
$nav-pills-link-hover-color: darken(theme-color("primary"), 5%) !default;
$nav-pills-link-hover-color: color.adjust(theme-color("primary"), $lightness: -5%) !default;
$nav-pills-link-active-color: color-yiq(theme-color("primary")) !default;
$nav-pills-link-active-bg: theme-color("primary") !default;
$nav-pills-box-shadow: $btn-box-shadow !default;

View File

@ -4,14 +4,11 @@ $noui-target-bg: #eceeef !default;
$noui-target-thickness: 5px !default;
$noui-target-border-radius: 5px !default;
$noui-target-border-color: 0 !default;
$noui-target-box-shadow: inset 0 1px 2px rgba(90,97,105,.1) !default;
$noui-target-box-shadow: inset 0 1px 2px rgb(90 97 105 / 10%) !default;
$noui-slider-connect-bg: $primary !default;
$noui-slider-connect-disabled-bg: #b2b2b2 !default;
$noui-handle-width: 15px !default;
$noui-handle-bg: theme-color("primary") !default;
$noui-handle-border: 0 !default;
$noui-handle-border-radius: 100% !default;
$noui-origin-border-radius: 2px !default;

View File

@ -13,17 +13,15 @@ $pagination-bg: $white !default;
$pagination-border-width: $border-width !default;
$pagination-border-color: $gray-300 !default;
//$pagination-focus-box-shadow: $btn-hover-box-shadow !default;
// $pagination-focus-box-shadow: $btn-hover-box-shadow !default;
$pagination-hover-color: $gray-600 !default;
$pagination-hover-bg: $gray-300 !default;
$pagination-hover-border-color: $gray-300 !default;
$pagination-active-color: $component-active-color !default;
$pagination-active-bg: $component-active-bg !default;
$pagination-active-border-color: $pagination-active-bg !default;
$pagination-active-box-shadow: $btn-hover-box-shadow !default;
$pagination-disabled-color: $gray-600 !default;
$pagination-disabled-bg: $white !default;
$pagination-disabled-border-color: $gray-300 !default;

View File

@ -4,21 +4,17 @@ $popover-font-size: $font-size-sm !default;
$popover-bg: $white !default;
$popover-max-width: 276px !default;
$popover-border-width: 1px !default;
$popover-border-color: rgba($black, .05) !default;
$popover-border-color: rgba($black, 0.05) !default;
$popover-border-radius: $border-radius-lg !default;
$popover-box-shadow: 0px .5rem 2rem 0px rgba($black, .2) !default;
$popover-box-shadow: 0 0.5rem 2rem 0 rgba($black, 0.2) !default;
$popover-header-bg: $popover-bg !default;
$popover-header-color: $headings-color !default;
$popover-header-padding-y: .5rem !default;
$popover-header-padding-x: .95rem !default;
$popover-header-padding-y: 0.5rem !default;
$popover-header-padding-x: 0.95rem !default;
$popover-body-color: $body-color !default;
$popover-body-padding-y: $popover-header-padding-y !default;
$popover-body-padding-x: $popover-header-padding-x !default;
$popover-arrow-width: 1.5rem !default;
$popover-arrow-height: .75rem !default;
$popover-arrow-height: 0.75rem !default;
$popover-arrow-color: $popover-bg !default;
$popover-arrow-outer-color: transparent !default;

View File

@ -1,5 +1,4 @@
// Body
$body-bg: #f8f9fe !default;
$body-color: $gray-700 !default;

View File

@ -1,21 +1,22 @@
// Spacing
@use "sass:map";
$spacer: 1rem !default;
$spacers: () !default;
$spacers: map-merge((
-9: -($spacer * 10),
-8: -($spacer * 8),
-7: -($spacer * 6),
-6: -($spacer * 4.5),
-5: -($spacer * 3),
-4: -($spacer * 1.5),
-3: -$spacer,
-2: -($spacer * .5),
-1: -($spacer * .25),
$spacers: map.merge(
(
-9: - ($spacer * 10),
-8: - ($spacer * 8),
-7: - ($spacer * 6),
-6: - ($spacer * 4.5),
-5: - ($spacer * 3),
-4: - ($spacer * 1.5),
-3: - $spacer,
-2: - ($spacer * 0.5),
-1: - ($spacer * 0.25),
0: 0,
1: ($spacer * .25),
2: ($spacer * .5),
1: ($spacer * 0.25),
2: ($spacer * 0.5),
3: $spacer,
4: ($spacer * 1.5),
5: ($spacer * 3),
@ -23,15 +24,19 @@ $spacers: map-merge((
7: ($spacer * 6),
8: ($spacer * 8),
9: ($spacer * 10)
), $spacers);
),
$spacers
);
// This variable affects the `.h-*` and `.w-*` classes.
$sizes: () !default;
$sizes: map-merge((
$sizes: map.merge(
(
25: 25%,
50: 50%,
75: 75%,
100: 100%
), $sizes);
),
$sizes
);

View File

@ -1,32 +1,26 @@
// Tables
@use "sass:color";
$table-cell-padding: 1rem !default;
$table-cell-padding-sm: .5rem !default;
$table-cell-padding-sm: 0.5rem !default;
$table-bg: transparent !default;
$table-accent-bg: rgba($black, .05) !default;
$table-accent-bg: rgba($black, 0.05) !default;
$table-hover-bg: $gray-100 !default;
$table-active-bg: $table-hover-bg !default;
$table-border-width: $border-width !default;
$table-border-color: $gray-200 !default;
$table-head-bg: $gray-100 !default;
$table-head-color: $gray-600 !default;
$table-head-spacer-y: .75rem !default;
$table-head-font-size: .65rem !default;
$table-head-spacer-y: 0.75rem !default;
$table-head-font-size: 0.65rem !default;
$table-head-font-weight: $font-weight-bold !default;
$table-head-text-transform: uppercase !default;
$table-head-letter-spacing: 1px !default;
$table-body-font-size: .8125rem !default;
$table-body-font-size: 0.8125rem !default;
$table-dark-bg: theme-color("default") !default;
$table-dark-accent-bg: rgba($white, .05) !default;
$table-dark-hover-bg: rgba($white, .075) !default;
$table-dark-border-color: lighten(theme-color("default"), 7%) !default;
$table-dark-accent-bg: rgba($white, 0.05) !default;
$table-dark-hover-bg: rgba($white, 0.075) !default;
$table-dark-border-color: color.adjust(theme-color("default"), $lightness: 7%) !default;
$table-dark-color: $body-bg !default;
$table-dark-head-bg: lighten(theme-color("default"), 4%) !default;
$table-dark-head-color: lighten(theme-color("default"), 35%) !default;
$table-dark-head-bg: color.adjust(theme-color("default"), $lightness: 4%) !default;
$table-dark-head-color: color.adjust(theme-color("default"), $lightness: 35%) !default;

View File

@ -1,15 +1,12 @@
// Vertical navbar
$navbar-vertical-box-shadow: 0 0 2rem 0 rgba(136, 152, 170, .15) !important;
$navbar-vertical-box-shadow: 0 0 2rem 0 rgb(136 152 170 / 15%) !important;
$navbar-vertical-width: 250px !default;
$navbar-vertical-padding-x: 1.5rem !default;
$navbar-vertical-nav-link-padding-x: 1.5rem !default;
$navbar-vertical-nav-link-padding-y: .65rem !default;
$navbar-vertical-nav-link-padding-y: 0.65rem !default;
$navbar-icon-min-width: 2.25rem !default;
$navbar-breadcrumb-padding-y: $nav-link-padding-y !default;
$navbar-breadcrumb-padding-x: 0 !default;
$navbar-light-bg: $white !default;
$navbar-light-border-color: $border-color !default;

View File

@ -1,9 +1,8 @@
// Bootstrap (4.5.3) functions
@import "~bootstrap/scss/functions";
@import "custom/variables";
// @import "~bootstrap/scss/variables"; wird am
// ende der custom/variables angehangen
@ -22,13 +21,16 @@
@import "~bootstrap/scss/close";
@import "~bootstrap/scss/code";
@import "~bootstrap/scss/custom-forms";
@import "~bootstrap/scss/dropdown";
// @import "~bootstrap/scss/dropdown";
@import "~bootstrap/scss/forms";
@import "~bootstrap/scss/functions";
// @import "~bootstrap/scss/functions";
@import "~bootstrap/scss/grid";
@import "~bootstrap/scss/input-group";
@import "~bootstrap/scss/list-group";
@import "~bootstrap/scss/mixins";
// @import "~bootstrap/scss/mixins";
@import "~bootstrap/scss/modal";
@import "~bootstrap/scss/nav";
@import "~bootstrap/scss/navbar";
@ -48,94 +50,161 @@
@import "~bootstrap/scss/bootstrap";
// Bootstrap-vue (2.21.1) scss
@import '~bootstrap-vue/src/index.scss';
@import "~bootstrap-vue/src/index";
.alert-success {
color: #155724;
background-color: #d4edda;
border-color: #c3e6cb;
}
.alert-danger {
color: #721c24;
background-color: #f8d7da;
border-color: #f5c6cb;
}
.b-toast-danger .toast .toast-header {
color: #721c24;
background-color: rgba(248,215,218,.85);
border-bottom-color: rgba(245,198,203,.85);
background-color: rgb(248 215 218 / 85%);
border-bottom-color: rgb(245 198 203 / 85%);
}
.b-toast-danger .toast .toast-body{
background-color: rgba(252,237,238,.85);
border-color: rgba(245,198,203,.85);
.b-toast-danger .toast .toast-body {
background-color: rgb(252 237 238 / 85%);
border-color: rgb(245 198 203 / 85%);
color: #721c24;
}
.b-toast-success .toast .toast-header {
color: #155724;
background-color: rgba(212,237,218,.58);
border-bottom-color: rgba(195,230,203,.85);
background-color: rgb(212 237 218 / 58%);
border-bottom-color: rgb(195 230 203 / 85%);
}
.b-toast-success .toast .toast-body{
.b-toast-success .toast .toast-body {
color: #155724;
background-color: rgba(212,237,218,.85);
border-bottom-color: rgba(195,230,203,.85);
background-color: rgb(212 237 218 / 85%);
border-bottom-color: rgb(195 230 203 / 85%);
}
.btn-primary pim {
// .btn-primary pim {
.btn-primary {
background-color: #5a7b02;
border-color: #5e72e4;
}
a,
.copyright {
}
a,
.copyright {
color: #5a7b02;
}
.font1_2em {
}
.font12em {
font-size: 1.2em;
}
.font2em {
}
.font2em {
font-size: 1.5em;
}
.gradido-global-color-text {
}
.gradido-global-color-text {
color: #3d443b;
}
.gradido-global-color-accent {
}
.gradido-global-color-accent {
color: #047006;
}
.gradido-global-color-6e0a9c9e {
}
.gradido-global-color-6e0a9c9e {
color: #000;
}
.gradido-global-color-2d0fb154 {
}
.gradido-global-color-2d0fb154 {
color: #047006;
}
.gradido-global-color-16efe88c {
}
.gradido-global-color-16efe88c {
color: #7ebc55;
}
.gradido-global-color-1939326 {
}
.gradido-global-color-1939326 {
color: #f6fff6;
}
.gradido-global-color-9d79fc1 {
}
.gradido-global-color-9d79fc1 {
color: #047006;
}
.gradido-global-color-6347f4d {
}
.gradido-global-color-6347f4d {
color: #5a7b02;
}
.gradido-global-color-4fbc19a {
}
.gradido-global-color-4fbc19a {
color: #014034;
}
.gradido-global-color-d341874 {
}
.gradido-global-color-d341874 {
color: #b6d939;
}
.gradido-global-color-619d338 {
}
.gradido-global-color-619d338 {
color: #8ebfb1;
}
.gradido-global-color-44819a9 {
}
.gradido-global-color-44819a9 {
color: #026873;
}
.gradido-global-color-gray {
}
.gradido-global-color-gray {
color: #858383;
}
}
.gradido-custom-background {
background-color: #ebebeba3 !important;
}
.gradido-max-width {
width: 100%;
}
.gradido-width-300 {
width: 300px;
}
.gradido-absolute {
position: absolute;
}
.gradido-width-95-absolute {
width: 95%;
position: absolute;
}
.gradido-width-96-absolute {
width: 96%;
position: absolute;
}
.gradido-no-border-radius {
border-radius: 0;
}
.gradido-no-border {
border: 0;
}
.gradido-background-f1 {
background-color: #f1f1f1;
}
.gradido-background-white {
background-color: #fff;
}
.gradido-font-large {
font-size: large;
}
.gradido-font-15rem {
font-size: 1.5rem;
}

View File

@ -1,7 +1,7 @@
<template>
<div class="decayinformation-decay">
<div class="d-flex">
<div style="width: 100%" class="text-center pb-3">
<div class="text-center pb-3 gradido-max-width">
<b-icon icon="droplet-half" height="12" class="mb-2" />
<b>{{ $t('decay.calculation_decay') }}</b>
</div>

View File

@ -1,7 +1,7 @@
<template>
<div class="decayinformation-long">
<div class="d-flex">
<div style="width: 100%" class="text-center pb-3">
<div class="text-center pb-3 gradido-max-width">
<b-icon icon="droplet-half" height="12" class="mb-2" />
<b>{{ $t('decay.calculation_decay') }}</b>
</div>

View File

@ -1,7 +1,7 @@
<template>
<b-row class="transaction-form">
<b-col xl="12" md="12" class="p-0">
<b-card class="p-0 m-0" style="background-color: #ebebeba3 !important">
<b-card class="p-0 m-0 gradido-custom-background">
<!-- -<QrCode @set-transaction="setTransaction"></QrCode> -->
<validation-observer v-slot="{ handleSubmit }" ref="formValidator">
<b-form role="form" @submit.prevent="handleSubmit(onSubmit)" @reset="onReset">
@ -39,8 +39,7 @@
@blur="normalizeEmail()"
type="email"
placeholder="E-Mail"
style="font-size: large"
class="pl-3"
class="pl-3 gradido-font-large"
:disabled="isBalanceDisabled"
></b-form-input>
</b-input-group>
@ -75,8 +74,7 @@
@focus="amountFocused = true"
@blur="normalizeAmount(valid)"
:placeholder="$n(0.01)"
style="font-size: large"
class="pl-3"
class="pl-3 gradido-font-large"
:disabled="isBalanceDisabled"
></b-form-input>
</b-input-group>
@ -105,8 +103,7 @@
id="input-3"
rows="3"
v-model="form.memo"
class="pl-3"
style="font-size: large"
class="pl-3 gradido-font-large"
:disabled="isBalanceDisabled"
></b-form-textarea>
</b-input-group>

View File

@ -2,8 +2,8 @@
<b-container>
<b-row v-if="error">
<b-col>
<b-card class="p-0" style="background-color: #ebebeba3 !important">
<div class="p-4" style="font-size: 1.5rem">
<b-card class="p-0 gradido-custom-background">
<div class="p-4 gradido-font-15rem">
<div>{{ $t('form.sorry') }}</div>
<hr />
@ -29,7 +29,7 @@
</b-row>
<b-row v-if="!error">
<b-col>
<b-card class="p-0" style="background-color: #ebebeba3 !important">
<b-card class="p-0 gradido-custom-background">
<div class="p-4">
{{ $t('form.thx') }}
<hr />

View File

@ -1,5 +1,5 @@
<template>
<div class="component-navbar" style="background-color: #fff">
<div class="component-navbar gradido-background-white">
<b-navbar toggleable="lg" type="light" variant="faded">
<div class="navbar-brand">
<b-navbar-nav @click="$emit('set-visible', false)">

View File

@ -53,8 +53,8 @@ export default {
}
</script>
<style>
#component-sidebar .active,
.component-navbar .active {
.component-navbar .active,
#component-sidebar .active {
font-weight: bold;
}
</style>

View File

@ -3,12 +3,12 @@
<div class="list-group">
<div class="list-group-item gdt-transaction-list-item" v-b-toggle="collapseId">
<!-- icon -->
<div class="text-right" style="position: absolute">
<div class="text-right gradido-absolute">
<b-icon :icon="getLinesByType.icon" :class="getLinesByType.iconclasses"></b-icon>
</div>
<!-- collaps Button -->
<div class="text-right" style="width: 96%; position: absolute">
<div class="text-right gradido-width-96-absolute">
<b-icon
:icon="getCollapseState(id) ? 'caret-up-square' : 'caret-down-square'"
:class="getCollapseState(id) ? 'text-black' : 'text-muted'"

View File

@ -1,8 +1,5 @@
<template>
<div
class="gdt-transaction-collapse p-2 pt-4 pb-4 mb-4"
style="border: 0px; background-color: #f1f1f1"
>
<div class="gdt-transaction-collapse p-2 pt-4 pb-4 mb-4 gradido-no-border gradido-background-f1">
<b-row class="gdt-list-collapse-header-text text-center pb-3">
<b-col class="collapse-headline">
<b>{{ getLinesByType.headline }}</b>

View File

@ -2,7 +2,7 @@
<div class="transaction-slot-creation">
<div @click="visible = !visible">
<!-- Collaps Icon -->
<div class="text-right" style="width: 95%; position: absolute">
<div class="text-right gradido-width-95-absolute">
<b-icon
:icon="visible ? 'caret-up-square' : 'caret-down-square'"
:class="visible ? 'text-black' : 'text-muted'"

View File

@ -2,7 +2,7 @@
<div class="transaction-slot-decay">
<div @click="visible = !visible">
<!-- Collaps Icon -->
<div class="text-right" style="width: 95%; position: absolute">
<div class="text-right gradido-width-95-absolute">
<b-icon
:icon="visible ? 'caret-up-square' : 'caret-down-square'"
:class="visible ? 'text-black' : 'text-muted'"

View File

@ -2,7 +2,7 @@
<div class="transaction-slot-receive">
<div @click="visible = !visible">
<!-- Collaps Icon -->
<div class="text-right" style="width: 95%; position: absolute">
<div class="text-right gradido-width-95-absolute">
<b-icon
:icon="visible ? 'caret-up-square' : 'caret-down-square'"
:class="visible ? 'text-black' : 'text-muted'"

View File

@ -2,7 +2,7 @@
<div class="transaction-slot-send">
<div @click="visible = !visible">
<!-- Collaps Icon -->
<div class="text-right" style="width: 95%; position: absolute">
<div class="text-right gradido-width-95-absolute">
<b-icon
:icon="visible ? 'caret-up-square' : 'caret-down-square'"
:class="visible ? 'text-black' : 'text-muted'"

View File

@ -50,4 +50,3 @@ export default {
},
}
</script>
<style></style>

View File

@ -1,5 +1,5 @@
<template>
<b-card id="formusermail" class="bg-transparent" style="background-color: #ebebeba3 !important">
<b-card id="formusermail" class="bg-transparent gradido-custom-background">
<b-container>
<b-row class="mb-4 text-right">
<b-col class="text-right">
@ -61,4 +61,3 @@ export default {
},
}
</script>
<style></style>

View File

@ -1,8 +1,7 @@
<template>
<b-card
id="formusercoinanimation"
class="bg-transparent"
style="background-color: #ebebeba3 !important; border-radius: 0px"
class="bg-transparent gradido-custom-background gradido-no-border-radius"
>
<div>
<b-row class="mb-3">

View File

@ -18,6 +18,25 @@ const environment = {
DEFAULT_PUBLISHER_ID: process.env.DEFAULT_PUBLISHER_ID || 2896,
}
// const meta = {
// META_URL: process.env.META_URL || 'http://localhost',
// META_TITLE_DE: process.env.META_TITLE_DE || 'Gradido Dein Dankbarkeitskonto',
// META_TITLE_EN: process.env.META_TITLE_EN || 'Gradido - Your gratitude account',
// META_DESCRIPTION_DE:
// process.env.META_DESCRIPTION_DE ||
// 'Dankbarkeit ist die Währung der neuen Zeit. Immer mehr Menschen entfalten ihr Potenzial und gestalten eine gute Zukunft für alle.',
// META_DESCRIPTION_EN:
// process.env.META_DESCRIPTION_EN ||
// 'Gratitude is the currency of the new age. More and more people are unleashing their potential and shaping a good future for all.',
// META_KEYWORDS_DE:
// process.env.META_KEYWORDS_DE ||
// 'Grundeinkommen, Währung, Dankbarkeit, Schenk-Ökonomie, Natürliche Ökonomie des Lebens, Ökonomie, Ökologie, Potenzialentfaltung, Schenken und Danken, Kreislauf des Lebens, Geldsystem',
// META_KEYWORDS_EN:
// process.env.META_KEYWORDS_EN ||
// 'Basic Income, Currency, Gratitude, Gift Economy, Natural Economy of Life, Economy, Ecology, Potential Development, Giving and Thanking, Cycle of Life, Monetary System',
// META_AUTHOR: process.env.META_AUTHOR || 'Bernd Hückstädt - Gradido-Akademie',
// }
const endpoints = {
GRAPHQL_URI: process.env.GRAPHQL_URI || 'http://localhost/graphql',
ADMIN_AUTH_URL: process.env.ADMIN_AUTH_URL || 'http://localhost/admin/authenticate?token={token}',

View File

@ -72,4 +72,3 @@ export default {
},
}
</script>
<style></style>

View File

@ -11,11 +11,11 @@
@logout="logout"
/>
<div class="content-gradido">
<div class="d-none d-sm-none d-md-none d-lg-flex shadow-lg" style="width: 300px">
<div class="d-none d-sm-none d-md-none d-lg-flex shadow-lg gradido-width-300">
<sidebar class="main-sidebar" :elopageUri="elopageUri" @admin="admin" @logout="logout" />
</div>
<div class="main-page" style="width: 100%" @click="visible = false">
<div class="main-page gradido-max-width" @click="visible = false">
<div class="main-content">
<fade-transition :duration="200" origin="center top" mode="out-in">
<router-view

View File

@ -15,7 +15,7 @@
<b-container class="mt--8 p-1">
<b-row class="justify-content-center">
<b-col lg="6" md="8">
<b-card no-body class="border-0" style="background-color: #ebebeba3 !important">
<b-card no-body class="border-0 gradido-custom-background">
<b-card-body class="p-4">
<validation-observer ref="observer" v-slot="{ handleSubmit }">
<b-form role="form" @submit.prevent="handleSubmit(onSubmit)">
@ -96,4 +96,3 @@ export default {
},
}
</script>
<style></style>

View File

@ -16,7 +16,7 @@
<b-container class="mt--8">
<b-row class="justify-content-center">
<b-col lg="5" md="7">
<b-card no-body class="border-0 mb-0" style="background-color: #ebebeba3 !important">
<b-card no-body class="border-0 mb-0 gradido-custom-background">
<b-card-body class="p-4">
<div class="text-center text-muted mb-4 test-communitydata">
<b>{{ $store.state.community.name }}</b>

View File

@ -20,7 +20,7 @@
<b-row class="justify-content-center">
<b-col lg="6" md="8">
<b-card no-body class="border-0" style="background-color: #ebebeba3 !important">
<b-card no-body class="border-0 gradido-custom-background">
<b-card-body class="p-4">
<div class="text-center text-muted mb-4 test-communitydata">
<b>{{ $store.state.community.name }}</b>

View File

@ -56,4 +56,3 @@ export default {
mixins: [getCommunityInfoMixin],
}
</script>
<style></style>

View File

@ -19,7 +19,7 @@
<b-container class="mt--8 p-1">
<b-row class="justify-content-center">
<b-col lg="6" md="8">
<b-card no-body class="border-0" style="background-color: #ebebeba3 !important">
<b-card no-body class="border-0 gradido-custom-background">
<b-card-body class="p-4">
<validation-observer ref="observer" v-slot="{ handleSubmit }">
<b-form role="form" @submit.prevent="handleSubmit(onSubmit)">
@ -118,4 +118,3 @@ export default {
},
}
</script>
<style></style>

View File

@ -4,7 +4,7 @@ import Vue from 'vue'
import GlobalComponents from './globalComponents'
import GlobalDirectives from './globalDirectives'
import './assets/scss/app.scss'
import './assets/scss/gradido.scss'
jest.mock('./globalComponents')
jest.mock('./globalDirectives')

View File

@ -2,6 +2,7 @@ const path = require('path')
const webpack = require('webpack')
const Dotenv = require('dotenv-webpack')
const StatsPlugin = require('stats-webpack-plugin')
const HtmlWebpackPlugin = require('vue-html-webpack-plugin')
// vue.config.js
module.exports = {
@ -38,6 +39,20 @@ module.exports = {
}),
// generate webpack stats to allow analysis of the bundlesize
new StatsPlugin('webpack.stats.json'),
new HtmlWebpackPlugin({
vue: true,
template: 'public/index.html',
meta: {
title_de: process.env.META_TITLE_DE,
title_en: process.env.META_TITLE_EN,
description_de: process.env.META_DESCRIPTION_DE,
description_en: process.env.META_DESCRIPTION_EN,
keywords_de: process.env.META_KEYWORDS_DE,
keywords_en: process.env.META_KEYWORDS_EN,
author: process.env.META_AUTHOR,
url: process.env.META_URL,
},
}),
],
infrastructureLogging: {
level: 'warn', // 'none' | 'error' | 'warn' | 'info' | 'log' | 'verbose'

File diff suppressed because it is too large Load Diff