Compare commits

..

4 Commits

Author SHA1 Message Date
Matt Fiddaman
05e2cbede1 bump versions to v25.2.1 2025-02-06 18:21:40 +00:00
Michael Clark
fd42689f00 Fix electron translations (#4317)
* fix electron translations
2025-02-06 18:20:19 +00:00
Matt Fiddaman
dd58376aa9 fix Weblate URL if language has never been changed (#4312)
* fix weblate URL if language has never been changed

* note
2025-02-06 18:20:14 +00:00
Julian Dominguez-Schatz
3c1f98daf1 Fix crashes on reports page with translations enabled (#4303)
* Fix crashes

* Add release notes
2025-02-06 18:20:05 +00:00
1741 changed files with 10906 additions and 34348 deletions

View File

@@ -1,30 +0,0 @@
#!/bin/bash
set -euo pipefail
if [ "$#" -gt 0 ]; then
version="${1#v}"
else
version=""
fi
files_to_bump=(
packages/api/package.json
packages/desktop-client/package.json
packages/desktop-electron/package.json
)
for file in "${files_to_bump[@]}"; do
if [ -z "$version" ]; then
# version format: YY.MM.patch
# logic: if before the 25th, bump patch, else set minor/major to next month
version="$(jq -r .version "$file" | perl -e '($y,$m,$p)=split/\./,<>;$d=(localtime)[3];$d>25?($p=0,++$m,$m>12&&($m=1,++$y)):$p++;print"$y.$m.$p\n"')"
if [ -z "$version" ]; then
echo "Error: Failed to calculate new version" >&2
exit 1
fi
fi
echo "Bumping $file to version $version"
jq '.version = "'"$version"'"' "$file" > "$file.tmp"
mv "$file.tmp" "$file"
done

View File

@@ -68,17 +68,3 @@ jobs:
with:
name: build-stats
path: packages/desktop-client/build-stats
server:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- name: Build Server
run: cd packages/sync-server && yarn build
- name: Upload Build
uses: actions/upload-artifact@v4
with:
name: sync-server
path: packages/sync-server/build

View File

@@ -1,90 +0,0 @@
name: Build Edge Docker Image
# Edge Docker images are built for every commit, and daily
on:
push:
branches:
- master
paths:
- 'packages/sync-server/**'
pull_request:
branches:
- master
paths:
- 'packages/sync-server/**'
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
permissions:
contents: read
packages: write
env:
IMAGES: |
actualbudget/actual-server
ghcr.io/actualbudget/actual-server
ghcr.io/actualbudget/actual
# Creates the following tags:
# - actual-server:edge
TAGS: |
type=edge,value=edge
type=sha
jobs:
build:
if: ${{ github.event.repository.fork == false }}
name: Build Docker image
runs-on: ubuntu-latest
strategy:
matrix:
os: [ubuntu, alpine]
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
# Push to both Docker Hub and Github Container Registry
images: ${{ env.IMAGES }}
flavor: ${{ matrix.os != 'ubuntu' && format('suffix=-{0}', matrix.os) || '' }}
tags: ${{ env.TAGS }}
- name: Login to Docker Hub
uses: docker/login-action@v3
if: github.event_name != 'pull_request'
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
if: github.event_name != 'pull_request'
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Download artifacts
run: ./packages/sync-server/docker/download-artifacts.sh
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push image
uses: docker/build-push-action@v5
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
file: packages/sync-server/docker/edge-${{ matrix.os }}.Dockerfile
platforms: linux/amd64,linux/arm64,linux/arm/v7${{ matrix.os == 'alpine' && ',linux/arm/v6' || '' }}
tags: ${{ steps.meta.outputs.tags }}
build-args: |
GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,89 +0,0 @@
name: Build Stable Docker Image
# Stable Docker images are built for every new tag
on:
push:
tags:
- 'v*.*.*'
paths-ignore:
- README.md
- LICENSE.txt
env:
IMAGES: |
actualbudget/actual-server
ghcr.io/actualbudget/actual-server
ghcr.io/actualbudget/actual
# Creates the following tags:
# - actual-server:latest (see docker/metadata-action flavor inputs, below)
# - actual-server:1.3
# - actual-server:1.3.7
# - actual-server:sha-90dd603
TAGS: |
type=semver,pattern={{version}}
jobs:
build:
name: Build Docker image
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
# Push to both Docker Hub and Github Container Registry
images: ${{ env.IMAGES }}
# Automatically update :latest
flavor: latest=true
tags: ${{ env.TAGS }}
- name: Docker meta for Alpine image
id: alpine-meta
uses: docker/metadata-action@v5
with:
images: ${{ env.IMAGES }}
# Automatically update :latest
flavor: |
latest=true
suffix=-alpine,onlatest=true
tags: ${{ env.TAGS }}
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push ubuntu image
uses: docker/build-push-action@v5
with:
context: .
push: true
file: packages/sync-server/docker/stable-ubuntu.Dockerfile
platforms: linux/amd64,linux/arm64,linux/arm/v7
tags: ${{ steps.meta.outputs.tags }}
- name: Build and push alpine image
uses: docker/build-push-action@v5
with:
context: .
push: true
file: packages/sync-server/docker/stable-alpine.Dockerfile
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6
tags: ${{ steps.alpine-meta.outputs.tags }}

View File

@@ -1,7 +1,6 @@
name: E2E Tests
on:
pull_request:
on: [pull_request]
env:
GITHUB_PR_NUMBER: ${{github.event.pull_request.number}}

View File

@@ -1,35 +0,0 @@
name: Generate release PR
on:
workflow_dispatch:
inputs:
ref:
description: 'Commit or branch to release'
required: true
default: 'master'
version:
description: 'Version number for the release (optional)'
required: false
default: ''
jobs:
generate-release-pr:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.ref }}
- name: Bump package versions
id: bump_package_versions
shell: bash
run: |
.github/actions/bump-package-versions ${{ github.event.inputs.version }}
echo "version=$(jq -r .version packages/desktop-client/package.json)" > $GITHUB_OUTPUT
- name: Create PR
uses: peter-evans/create-pull-request@v7
with:
commit-message: '🔖 (${{ steps.bump_package_versions.outputs.version }})'
title: '🔖 (${{ steps.bump_package_versions.outputs.version }})'
body: 'Generated by [generate-release-pr.yml](../tree/master/.github/workflows/generate-release-pr.yml)'
branch: 'release/v${{ steps.bump_package_versions.outputs.version }}'

View File

@@ -13,9 +13,6 @@ name: Compare Sizes
on:
pull_request_target:
paths:
- 'packages/**'
- '!packages/sync-server/**'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}

3
.gitignore vendored
View File

@@ -53,6 +53,3 @@ bundle.mobile.js.map
# build output
package.tgz
# Fly.io configuration
fly.toml

View File

@@ -9,7 +9,6 @@ if ! [ -d packages/desktop-client/locale ]; then
git clone https://github.com/actualbudget/translations packages/desktop-client/locale
fi
pushd packages/desktop-client/locale > /dev/null
git checkout .
git pull
popd > /dev/null
packages/desktop-client/bin/remove-untranslated-languages

View File

@@ -42,7 +42,6 @@ if ! [ -d packages/desktop-client/locale ]; then
git clone https://github.com/actualbudget/translations packages/desktop-client/locale
fi
pushd packages/desktop-client/locale > /dev/null
git checkout .
git pull
popd > /dev/null
packages/desktop-client/bin/remove-untranslated-languages

View File

@@ -94,7 +94,6 @@ export default [
'packages/api/@types',
'packages/api/migrations',
'packages/crdt/dist',
'packages/component-library/src/icons/**/*',
'packages/desktop-client/bundle.browser.js',
'packages/desktop-client/build/',
'packages/desktop-client/build-electron/',
@@ -103,6 +102,7 @@ export default [
'packages/desktop-client/public/data/',
'packages/desktop-client/**/node_modules/*',
'packages/desktop-client/node_modules/',
'packages/desktop-client/src/icons/**/*',
'packages/desktop-client/test-results/',
'packages/desktop-client/playwright-report/',
'packages/desktop-electron/client-build/',
@@ -113,6 +113,7 @@ export default [
'packages/loot-core/**/node_modules/*',
'packages/loot-core/**/lib-dist/*',
'packages/loot-core/**/proto/*',
'packages/sync-server',
'.yarn/*',
'.github/*',
],
@@ -670,6 +671,7 @@ export default [
},
{
files: ['packages/loot-core/src/**/*'],
rules: {
'no-restricted-imports': [
'warn',
@@ -689,10 +691,6 @@ export default [
message:
'Please use relative imports in loot-core instead of importing from `loot-core/*`',
},
{
group: ['@actual-app/web/*'],
message: 'Please do not import `@actual-app/web` in `loot-core`',
},
],
},
],
@@ -760,7 +758,7 @@ export default [
'packages/desktop-client/src/components/budget/MobileBudget.tsx',
'packages/desktop-client/src/components/budget/envelope/HoldMenu.tsx',
'packages/desktop-client/src/components/budget/envelope/TransferMenu.tsx',
'packages/component-library/src/Menu.tsx',
'packages/desktop-client/src/components/common/Menu.tsx',
'packages/desktop-client/src/components/FinancesApp.tsx',
'packages/desktop-client/src/components/GlobalKeys.ts',
'packages/desktop-client/src/components/LoggedInUser.tsx',
@@ -789,6 +787,21 @@ export default [
'packages/desktop-client/src/components/select/DateSelect.tsx',
'packages/desktop-client/src/components/sidebar/Tools.tsx',
'packages/desktop-client/src/components/sort.tsx',
'packages/desktop-client/src/components/spreadsheet/useSheetValue.ts',
'packages/desktop-client/src/components/table.tsx',
'packages/desktop-client/src/components/Titlebar.tsx',
'packages/desktop-client/src/components/transactions/MobileTransaction.jsx',
'packages/desktop-client/src/components/transactions/SelectedTransactions.jsx',
'packages/desktop-client/src/components/transactions/SimpleTransactionsTable.jsx',
'packages/desktop-client/src/components/transactions/TransactionList.jsx',
'packages/desktop-client/src/components/transactions/TransactionsTable.jsx',
'packages/desktop-client/src/components/transactions/TransactionsTable.test.jsx',
'packages/desktop-client/src/hooks/useAccounts.ts',
'packages/desktop-client/src/hooks/useCategories.ts',
'packages/desktop-client/src/hooks/usePayees.ts',
'packages/desktop-client/src/hooks/useProperFocus.tsx',
'packages/desktop-client/src/hooks/useSelected.tsx',
'packages/loot-core/src/client/query-hooks.tsx',
],
rules: {
@@ -802,7 +815,6 @@ export default [
'**/*.test.ts',
'**/*.test.jsx',
'**/*.test.tsx',
'**/*.spec.js',
],
rules: {
@@ -820,21 +832,4 @@ export default [
'@typescript-eslint/consistent-type-definitions': ['warn', 'type'],
},
},
{
files: ['packages/sync-server/**/*'],
// TODO: fix the issues in these files
rules: {
'import/extensions': 'off',
'rulesdir/typography': 'off',
},
},
{
files: ['packages/sync-server/src/app-gocardless/banks/*.js'],
rules: {
'import/no-anonymous-default-export': 'off',
'import/no-default-export': 'off',
// can be re-enabled after https://github.com/actualbudget/actual/pull/4253
'@typescript-eslint/no-unused-vars': 'off',
},
},
];

View File

@@ -19,9 +19,6 @@
},
"scripts": {
"start": "yarn start:browser",
"start:server": "yarn workspace @actual-app/sync-server start",
"start:server-monitor": "yarn workspace @actual-app/sync-server start-monitor",
"start:server-dev": "NODE_ENV=development BROWSER_OPEN=localhost:5006 yarn npm-run-all --parallel 'start:server-monitor' 'start'",
"start:desktop": "yarn rebuild-electron && npm-run-all --parallel 'start:desktop-*'",
"start:desktop-node": "yarn workspace loot-core watch:node",
"start:desktop-client": "yarn workspace @actual-app/web watch",
@@ -43,7 +40,6 @@
"rebuild-node": "yarn workspace loot-core rebuild",
"lint": "eslint . --max-warnings 0",
"lint:verbose": "DEBUG=eslint:cli-engine eslint . --max-warnings 0",
"install:server": "yarn workspaces focus @actual-app/sync-server --production",
"typecheck": "yarn tsc && tsc-strict",
"jq": "./node_modules/node-jq/bin/jq",
"prepare": "husky"

View File

@@ -1,7 +1,8 @@
import type {
RequestInfo as FetchInfo,
RequestInit as FetchInit,
} from 'node-fetch';
// @ts-ignore: false-positive commonjs module error on build until typescript 5.3
} from 'node-fetch'; // with { 'resolution-mode': 'import' };
// loot-core types
import type { InitConfig } from 'loot-core/server/main';
@@ -15,6 +16,9 @@ import { validateNodeVersion } from './validateNodeVersion';
let actualApp: null | typeof bundle.lib;
export const internal = bundle.lib;
// DEPRECATED: remove the next line in @actual-app/api v7
export * as methods from './methods';
export * from './methods';
export * as utils from './utils';

View File

@@ -1,5 +1,5 @@
// @ts-strict-ignore
import type { Handlers } from 'loot-core/types/handlers';
import type { Handlers } from 'loot-core/src/types/handlers';
import * as injected from './injected';

View File

@@ -1,6 +1,6 @@
{
"name": "@actual-app/api",
"version": "25.3.1",
"version": "25.2.1",
"license": "MIT",
"description": "An API for Actual",
"engines": {

View File

@@ -11,6 +11,7 @@
"outDir": "dist",
"declarationDir": "@types",
"paths": {
"loot-core/src/*": ["./loot-core/*"],
"loot-core/*": ["./@types/loot-core/*"]
}
},

View File

@@ -1,51 +0,0 @@
{
"name": "@actual-app/components",
"version": "0.0.1",
"license": "MIT",
"peerDependencies": {
"react": ">=18.2"
},
"dependencies": {
"@emotion/css": "^11.13.4",
"react-aria-components": "^1.7.0"
},
"devDependencies": {
"@svgr/cli": "^8.1.0",
"@types/react": "^18.2.0",
"react": "18.2.0"
},
"exports": {
"./icons/logo": "./src/icons/logo/index.ts",
"./icons/v0": "./src/icons/v0/index.ts",
"./icons/v1": "./src/icons/v1/index.ts",
"./icons/v2": "./src/icons/v2/index.ts",
"./icons/AnimatedLoading": "./src/icons/AnimatedLoading.tsx",
"./icons/Loading": "./src/icons/Loading.tsx",
"./aligned-text": "./src/AlignedText.tsx",
"./block": "./src/Block.tsx",
"./button": "./src/Button.tsx",
"./card": "./src/Card.tsx",
"./form-error": "./src/FormError.tsx",
"./initial-focus": "./src/InitialFocus.ts",
"./inline-field": "./src/InlineField.tsx",
"./input": "./src/Input.tsx",
"./label": "./src/Label.tsx",
"./menu": "./src/Menu.tsx",
"./paragraph": "./src/Paragraph.tsx",
"./popover": "./src/Popover.tsx",
"./select": "./src/Select.tsx",
"./space-between": "./src/SpaceBetween.tsx",
"./stack": "./src/Stack.tsx",
"./styles": "./src/styles.ts",
"./text": "./src/Text.tsx",
"./text-one-line": "./src/TextOneLine.tsx",
"./theme": "./src/theme.ts",
"./tokens": "./src/tokens.ts",
"./toggle": "./src/Toggle.tsx",
"./tooltip": "./src/Tooltip.tsx",
"./view": "./src/View.tsx"
},
"scripts": {
"generate:icons": "rm src/icons/*/*.tsx; cd src/icons && svgr --template template.ts --index-template index-template.ts --typescript --expand-props start -d . ."
}
}

View File

@@ -1 +0,0 @@
export { SvgLogo } from './Logo';

View File

@@ -1,9 +0,0 @@
export { SvgAdd } from './Add';
export { SvgDelete } from './Delete';
export { SvgExpandArrow } from './ExpandArrow';
export { SvgLeftArrow2 } from './LeftArrow2';
export { SvgMath } from './Math';
export { SvgRightArrow2 } from './RightArrow2';
export { SvgSubtract } from './Subtract';
export { SvgMerge } from './Merge';
export { SvgSplit } from './Split';

View File

@@ -1,311 +0,0 @@
export { SvgAddOutline } from './AddOutline';
export { SvgAddSolid } from './AddSolid';
export { SvgAdd } from './Add';
export { SvgAdjust } from './Adjust';
export { SvgAirplane } from './Airplane';
export { SvgAlbum } from './Album';
export { SvgAlignCenter } from './AlignCenter';
export { SvgAlignJustified } from './AlignJustified';
export { SvgAlignLeft } from './AlignLeft';
export { SvgAlignRight } from './AlignRight';
export { SvgAnchor } from './Anchor';
export { SvgAnnouncement } from './Announcement';
export { SvgApparel } from './Apparel';
export { SvgArrowDown } from './ArrowDown';
export { SvgArrowLeft } from './ArrowLeft';
export { SvgArrowOutlineDown } from './ArrowOutlineDown';
export { SvgArrowOutlineLeft } from './ArrowOutlineLeft';
export { SvgArrowOutlineRight } from './ArrowOutlineRight';
export { SvgArrowOutlineUp } from './ArrowOutlineUp';
export { SvgArrowRight } from './ArrowRight';
export { SvgArrowThickDown } from './ArrowThickDown';
export { SvgArrowThickLeft } from './ArrowThickLeft';
export { SvgArrowThickRight } from './ArrowThickRight';
export { SvgArrowThickUp } from './ArrowThickUp';
export { SvgArrowThinDown } from './ArrowThinDown';
export { SvgArrowThinLeft } from './ArrowThinLeft';
export { SvgArrowThinRight } from './ArrowThinRight';
export { SvgArrowThinUp } from './ArrowThinUp';
export { SvgArrowUp } from './ArrowUp';
export { SvgArtist } from './Artist';
export { SvgAtSymbol } from './AtSymbol';
export { SvgAttachment } from './Attachment';
export { SvgBackspace } from './Backspace';
export { SvgBackwardStep } from './BackwardStep';
export { SvgBackward } from './Backward';
export { SvgBadge } from './Badge';
export { SvgBatteryFull } from './BatteryFull';
export { SvgBatteryHalf } from './BatteryHalf';
export { SvgBatteryLow } from './BatteryLow';
export { SvgBeverage } from './Beverage';
export { SvgBlock } from './Block';
export { SvgBluetooth } from './Bluetooth';
export { SvgBolt } from './Bolt';
export { SvgBookReference } from './BookReference';
export { SvgBookmarkCopy2 } from './BookmarkCopy2';
export { SvgBookmarkCopy3 } from './BookmarkCopy3';
export { SvgBookmarkOutlineAdd } from './BookmarkOutlineAdd';
export { SvgBookmarkOutline } from './BookmarkOutline';
export { SvgBookmark } from './Bookmark';
export { SvgBorderAll } from './BorderAll';
export { SvgBorderBottom } from './BorderBottom';
export { SvgBorderHorizontal } from './BorderHorizontal';
export { SvgBorderInner } from './BorderInner';
export { SvgBorderLeft } from './BorderLeft';
export { SvgBorderNone } from './BorderNone';
export { SvgBorderOuter } from './BorderOuter';
export { SvgBorderRight } from './BorderRight';
export { SvgBorderTop } from './BorderTop';
export { SvgBorderVertical } from './BorderVertical';
export { SvgBox } from './Box';
export { SvgBrightnessDown } from './BrightnessDown';
export { SvgBrightnessUp } from './BrightnessUp';
export { SvgBrowserWindowNew } from './BrowserWindowNew';
export { SvgBrowserWindowOpen } from './BrowserWindowOpen';
export { SvgBrowserWindow } from './BrowserWindow';
export { SvgBug } from './Bug';
export { SvgBuoy } from './Buoy';
export { SvgCalculator } from './Calculator';
export { SvgCalendar } from './Calendar';
export { SvgCamera } from './Camera';
export { SvgChartArea } from './ChartArea';
export { SvgChartBar } from './ChartBar';
export { SvgChartPie } from './ChartPie';
export { SvgChart } from './Chart';
export { SvgChatBubbleDots } from './ChatBubbleDots';
export { SvgCheckAlternative } from './CheckAlternative';
export { SvgCheckmarkOutline } from './CheckmarkOutline';
export { SvgCheckmark } from './Checkmark';
export { SvgCheveronDown } from './CheveronDown';
export { SvgCheveronLeft } from './CheveronLeft';
export { SvgCheveronOutlineDown } from './CheveronOutlineDown';
export { SvgCheveronOutlineLeft } from './CheveronOutlineLeft';
export { SvgCheveronOutlineRight } from './CheveronOutlineRight';
export { SvgCheveronOutlineUp } from './CheveronOutlineUp';
export { SvgCheveronRight } from './CheveronRight';
export { SvgCheveronUp } from './CheveronUp';
export { SvgClipboard } from './Clipboard';
export { SvgCloseOutline } from './CloseOutline';
export { SvgCloseSolid } from './CloseSolid';
export { SvgClose } from './Close';
export { SvgCloudCheck } from './CloudCheck';
export { SvgCloudDownload } from './CloudDownload';
export { SvgCloudUpload } from './CloudUpload';
export { SvgCloudWarning } from './CloudWarning';
export { SvgCloud } from './Cloud';
export { SvgCode } from './Code';
export { SvgCoffee } from './Coffee';
export { SvgCog } from './Cog';
export { SvgColorPalette } from './ColorPalette';
export { SvgCompose } from './Compose';
export { SvgComputerDesktop } from './ComputerDesktop';
export { SvgComputerLaptop } from './ComputerLaptop';
export { SvgConversation } from './Conversation';
export { SvgCopy } from './Copy';
export { SvgCreditCard } from './CreditCard';
export { SvgCurrencyDollar } from './CurrencyDollar';
export { SvgDashboard } from './Dashboard';
export { SvgDateAdd } from './DateAdd';
export { SvgDialPad } from './DialPad';
export { SvgDirections } from './Directions';
export { SvgDocumentAdd } from './DocumentAdd';
export { SvgDocument } from './Document';
export { SvgDotsHorizontalDouble } from './DotsHorizontalDouble';
export { SvgDotsHorizontalTriple } from './DotsHorizontalTriple';
export { SvgDownload } from './Download';
export { SvgDuplicate } from './Duplicate';
export { SvgEditCopy } from './EditCopy';
export { SvgEditCrop } from './EditCrop';
export { SvgEditCut } from './EditCut';
export { SvgEditPencil } from './EditPencil';
export { SvgEducation } from './Education';
export { SvgEnvelope } from './Envelope';
export { SvgEquals } from './Equals';
export { SvgExclamationOutline } from './ExclamationOutline';
export { SvgExclamationSolid } from './ExclamationSolid';
export { SvgExplore } from './Explore';
export { SvgFactory } from './Factory';
export { SvgFastForward } from './FastForward';
export { SvgFastRewind } from './FastRewind';
export { SvgFileDouble } from './FileDouble';
export { SvgFilm } from './Film';
export { SvgFilter } from './Filter';
export { SvgFlag } from './Flag';
export { SvgFlashlight } from './Flashlight';
export { SvgFolderOutlineAdd } from './FolderOutlineAdd';
export { SvgFolderOutline } from './FolderOutline';
export { SvgFolder } from './Folder';
export { SvgFormatBold } from './FormatBold';
export { SvgFormatFontSize } from './FormatFontSize';
export { SvgFormatItalic } from './FormatItalic';
export { SvgFormatTextSize } from './FormatTextSize';
export { SvgFormatUnderline } from './FormatUnderline';
export { SvgForwardStep } from './ForwardStep';
export { SvgForward } from './Forward';
export { SvgGift } from './Gift';
export { SvgGlobe } from './Globe';
export { SvgHandStop } from './HandStop';
export { SvgHardDrive } from './HardDrive';
export { SvgHeadphones } from './Headphones';
export { SvgHeart } from './Heart';
export { SvgHome } from './Home';
export { SvgHot } from './Hot';
export { SvgHourGlass } from './HourGlass';
export { SvgInboxCheck } from './InboxCheck';
export { SvgInboxDownload } from './InboxDownload';
export { SvgInboxFull } from './InboxFull';
export { SvgInbox } from './Inbox';
export { SvgIndentDecrease } from './IndentDecrease';
export { SvgIndentIncrease } from './IndentIncrease';
export { SvgInformationOutline } from './InformationOutline';
export { SvgInformationSolid } from './InformationSolid';
export { SvgKey } from './Key';
export { SvgKeyboard } from './Keyboard';
export { SvgLayers } from './Layers';
export { SvgLibrary } from './Library';
export { SvgLightBulb } from './LightBulb';
export { SvgLink } from './Link';
export { SvgListAdd } from './ListAdd';
export { SvgListBullet } from './ListBullet';
export { SvgList } from './List';
export { SvgLoadBalancer } from './LoadBalancer';
export { SvgLocationCurrent } from './LocationCurrent';
export { SvgLocationFood } from './LocationFood';
export { SvgLocationGasStation } from './LocationGasStation';
export { SvgLocationHotel } from './LocationHotel';
export { SvgLocationMarina } from './LocationMarina';
export { SvgLocationPark } from './LocationPark';
export { SvgLocationRestroom } from './LocationRestroom';
export { SvgLocationShopping } from './LocationShopping';
export { SvgLocation } from './Location';
export { SvgLockClosed } from './LockClosed';
export { SvgLockOpen } from './LockOpen';
export { SvgMap } from './Map';
export { SvgMenu } from './Menu';
export { SvgMic } from './Mic';
export { SvgMinusOutline } from './MinusOutline';
export { SvgMinusSolid } from './MinusSolid';
export { SvgMobileDevices } from './MobileDevices';
export { SvgMoneyBag } from './MoneyBag';
export { SvgMoodHappyOutline } from './MoodHappyOutline';
export { SvgMoodHappySolid } from './MoodHappySolid';
export { SvgMoodNeutralOutline } from './MoodNeutralOutline';
export { SvgMoodNeutralSolid } from './MoodNeutralSolid';
export { SvgMoodSadOutline } from './MoodSadOutline';
export { SvgMoodSadSolid } from './MoodSadSolid';
export { SvgMouse } from './Mouse';
export { SvgMoveBack } from './MoveBack';
export { SvgMusicAlbum } from './MusicAlbum';
export { SvgMusicArtist } from './MusicArtist';
export { SvgMusicNotes } from './MusicNotes';
export { SvgMusicPlaylist } from './MusicPlaylist';
export { SvgNavigationMore } from './NavigationMore';
export { SvgNetwork } from './Network';
export { SvgNewsPaper } from './NewsPaper';
export { SvgNotification } from './Notification';
export { SvgNotificationsOutline } from './NotificationsOutline';
export { SvgNotifications } from './Notifications';
export { SvgPaste } from './Paste';
export { SvgPauseOutline } from './PauseOutline';
export { SvgPauseSolid } from './PauseSolid';
export { SvgPause } from './Pause';
export { SvgPenTool } from './PenTool';
export { SvgPencilWrite } from './PencilWrite';
export { SvgPhone } from './Phone';
export { SvgPhoto } from './Photo';
export { SvgPhpElephant } from './PhpElephant';
export { SvgPiggyBank } from './PiggyBank';
export { SvgPin } from './Pin';
export { SvgPlayOutline } from './PlayOutline';
export { SvgPlay } from './Play';
export { SvgPlaylist } from './Playlist';
export { SvgPlugin } from './Plugin';
export { SvgPortfolio } from './Portfolio';
export { SvgPrinter } from './Printer';
export { SvgPylon } from './Pylon';
export { SvgQuestion } from './Question';
export { SvgQueue } from './Queue';
export { SvgRadarCopy2 } from './RadarCopy2';
export { SvgRadar } from './Radar';
export { SvgRadio } from './Radio';
export { SvgRefresh } from './Refresh';
export { SvgReload } from './Reload';
export { SvgReplyAll } from './ReplyAll';
export { SvgReply } from './Reply';
export { SvgReports } from './Reports';
export { SvgRepost } from './Repost';
export { SvgSaveDisk } from './SaveDisk';
export { SvgScreenFull } from './ScreenFull';
export { SvgSearch } from './Search';
export { SvgSend } from './Send';
export { SvgServers } from './Servers';
export { SvgShare01 } from './Share01';
export { SvgShareAlt } from './ShareAlt';
export { SvgShare } from './Share';
export { SvgShield } from './Shield';
export { SvgShoppingCart } from './ShoppingCart';
export { SvgShowSidebar } from './ShowSidebar';
export { SvgShuffle } from './Shuffle';
export { SvgStandBy } from './StandBy';
export { SvgStarFull } from './StarFull';
export { SvgStation } from './Station';
export { SvgStepBackward } from './StepBackward';
export { SvgStepForward } from './StepForward';
export { SvgStethoscope } from './Stethoscope';
export { SvgStoreFront } from './StoreFront';
export { SvgStrokeWidth } from './StrokeWidth';
export { SvgSubdirectoryLeft } from './SubdirectoryLeft';
export { SvgSubdirectoryRight } from './SubdirectoryRight';
export { SvgSubtract } from './Subtract';
export { SvgSwap } from './Swap';
export { SvgTablet } from './Tablet';
export { SvgTag } from './Tag';
export { SvgTarget } from './Target';
export { SvgTextBox } from './TextBox';
export { SvgTextDecoration } from './TextDecoration';
export { SvgThermometer } from './Thermometer';
export { SvgThumbsDown } from './ThumbsDown';
export { SvgThumbsUp } from './ThumbsUp';
export { SvgTicket } from './Ticket';
export { SvgTime } from './Time';
export { SvgTimer } from './Timer';
export { SvgToolsCopy } from './ToolsCopy';
export { SvgTranslate } from './Translate';
export { SvgTrash } from './Trash';
export { SvgTravelBus } from './TravelBus';
export { SvgTravelCar } from './TravelCar';
export { SvgTravelCase } from './TravelCase';
export { SvgTravelTaxiCab } from './TravelTaxiCab';
export { SvgTravelTrain } from './TravelTrain';
export { SvgTravelWalk } from './TravelWalk';
export { SvgTravel } from './Travel';
export { SvgTrophy } from './Trophy';
export { SvgTuning } from './Tuning';
export { SvgUpload } from './Upload';
export { SvgUsb } from './Usb';
export { SvgUserAdd } from './UserAdd';
export { SvgUserGroup } from './UserGroup';
export { SvgUserSolidCircle } from './UserSolidCircle';
export { SvgUserSolidSquare } from './UserSolidSquare';
export { SvgUser } from './User';
export { SvgVector } from './Vector';
export { SvgVideoCamera } from './VideoCamera';
export { SvgViewCarousel } from './ViewCarousel';
export { SvgViewColumn } from './ViewColumn';
export { SvgViewHide } from './ViewHide';
export { SvgViewList } from './ViewList';
export { SvgViewShow } from './ViewShow';
export { SvgViewTile } from './ViewTile';
export { SvgVolumeDown } from './VolumeDown';
export { SvgVolumeMute } from './VolumeMute';
export { SvgVolumeOff } from './VolumeOff';
export { SvgVolumeUp } from './VolumeUp';
export { SvgWallet } from './Wallet';
export { SvgWatch } from './Watch';
export { SvgWindowNew } from './WindowNew';
export { SvgWindowOpen } from './WindowOpen';
export { SvgWindow } from './Window';
export { SvgWrench } from './Wrench';
export { SvgYinYang } from './YinYang';
export { SvgZoomIn } from './ZoomIn';
export { SvgZoomOut } from './ZoomOut';

View File

@@ -1,51 +0,0 @@
export { SvgAlertTriangle } from './AlertTriangle';
export { SvgArrowButtonDown1 } from './ArrowButtonDown1';
export { SvgArrowButtonLeft1 } from './ArrowButtonLeft1';
export { SvgArrowButtonRight1 } from './ArrowButtonRight1';
export { SvgArrowButtonUp1 } from './ArrowButtonUp1';
export { SvgArrowsExpand3 } from './ArrowsExpand3';
export { SvgArrowsShrink3 } from './ArrowsShrink3';
export { SvgArrowsSynchronize } from './ArrowsSynchronize';
export { SvgCalendar } from './Calendar';
export { SvgCalendar3 } from './Calendar3';
export { SvgCheck } from './Check';
export { SvgCheckAll } from './CheckAll';
export { SvgCheckCircle1 } from './CheckCircle1';
export { SvgCheckCircleHollow } from './CheckCircleHollow';
export { SvgCloseParenthesis } from './CloseParenthesis';
export { SvgCloudUnknown } from './CloudUnknown';
export { SvgCloudUpload } from './CloudUpload';
export { SvgCustomNotesPaper } from './CustomNotesPaper';
export { SvgDownAndRightArrow } from './DownAndRightArrow';
export { SvgDownloadThickBottom } from './DownloadThickBottom';
export { SvgEditSkull1 } from './EditSkull1';
export { SvgFavoriteStar } from './FavoriteStar';
export { SvgFilter2 } from './Filter2';
export { SvgHelp } from './Help';
export { SvgHyperlink2 } from './Hyperlink2';
export { SvgHyperlink3 } from './Hyperlink3';
export { SvgInformationCircle } from './InformationCircle';
export { SvgKey } from './Key';
export { SvgLockClosed } from './LockClosed';
export { SvgMoonStars } from './MoonStars';
export { SvgNavigationMenu } from './NavigationMenu';
export { SvgNotesPaper } from './NotesPaper';
export { SvgNotesPaperText } from './NotesPaperText';
export { SvgOpenParenthesis } from './OpenParenthesis';
export { SvgPencil1 } from './Pencil1';
export { SvgPencilWriteAlternate } from './PencilWriteAlternate';
export { SvgRefreshArrow } from './RefreshArrow';
export { SvgRemove } from './Remove';
export { SvgRemoveAlternate } from './RemoveAlternate';
export { SvgSearch1 } from './Search1';
export { SvgSearchAlternate } from './SearchAlternate';
export { SvgSettingsSliderAlternate } from './SettingsSliderAlternate';
export { SvgSubtract } from './Subtract';
export { SvgSum } from './Sum';
export { SvgSun } from './Sun';
export { SvgSystem } from './System';
export { SvgUncheckAll } from './UncheckAll';
export { SvgUploadThickBottom } from './UploadThickBottom';
export { SvgValidationCheck } from './ValidationCheck';
export { SvgViewHide } from './ViewHide';
export { SvgViewShow } from './ViewShow';

View File

@@ -1,157 +0,0 @@
import { keyframes } from '@emotion/css';
import { theme } from './theme';
import { tokens } from './tokens';
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export type CSSProperties = Record<string, any>;
const MOBILE_MIN_HEIGHT = 40;
const shadowLarge = {
boxShadow: '0 15px 30px 0 rgba(0,0,0,0.11), 0 5px 15px 0 rgba(0,0,0,0.08)',
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export const styles: Record<string, any> = {
incomeHeaderHeight: 70,
cardShadow: '0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)',
monthRightPadding: 5,
menuBorderRadius: 4,
mobileMinHeight: MOBILE_MIN_HEIGHT,
mobileMenuItem: {
fontSize: 17,
fontWeight: 400,
paddingTop: 8,
paddingBottom: 8,
height: MOBILE_MIN_HEIGHT,
minHeight: MOBILE_MIN_HEIGHT,
},
mobileEditingPadding: 12,
altMenuMaxHeight: 250,
altMenuText: {
fontSize: 13,
},
altMenuHeaderText: {
fontSize: 13,
fontWeight: 700,
},
veryLargeText: {
fontSize: 30,
fontWeight: 600,
},
largeText: {
fontSize: 20,
fontWeight: 700,
letterSpacing: 0.5,
},
mediumText: {
fontSize: 15,
fontWeight: 500,
},
smallText: {
fontSize: 13,
},
verySmallText: {
fontSize: 12,
},
tinyText: {
fontSize: 10,
},
page: {
flex: 1,
'@media (max-height: 550px)': {
minHeight: 700, // ensure we can scroll on small screens
},
paddingTop: 8, // height of the titlebar
[`@media (min-width: ${tokens.breakpoint_small})`]: {
paddingTop: 36,
},
},
pageContent: {
paddingLeft: 2,
paddingRight: 2,
[`@media (min-width: ${tokens.breakpoint_small})`]: {
paddingLeft: 20,
paddingRight: 20,
},
},
settingsPageContent: {
padding: 20,
[`@media (min-width: ${tokens.breakpoint_small})`]: {
padding: 'inherit',
},
},
staticText: {
cursor: 'default',
userSelect: 'none',
},
shadow: {
boxShadow: '0 2px 4px 0 rgba(0,0,0,0.1)',
},
shadowLarge,
tnum: {
// eslint-disable-next-line rulesdir/typography
fontFeatureSettings: '"tnum"',
},
notFixed: { fontFeatureSettings: '' },
text: {
fontSize: 16,
// lineHeight: 22.4 // TODO: This seems like trouble, but what's the right value?
},
delayedFadeIn: {
animationName: keyframes({
'0%': { opacity: 0 },
'100%': { opacity: 1 },
}),
animationDuration: '1s',
animationFillMode: 'both',
animationDelay: '0.5s',
},
underlinedText: {
borderBottom: `2px solid`,
},
noTapHighlight: {
WebkitTapHighlightColor: 'transparent',
':focus': {
outline: 'none',
},
},
lineClamp: (lines: number) => {
return {
display: '-webkit-box',
WebkitLineClamp: lines,
WebkitBoxOrient: 'vertical',
overflow: 'hidden',
textOverflow: 'ellipsis',
wordBreak: 'break-word',
};
},
tooltip: {
padding: 5,
...shadowLarge,
borderWidth: 2,
borderRadius: 4,
borderStyle: 'solid',
borderColor: theme.tooltipBorder,
backgroundColor: theme.tooltipBackground,
color: theme.tooltipText,
overflow: 'auto',
},
popover: {
border: 'none',
backgroundColor: theme.menuBackground,
color: theme.menuItemText,
},
// Dynamically set
horizontalScrollbar: null as CSSProperties | null,
lightScrollbar: null as CSSProperties | null,
darkScrollbar: null as CSSProperties | null,
scrollbarWidth: null as number | null,
editorPill: {
color: theme.pillText,
backgroundColor: theme.pillBackground,
borderRadius: 4,
padding: '3px 5px',
},
};

View File

@@ -1,203 +0,0 @@
export const theme = {
pageBackground: 'var(--color-pageBackground)',
pageBackgroundModalActive: 'var(--color-pageBackgroundModalActive)',
pageBackgroundTopLeft: 'var(--color-pageBackgroundTopLeft)',
pageBackgroundBottomRight: 'var(--color-pageBackgroundBottomRight)',
pageBackgroundLineTop: 'var(--color-pageBackgroundLineTop)',
pageBackgroundLineMid: 'var(--color-pageBackgroundLineMid)',
pageBackgroundLineBottom: 'var(--color-pageBackgroundLineBottom)',
pageText: 'var(--color-pageText)',
pageTextLight: 'var(--color-pageTextLight)',
pageTextSubdued: 'var(--color-pageTextSubdued)',
pageTextDark: 'var(--color-pageTextDark)',
pageTextPositive: 'var(--color-pageTextPositive)',
pageTextLink: 'var(--color-pageTextLink)',
pageTextLinkLight: 'var(--color-pageTextLinkLight)',
cardBackground: 'var(--color-cardBackground)',
cardBorder: 'var(--color-cardBorder)',
cardShadow: 'var(--color-cardShadow)',
tableBackground: 'var(--color-tableBackground)',
tableRowBackgroundHover: 'var(--color-tableRowBackgroundHover)',
tableText: 'var(--color-tableText)',
tableTextLight: 'var(--color-tableTextLight)',
tableTextSubdued: 'var(--color-tableTextSubdued)',
tableTextSelected: 'var(--color-tableTextSelected)',
tableTextHover: 'var(--color-tableTextHover)',
tableTextInactive: 'var(--color-tableTextInactive)',
tableHeaderText: 'var(--color-tableHeaderText)',
tableHeaderBackground: 'var(--color-tableHeaderBackground)',
tableBorder: 'var(--color-tableBorder)',
tableBorderSelected: 'var(--color-tableBorderSelected)',
tableBorderHover: 'var(--color-tableBorderHover)',
tableBorderSeparator: 'var(--color-tableBorderSeparator)',
tableRowBackgroundHighlight: 'var(--color-tableRowBackgroundHighlight)',
tableRowBackgroundHighlightText:
'var(--color-tableRowBackgroundHighlightText)',
tableRowHeaderBackground: 'var(--color-tableRowHeaderBackground)',
tableRowHeaderText: 'var(--color-tableRowHeaderText)',
sidebarBackground: 'var(--color-sidebarBackground)',
sidebarItemBackgroundPending: 'var(--color-sidebarItemBackgroundPending)',
sidebarItemBackgroundPositive: 'var(--color-sidebarItemBackgroundPositive)',
sidebarItemBackgroundFailed: 'var(--color-sidebarItemBackgroundFailed)',
sidebarItemAccentSelected: 'var(--color-sidebarItemAccentSelected)',
sidebarItemBackgroundHover: 'var(--color-sidebarItemBackgroundHover)',
sidebarItemText: 'var(--color-sidebarItemText)',
sidebarItemTextSelected: 'var(--color-sidebarItemTextSelected)',
menuBackground: 'var(--color-menuBackground)',
menuItemBackground: 'var(--color-menuItemBackground)',
menuItemBackgroundHover: 'var(--color-menuItemBackgroundHover)',
menuItemText: 'var(--color-menuItemText)',
menuItemTextHover: 'var(--color-menuItemTextHover)',
menuItemTextSelected: 'var(--color-menuItemTextSelected)',
menuItemTextHeader: 'var(--color-menuItemTextHeader)',
menuBorder: 'var(--color-menuBorder)',
menuBorderHover: 'var(--color-menuBorderHover)',
menuKeybindingText: 'var(--color-menuKeybindingText)',
menuAutoCompleteBackground: 'var(--color-menuAutoCompleteBackground)',
menuAutoCompleteBackgroundHover:
'var(--color-menuAutoCompleteBackgroundHover)',
menuAutoCompleteText: 'var(--color-menuAutoCompleteText)',
menuAutoCompleteTextHover: 'var(--color-menuAutoCompleteTextHover)',
menuAutoCompleteTextHeader: 'var(--color-menuAutoCompleteTextHeader)',
menuAutoCompleteItemTextHover: 'var(--color-menuAutoCompleteItemTextHover)',
menuAutoCompleteItemText: 'var(--color-menuAutoCompleteItemText)',
modalBackground: 'var(--color-modalBackground)',
modalBorder: 'var(--color-modalBorder)',
mobileHeaderBackground: 'var(--color-mobileHeaderBackground)',
mobileHeaderText: 'var(--color-mobileHeaderText)',
mobileHeaderTextSubdued: 'var(--color-mobileHeaderTextSubdued)',
mobileHeaderTextHover: 'var(--color-mobileHeaderTextHover)',
mobilePageBackground: 'var(--color-mobilePageBackground)',
mobileNavBackground: 'var(--color-mobileNavBackground)',
mobileNavItem: 'var(--color-mobileNavItem)',
mobileNavItemSelected: 'var(--color-mobileNavItemSelected)',
mobileAccountShadow: 'var(--color-mobileAccountShadow)',
mobileAccountText: 'var(--color-mobileAccountText)',
mobileTransactionSelected: 'var(--color-mobileTransactionSelected)',
mobileViewTheme: 'var(--color-mobileViewTheme)',
mobileConfigServerViewTheme: 'var(--color-mobileConfigServerViewTheme)',
markdownNormal: 'var(--color-markdownNormal)',
markdownDark: 'var(--color-markdownDark)',
markdownLight: 'var(--color-markdownLight)',
buttonMenuText: 'var(--color-buttonMenuText)',
buttonMenuTextHover: 'var(--color-buttonMenuTextHover)',
buttonMenuBackground: 'var(--color-buttonMenuBackground)',
buttonMenuBackgroundHover: 'var(--color-buttonMenuBackgroundHover)',
buttonMenuBorder: 'var(--color-buttonMenuBorder)',
buttonMenuSelectedText: 'var(--color-buttonMenuSelectedText)',
buttonMenuSelectedTextHover: 'var(--color-buttonMenuSelectedTextHover)',
buttonMenuSelectedBackground: 'var(--color-buttonMenuSelectedBackground)',
buttonMenuSelectedBackgroundHover:
'var(--color-buttonMenuSelectedBackgroundHover)',
buttonMenuSelectedBorder: 'var(--color-buttonMenuSelectedBorder)',
buttonPrimaryText: 'var(--color-buttonPrimaryText)',
buttonPrimaryTextHover: 'var(--color-buttonPrimaryTextHover)',
buttonPrimaryBackground: 'var(--color-buttonPrimaryBackground)',
buttonPrimaryBackgroundHover: 'var(--color-buttonPrimaryBackgroundHover)',
buttonPrimaryBorder: 'var(--color-buttonPrimaryBorder)',
buttonPrimaryShadow: 'var(--color-buttonPrimaryShadow)',
buttonPrimaryDisabledText: 'var(--color-buttonPrimaryDisabledText)',
buttonPrimaryDisabledBackground:
'var(--color-buttonPrimaryDisabledBackground)',
buttonPrimaryDisabledBorder: 'var(--color-buttonPrimaryDisabledBorder)',
buttonNormalText: 'var(--color-buttonNormalText)',
buttonNormalTextHover: 'var(--color-buttonNormalTextHover)',
buttonNormalBackground: 'var(--color-buttonNormalBackground)',
buttonNormalBackgroundHover: 'var(--color-buttonNormalBackgroundHover)',
buttonNormalBorder: 'var(--color-buttonNormalBorder)',
buttonNormalShadow: 'var(--color-buttonNormalShadow)',
buttonNormalSelectedText: 'var(--color-buttonNormalSelectedText)',
buttonNormalSelectedBackground: 'var(--color-buttonNormalSelectedBackground)',
buttonNormalDisabledText: 'var(--color-buttonNormalDisabledText)',
buttonNormalDisabledBackground: 'var(--color-buttonNormalDisabledBackground)',
buttonNormalDisabledBorder: 'var(--color-buttonNormalDisabledBorder)',
buttonBareText: 'var(--color-buttonBareText)',
buttonBareTextHover: 'var(--color-buttonBareTextHover)',
buttonBareBackground: 'var(--color-buttonBareBackground)',
buttonBareBackgroundHover: 'var(--color-buttonBareBackgroundHover)',
buttonBareBackgroundActive: 'var(--color-buttonBareBackgroundActive)',
buttonBareDisabledText: 'var(--color-buttonBareDisabledText)',
buttonBareDisabledBackground: 'var(--color-buttonBareDisabledBackground)',
calendarText: 'var(--color-calendarText)',
calendarBackground: 'var(--color-calendarBackground)',
calendarItemText: 'var(--color-calendarItemText)',
calendarItemBackground: 'var(--color-calendarItemBackground)',
calendarSelectedBackground: 'var(--color-calendarSelectedBackground)',
noticeBackground: 'var(--color-noticeBackground)',
noticeBackgroundLight: 'var(--color-noticeBackgroundLight)',
noticeBackgroundDark: 'var(--color-noticeBackgroundDark)',
noticeText: 'var(--color-noticeText)',
noticeTextLight: 'var(--color-noticeTextLight)',
noticeTextDark: 'var(--color-noticeTextDark)',
noticeTextMenu: 'var(--color-noticeTextMenu)',
noticeTextMenuHover: 'var(--color-noticeTextMenuHover)',
noticeBorder: 'var(--color-noticeBorder)',
warningBackground: 'var(--color-warningBackground)',
warningText: 'var(--color-warningText)',
warningTextLight: 'var(--color-warningTextLight)',
warningTextDark: 'var(--color-warningTextDark)',
warningBorder: 'var(--color-warningBorder)',
errorBackground: 'var(--color-errorBackground)',
errorText: 'var(--color-errorText)',
errorTextDark: 'var(--color-errorTextDark)',
errorTextDarker: 'var(--color-errorTextDarker)',
errorTextMenu: 'var(--color-errorTextMenu)',
errorBorder: 'var(--color-errorBorder)',
upcomingBackground: 'var(--color-upcomingBackground)',
upcomingText: 'var(--color-upcomingText)',
upcomingBorder: 'var(--color-upcomingBorder)',
formLabelText: 'var(--color-formLabelText)',
formLabelBackground: 'var(--color-formLabelBackground)',
formInputBackground: 'var(--color-formInputBackground)',
formInputBackgroundSelected: 'var(--color-formInputBackgroundSelected)',
formInputBackgroundSelection: 'var(--color-formInputBackgroundSelection)',
formInputBorder: 'var(--color-formInputBorder)',
formInputTextReadOnlySelection: 'var(--color-formInputTextReadOnlySelection)',
formInputBorderSelected: 'var(--color-formInputBorderSelected)',
formInputText: 'var(--color-formInputText)',
formInputTextSelected: 'var(--color-formInputTextSelected)',
formInputTextPlaceholder: 'var(--color-formInputTextPlaceholder)',
formInputTextPlaceholderSelected:
'var(--color-formInputTextPlaceholderSelected)',
formInputTextSelection: 'var(--color-formInputTextSelection)',
formInputShadowSelected: 'var(--color-formInputShadowSelected)',
formInputTextHighlight: 'var(--color-formInputTextHighlight)',
checkboxText: 'var(--color-checkboxText)',
checkboxBackgroundSelected: 'var(--color-checkboxBackgroundSelected)',
checkboxBorderSelected: 'var(--color-checkboxBorderSelected)',
checkboxShadowSelected: 'var(--color-checkboxShadowSelected)',
checkboxToggleBackground: 'var(--color-checkboxToggleBackground)',
checkboxToggleBackgroundSelected:
'var(--color-checkboxToggleBackgroundSelected)',
checkboxToggleDisabled: 'var(--color-checkboxToggleDisabled)',
pillBackground: 'var(--color-pillBackground)',
pillBackgroundLight: 'var(--color-pillBackgroundLight)',
pillText: 'var(--color-pillText)',
pillTextHighlighted: 'var(--color-pillTextHighlighted)',
pillBorder: 'var(--color-pillBorder)',
pillBorderDark: 'var(--color-pillBorderDark)',
pillBackgroundSelected: 'var(--color-pillBackgroundSelected)',
pillTextSelected: 'var(--color-pillTextSelected)',
pillBorderSelected: 'var(--color-pillBorderSelected)',
pillTextSubdued: 'var(--color-pillTextSubdued)',
reportsRed: 'var(--color-reportsRed)',
reportsBlue: 'var(--color-reportsBlue)',
reportsGreen: 'var(--color-reportsGreen)',
reportsGray: 'var(--color-reportsGray)',
reportsLabel: 'var(--color-reportsLabel)',
reportsInnerLabel: 'var(--color-reportsInnerLabel)',
noteTagBackground: 'var(--color-noteTagBackground)',
noteTagBackgroundHover: 'var(--color-noteTagBackgroundHover)',
noteTagText: 'var(--color-noteTagText)',
budgetOtherMonth: 'var(--color-budgetOtherMonth)',
budgetCurrentMonth: 'var(--color-budgetCurrentMonth)',
budgetHeaderOtherMonth: 'var(--color-budgetHeaderOtherMonth)',
budgetHeaderCurrentMonth: 'var(--color-budgetHeaderCurrentMonth)',
floatingActionBarBackground: 'var(--color-floatingActionBarBackground)',
floatingActionBarBorder: 'var(--color-floatingActionBarBorder)',
floatingActionBarText: 'var(--color-floatingActionBarText)',
tooltipText: 'var(--color-tooltipText)',
tooltipBackground: 'var(--color-tooltipBackground)',
tooltipBorder: 'var(--color-tooltipBorder)',
calendarCellBackground: 'var(--color-calendarCellBackground)',
};

View File

@@ -1,35 +0,0 @@
enum BreakpointNames {
small = 'small',
medium = 'medium',
wide = 'wide',
}
type NumericBreakpoints = {
[key in BreakpointNames]: number;
};
export const breakpoints: NumericBreakpoints = {
small: 512,
medium: 730,
wide: 1100,
};
type BreakpointsPx = {
[B in keyof NumericBreakpoints as `breakpoint_${B}`]: string;
};
// Provide the same breakpoints in a form usable by CSS media queries
// {
// breakpoint_small: '512px',
// breakpoint_medium: '740px',
// breakpoint_wide: '1100px',
// }
export const tokens: BreakpointsPx = Object.entries(
breakpoints,
).reduce<BreakpointsPx>(
(acc, [key, val]) => ({
...acc,
[`breakpoint_${key}`]: `${val}px`,
}),
{} as BreakpointsPx,
);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

View File

@@ -1,7 +1,7 @@
import { type Page } from '@playwright/test';
import * as monthUtils from 'loot-core/shared/months';
import { amountToCurrency, currencyToAmount } from 'loot-core/shared/util';
import * as monthUtils from 'loot-core/src/shared/months';
import { expect, test } from './fixtures';
import { ConfigurationPage } from './page-models/configuration-page';
@@ -60,9 +60,6 @@ async function setBudgetAverage(
await budgetPage.goToPreviousMonth();
const spentButton = await budgetPage.getButtonForSpent(categoryName);
const spent = await spentButton.textContent();
if (!spent) {
throw new Error('Failed to get spent amount');
}
totalSpent += currencyToAmount(spent) ?? 0;
}
@@ -283,10 +280,6 @@ budgetTypes.forEach(budgetType => {
const lastMonthBudget = await budgetedButton.textContent();
if (!lastMonthBudget) {
throw new Error('Failed to get last month budget');
}
await budgetPage.goToNextMonth();
await copyLastMonthBudget(budgetPage, categoryName);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

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