mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
Merge branch 'master' into redeem-transaction-link-mutation
This commit is contained in:
commit
df7406b145
64
.github/workflows/test.yml
vendored
64
.github/workflows/test.yml
vendored
@ -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
|
||||
|
||||
@ -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
18
admin/.stylelintrc.js
Normal 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"],
|
||||
}
|
||||
]
|
||||
|
||||
};
|
||||
@ -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": [
|
||||
|
||||
@ -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>
|
||||
|
||||
594
admin/yarn.lock
594
admin/yarn.lock
File diff suppressed because it is too large
Load Diff
@ -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',
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
}
|
||||
@ -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, {
|
||||
|
||||
@ -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])
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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 }
|
||||
|
||||
@ -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 }
|
||||
82
backend/src/util/virtualTransactions.ts
Normal file
82
backend/src/util/virtualTransactions.ts
Normal 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 }
|
||||
@ -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
|
||||
@ -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}
|
||||
@ -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
|
||||
@ -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
18
frontend/.stylelintrc.js
Normal 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"],
|
||||
}
|
||||
]
|
||||
|
||||
};
|
||||
@ -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
|
||||
|
||||
@ -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"
|
||||
},
|
||||
|
||||
BIN
frontend/public/img/gradido-wallet-650-400.jpg
Normal file
BIN
frontend/public/img/gradido-wallet-650-400.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 71 KiB |
@ -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
@ -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;
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
// Body
|
||||
|
||||
|
||||
$body-bg: #f8f9fe !default;
|
||||
$body-color: $gray-700 !default;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -0,0 +1 @@
|
||||
// empty
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
|
||||
// Icons
|
||||
|
||||
$icon-size: 3rem !default;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
// Body
|
||||
|
||||
|
||||
$body-bg: #f8f9fe !default;
|
||||
$body-color: $gray-700 !default;
|
||||
|
||||
@ -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
|
||||
);
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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 />
|
||||
|
||||
@ -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)">
|
||||
|
||||
@ -53,8 +53,8 @@ export default {
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
#component-sidebar .active,
|
||||
.component-navbar .active {
|
||||
.component-navbar .active,
|
||||
#component-sidebar .active {
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -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'"
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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'"
|
||||
|
||||
@ -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'"
|
||||
|
||||
@ -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'"
|
||||
|
||||
@ -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'"
|
||||
|
||||
@ -50,4 +50,3 @@ export default {
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style></style>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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}',
|
||||
|
||||
@ -72,4 +72,3 @@ export default {
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style></style>
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -56,4 +56,3 @@ export default {
|
||||
mixins: [getCommunityInfoMixin],
|
||||
}
|
||||
</script>
|
||||
<style></style>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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')
|
||||
|
||||
@ -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
Loading…
x
Reference in New Issue
Block a user