diff --git a/app/Http/Controllers/BillEventController.php b/app/Http/Controllers/BillEventController.php
index 99ad1024..e22c708c 100644
--- a/app/Http/Controllers/BillEventController.php
+++ b/app/Http/Controllers/BillEventController.php
@@ -3,6 +3,8 @@
namespace App\Http\Controllers;
use App\Models\Bill;
+use DateInterval;
+use DateTime;
use Illuminate\Support\Facades\Request;
class BillEventController
@@ -20,7 +22,7 @@ public function __invoke()
'url' => route('bills.show', $bill->id),
'paid' => $bill->paid,
'start' => $date,
- 'end' => $date,
+ 'end' => (new DateTime($date))->add(new DateInterval('P1D'))->format('Y-m-d'),
];
}
});
diff --git a/app/Models/Account.php b/app/Models/Account.php
index 6a7cfddc..7bf31972 100644
--- a/app/Models/Account.php
+++ b/app/Models/Account.php
@@ -20,7 +20,7 @@ class Account extends Model
];
protected $casts = [
- 'date_opened' => 'datetime',
+ 'date_opened' => 'datetime:Y-m-d H:i:s',
];
public function getRunningBalanceAttribute()
@@ -39,6 +39,6 @@ public function getRunningBalanceAttribute()
public function transactions()
{
- return $this->hasMany(Transaction::class);
+ return $this->hasMany(Transaction::class)->ordered();
}
}
diff --git a/app/Models/Bill.php b/app/Models/Bill.php
index 70effca8..5f18d635 100644
--- a/app/Models/Bill.php
+++ b/app/Models/Bill.php
@@ -21,12 +21,12 @@ class Bill extends Model
];
protected $casts = [
- 'start_date' => 'date',
+ 'start_date' => 'date:Y-m-d',
];
public function transactions()
{
- return $this->hasMany(Transaction::class);
+ return $this->hasMany(Transaction::class)->ordered();
}
public function getTotalAttribute()
diff --git a/app/Models/Category.php b/app/Models/Category.php
index 46724bf8..22644a8a 100644
--- a/app/Models/Category.php
+++ b/app/Models/Category.php
@@ -43,6 +43,6 @@ public function getProgressAttribute()
public function transactions()
{
- return $this->hasMany(Transaction::class);
+ return $this->hasMany(Transaction::class)->ordered();
}
}
diff --git a/app/Models/Goal.php b/app/Models/Goal.php
index cb6b7cc7..a6ac2212 100644
--- a/app/Models/Goal.php
+++ b/app/Models/Goal.php
@@ -22,7 +22,7 @@ class Goal extends Model
protected $casts = [
'amount' => 'float',
'balance' => 'float',
- 'goal_date' => 'date',
+ 'goal_date' => 'date:Y-m-d',
];
public function getAchievedAttribute(): bool
diff --git a/app/Models/Transaction.php b/app/Models/Transaction.php
index c868876d..c6acbe63 100644
--- a/app/Models/Transaction.php
+++ b/app/Models/Transaction.php
@@ -25,7 +25,7 @@ class Transaction extends Model
];
protected $casts = [
- 'date' => 'datetime',
+ 'date' => 'datetime:Y-m-d H:i:s',
'amount' => 'float',
'cleared' => 'bool',
'inflow' => 'bool',
diff --git a/app/Models/User.php b/app/Models/User.php
index fc3d2408..272320de 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -53,6 +53,6 @@ public function goals()
public function transactions()
{
- return $this->hasMany(Transaction::class);
+ return $this->hasMany(Transaction::class)->ordered();
}
}
diff --git a/database/migrations/2020_01_18_195913_create_budgets_table.php b/database/migrations/2020_01_18_195913_create_budgets_table.php
index c9dea043..1324ae0d 100644
--- a/database/migrations/2020_01_18_195913_create_budgets_table.php
+++ b/database/migrations/2020_01_18_195913_create_budgets_table.php
@@ -13,9 +13,9 @@ public function up()
$table->integer('month');
$table->bigInteger('category_id')->unsigned()->nullable();
$table->bigInteger('user_id')->unsigned()->nullable();
- $table->decimal('budgeted', 12, 3);
- $table->decimal('spent', 12, 3);
- $table->decimal('balance', 12, 3);
+ $table->decimal('budgeted', 12, 3)->default(0);
+ $table->decimal('spent', 12, 3)->default(0);
+ $table->decimal('balance', 12, 3)->default(0);
$table->timestamps();
$table->foreign('category_id')
diff --git a/docker-compose.yml b/docker-compose.yml
index 49850e24..9265080b 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,58 +1,62 @@
# For more information: https://laravel.com/docs/sail
services:
- laravel.test:
- build:
- context: ./vendor/laravel/sail/runtimes/8.4
- dockerfile: Dockerfile
- args:
- WWWGROUP: '${WWWGROUP}'
- image: sail-8.4/app
- extra_hosts:
- - 'host.docker.internal:host-gateway'
- ports:
- - '${APP_PORT:-80}:80'
- - '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
- environment:
- WWWUSER: '${WWWUSER}'
- LARAVEL_SAIL: 1
- XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
- XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
- volumes:
- - '.:/var/www/html'
- networks:
- - sail
- depends_on:
- - mysql
- - selenium
- mysql:
- image: 'mysql/mysql-server:8.0'
- ports:
- - '${FORWARD_DB_PORT:-3306}:3306'
- environment:
- MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
- MYSQL_ROOT_HOST: "%"
- MYSQL_DATABASE: '${DB_DATABASE}'
- MYSQL_USER: '${DB_USERNAME}'
- MYSQL_PASSWORD: '${DB_PASSWORD}'
- MYSQL_ALLOW_EMPTY_PASSWORD: 1
- MYSQL_EXTRA_OPTIONS: '${MYSQL_EXTRA_OPTIONS}'
- volumes:
- - 'sail-mysql:/var/lib/mysql'
- networks:
- - sail
- healthcheck:
- test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
- retries: 3
- timeout: 5s
- selenium:
- image: 'selenium/standalone-chrome'
- volumes:
- - '/dev/shm:/dev/shm'
- networks:
- - sail
+ laravel:
+ build:
+ context: ./vendor/laravel/sail/runtimes/8.4
+ dockerfile: Dockerfile
+ args:
+ WWWGROUP: '${WWWGROUP}'
+ image: sail-8.4/app
+ extra_hosts:
+ - 'host.docker.internal:host-gateway'
+ ports:
+ - '${APP_PORT:-80}:80'
+ - '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
+ environment:
+ WWWUSER: '${WWWUSER}'
+ LARAVEL_SAIL: 1
+ XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
+ XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
+ IGNITION_LOCAL_SITES_PATH: '${PWD}'
+ volumes:
+ - '.:/var/www/html'
+ networks:
+ - sail
+ depends_on:
+ - mysql
+ - selenium
+ mysql:
+ image: 'mysql/mysql-server:8.0'
+ ports:
+ - '${FORWARD_DB_PORT:-3306}:3306'
+ environment:
+ MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
+ MYSQL_ROOT_HOST: '%'
+ MYSQL_DATABASE: '${DB_DATABASE}'
+ MYSQL_USER: '${DB_USERNAME}'
+ MYSQL_PASSWORD: '${DB_PASSWORD}'
+ MYSQL_ALLOW_EMPTY_PASSWORD: 1
+ MYSQL_EXTRA_OPTIONS: '${MYSQL_EXTRA_OPTIONS}'
+ volumes:
+ - 'sail-mysql:/var/lib/mysql'
+ # - './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
+ networks:
+ - sail
+ healthcheck:
+ test: ['CMD', 'mysqladmin', 'ping', '-p${DB_PASSWORD}']
+ retries: 3
+ timeout: 5s
+ selenium:
+ image: 'selenium/standalone-chromium'
+ extra_hosts:
+ - 'host.docker.internal:host-gateway'
+ volumes:
+ - '/dev/shm:/dev/shm'
+ networks:
+ - sail
networks:
- sail:
- driver: bridge
+ sail:
+ driver: bridge
volumes:
- sail-mysql:
- driver: local
+ sail-mysql:
+ driver: local
diff --git a/package-lock.json b/package-lock.json
index b6069df2..3ed2a66b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6,33 +6,31 @@
"": {
"name": "bdgt",
"devDependencies": {
- "@fortawesome/fontawesome-svg-core": "^1.3.0",
- "@fortawesome/free-regular-svg-icons": "^6.7.2",
- "@fortawesome/free-solid-svg-icons": "^6.7.2",
- "@fortawesome/vue-fontawesome": "^2.0.10",
+ "@fortawesome/fontawesome-svg-core": "^7.0.0",
+ "@fortawesome/free-regular-svg-icons": "^7.0.0",
+ "@fortawesome/free-solid-svg-icons": "^7.0.0",
+ "@fortawesome/vue-fontawesome": "^3.1.2",
+ "@primevue/themes": "^4.4.0",
"@tailwindcss/nesting": "^0.0.0-insiders.565cd3e",
"@tailwindcss/postcss": "^4.1.14",
- "@vitejs/plugin-vue2": "^2.3.3",
- "apexcharts": "^4.0",
+ "@vitejs/plugin-vue": "^6.0.1",
+ "apexcharts": "^5.0",
"axios": "^1.12",
- "cross-env": "^7.0",
"dayjs": "^1.11",
"husky": "^9.0.0",
"laravel-vite-plugin": "^2.0.0",
"lint-staged": "^16.0.0",
"prettier": "3.0.0",
+ "primevue": "^4.4.0",
"tailwindcss": "^4.1.14",
- "v-calendar": "^1.0.8",
+ "v-calendar": "3.0.1",
"vite": "^7.0.0",
- "vue": "^2.7.0",
- "vue-apexcharts": "^1.7",
- "vue-cal": "^2.0.0",
- "vue-clickaway": "^2.2.2",
- "vue-i18n": "^8.22.1",
- "vue-loader": "^16.0.0",
- "vue-slider-component": "^3.2.24",
- "vue-tables-2": "^2.3.5",
- "vue-template-compiler": "^2.7.16"
+ "vue": "^3.5.22",
+ "vue-cal": "^5.0.1-rc.30",
+ "vue-i18n": "^11.1.12",
+ "vue-loader": "^17.0.0",
+ "vue-slider-component": "next",
+ "vue3-apexcharts": "^1.8.0"
}
},
"node_modules/@alloc/quick-lru": {
@@ -551,87 +549,110 @@
}
},
"node_modules/@fortawesome/fontawesome-common-types": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.3.0.tgz",
- "integrity": "sha512-CA3MAZBTxVsF6SkfkHXDerkhcQs0QPofy43eFdbWJJkZiq3SfiaH1msOkac59rQaqto5EqWnASboY1dBuKen5w==",
- "deprecated": "Please upgrade to 6.1.0. https://fontawesome.com/docs/changelog/",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-7.1.0.tgz",
+ "integrity": "sha512-l/BQM7fYntsCI//du+6sEnHOP6a74UixFyOYUyz2DLMXKx+6DEhfR3F2NYGE45XH1JJuIamacb4IZs9S0ZOWLA==",
"dev": true,
- "hasInstallScript": true,
"license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/@fortawesome/fontawesome-svg-core": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.3.0.tgz",
- "integrity": "sha512-UIL6crBWhjTNQcONt96ExjUnKt1D68foe3xjEensLDclqQ6YagwCRYVQdrp/hW0ALRp/5Fv/VKw+MqTUWYYvPg==",
- "deprecated": "Please upgrade to 6.1.0. https://fontawesome.com/docs/changelog/",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-7.1.0.tgz",
+ "integrity": "sha512-fNxRUk1KhjSbnbuBxlWSnBLKLBNun52ZBTcs22H/xEEzM6Ap81ZFTQ4bZBxVQGQgVY0xugKGoRcCbaKjLQ3XZA==",
"dev": true,
- "hasInstallScript": true,
"license": "MIT",
"dependencies": {
- "@fortawesome/fontawesome-common-types": "^0.3.0"
+ "@fortawesome/fontawesome-common-types": "7.1.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/@fortawesome/free-regular-svg-icons": {
- "version": "6.7.2",
- "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.7.2.tgz",
- "integrity": "sha512-7Z/ur0gvCMW8G93dXIQOkQqHo2M5HLhYrRVC0//fakJXxcF1VmMPsxnG6Ee8qEylA8b8Q3peQXWMNZ62lYF28g==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-7.1.0.tgz",
+ "integrity": "sha512-0e2fdEyB4AR+e6kU4yxwA/MonnYcw/CsMEP9lH82ORFi9svA6/RhDyhxIv5mlJaldmaHLLYVTb+3iEr+PDSZuQ==",
"dev": true,
"license": "(CC-BY-4.0 AND MIT)",
"dependencies": {
- "@fortawesome/fontawesome-common-types": "6.7.2"
+ "@fortawesome/fontawesome-common-types": "7.1.0"
},
"engines": {
"node": ">=6"
}
},
- "node_modules/@fortawesome/free-regular-svg-icons/node_modules/@fortawesome/fontawesome-common-types": {
- "version": "6.7.2",
- "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.2.tgz",
- "integrity": "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==",
+ "node_modules/@fortawesome/free-solid-svg-icons": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-7.1.0.tgz",
+ "integrity": "sha512-Udu3K7SzAo9N013qt7qmm22/wo2hADdheXtBfxFTecp+ogsc0caQNRKEb7pkvvagUGOpG9wJC1ViH6WXs8oXIA==",
"dev": true,
- "license": "MIT",
+ "license": "(CC-BY-4.0 AND MIT)",
+ "dependencies": {
+ "@fortawesome/fontawesome-common-types": "7.1.0"
+ },
"engines": {
"node": ">=6"
}
},
- "node_modules/@fortawesome/free-solid-svg-icons": {
- "version": "6.7.2",
- "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.7.2.tgz",
- "integrity": "sha512-GsBrnOzU8uj0LECDfD5zomZJIjrPhIlWU82AHwa2s40FKH+kcxQaBvBo3Z4TxyZHIyX8XTDxsyA33/Vx9eFuQA==",
+ "node_modules/@fortawesome/vue-fontawesome": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.1.2.tgz",
+ "integrity": "sha512-mhYnBIuuW8OIMHf31kOjaBmyE7BMrwBorhrOHVud6vTTu+7IPQNWB+DWaHoE75v10dRF5s/dFtcrgE7vKSEWwQ==",
"dev": true,
- "license": "(CC-BY-4.0 AND MIT)",
+ "license": "MIT",
+ "peerDependencies": {
+ "@fortawesome/fontawesome-svg-core": "~1 || ~6 || ~7",
+ "vue": ">= 3.0.0 < 4"
+ }
+ },
+ "node_modules/@intlify/core-base": {
+ "version": "11.1.12",
+ "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-11.1.12.tgz",
+ "integrity": "sha512-whh0trqRsSqVLNEUCwU59pyJZYpU8AmSWl8M3Jz2Mv5ESPP6kFh4juas2NpZ1iCvy7GlNRffUD1xr84gceimjg==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "@fortawesome/fontawesome-common-types": "6.7.2"
+ "@intlify/message-compiler": "11.1.12",
+ "@intlify/shared": "11.1.12"
},
"engines": {
- "node": ">=6"
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
}
},
- "node_modules/@fortawesome/free-solid-svg-icons/node_modules/@fortawesome/fontawesome-common-types": {
- "version": "6.7.2",
- "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.2.tgz",
- "integrity": "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==",
+ "node_modules/@intlify/message-compiler": {
+ "version": "11.1.12",
+ "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-11.1.12.tgz",
+ "integrity": "sha512-Fv9iQSJoJaXl4ZGkOCN1LDM3trzze0AS2zRz2EHLiwenwL6t0Ki9KySYlyr27yVOj5aVz0e55JePO+kELIvfdQ==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "@intlify/shared": "11.1.12",
+ "source-map-js": "^1.0.2"
+ },
"engines": {
- "node": ">=6"
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
}
},
- "node_modules/@fortawesome/vue-fontawesome": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-2.0.10.tgz",
- "integrity": "sha512-OTETSXz+3ygD2OK2/vy82cmUBpuJqeOAg4gfnnv+f2Rir1tDIhQg026Q3NQxznq83ZLz8iNqGG9XJm26inpDeg==",
+ "node_modules/@intlify/shared": {
+ "version": "11.1.12",
+ "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-11.1.12.tgz",
+ "integrity": "sha512-Om86EjuQtA69hdNj3GQec9ZC0L0vPSAnXzB3gP/gyJ7+mA7t06d9aOAiqMZ+xEOsumGP4eEBlfl8zF2LOTzf2A==",
"dev": true,
"license": "MIT",
- "peerDependencies": {
- "@fortawesome/fontawesome-svg-core": "~1 || ~6",
- "vue": "~2"
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
}
},
"node_modules/@isaacs/fs-minipass": {
@@ -709,6 +730,113 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
+ "node_modules/@popperjs/core": {
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/@primeuix/styled": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/@primeuix/styled/-/styled-0.7.3.tgz",
+ "integrity": "sha512-qAzefzODuYZRaEh2b2uTJCtaT+qUMAt1WPCZhYgkbLUVQ8qt7hFL5BjTsqqCaiBWZCZtDkGmKhP19SRIL6hAlQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@primeuix/utils": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=12.11.0"
+ }
+ },
+ "node_modules/@primeuix/styles": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@primeuix/styles/-/styles-1.2.5.tgz",
+ "integrity": "sha512-nypFRct/oaaBZqP4jinT0puW8ZIfs4u+l/vqUFmJEPU332fl5ePj6DoOpQgTLzo3OfmvSmz5a5/5b4OJJmmi7Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@primeuix/styled": "^0.7.3"
+ }
+ },
+ "node_modules/@primeuix/themes": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@primeuix/themes/-/themes-1.2.5.tgz",
+ "integrity": "sha512-n3YkwJrHQaEESc/D/A/iD815sxp8cKnmzscA6a8Tm8YvMtYU32eCahwLLe6h5rywghVwxASWuG36XBgISYOIjQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@primeuix/styled": "^0.7.3"
+ }
+ },
+ "node_modules/@primeuix/utils": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/@primeuix/utils/-/utils-0.6.1.tgz",
+ "integrity": "sha512-tQL/ZOPgCdD+NTimlUmhyD0ey8J1XmpZE4hDHM+/fnuBicVVmlKOd5HpS748LcOVRUKbWjmEPdHX4hi5XZoC1Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.11.0"
+ }
+ },
+ "node_modules/@primevue/core": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@primevue/core/-/core-4.4.0.tgz",
+ "integrity": "sha512-ZlPupIFdsyP8uaSMl+FlqKR9IJriJm2dzH4bPyTt0E50Y4EQF2eZR2nKrwrCkLQYKHAngiCQey0RTLOEu+4QoA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@primeuix/styled": "^0.7.3",
+ "@primeuix/utils": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=12.11.0"
+ },
+ "peerDependencies": {
+ "vue": "^3.5.0"
+ }
+ },
+ "node_modules/@primevue/icons": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@primevue/icons/-/icons-4.4.0.tgz",
+ "integrity": "sha512-BDi9dACZIDopfepaRAuAfNwTVN0w+ZZVFu6RsnOQyrJM7FOJc9rs35Ig1MAyyknuINhPjLJ6lzOGGVycFQVb+w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@primeuix/utils": "^0.6.1",
+ "@primevue/core": "4.4.0"
+ },
+ "engines": {
+ "node": ">=12.11.0"
+ }
+ },
+ "node_modules/@primevue/themes": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@primevue/themes/-/themes-4.4.0.tgz",
+ "integrity": "sha512-O+NVKXbXKilLppLkitDs8w0UuTLI1y7MT1Ep5orG/ULiRfJ8LL5KNmZFhqQZJBHFSPfGaVmPIbfXQXmuVtQKjw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@primeuix/styled": "^0.7.3",
+ "@primeuix/themes": "^1.2.5"
+ },
+ "engines": {
+ "node": ">=12.11.0"
+ }
+ },
+ "node_modules/@rolldown/pluginutils": {
+ "version": "1.0.0-beta.29",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.29.tgz",
+ "integrity": "sha512-NIJgOsMjbxAXvoGq/X0gD7VPMQ8j9g0BiDaNjVNVjvl+iKXxL3Jre0v31RmBYeLEmkbj2s02v8vFTbUXi5XS2Q==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.52.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.4.tgz",
@@ -1406,6 +1534,13 @@
"license": "MIT",
"peer": true
},
+ "node_modules/@types/lodash": {
+ "version": "4.17.20",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.20.tgz",
+ "integrity": "sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/node": {
"version": "24.6.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.6.2.tgz",
@@ -1417,51 +1552,146 @@
"undici-types": "~7.13.0"
}
},
- "node_modules/@vitejs/plugin-vue2": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue2/-/plugin-vue2-2.3.4.tgz",
- "integrity": "sha512-LgqtRRedJb1KdmgcllwGX0gtlPvOvtR6pITXmqxGwQhBZaAysg0Hd7wvj3sjCsj4+PENWsqS7O+ceYSOgJ+H9g==",
+ "node_modules/@types/resize-observer-browser": {
+ "version": "0.1.11",
+ "resolved": "https://registry.npmjs.org/@types/resize-observer-browser/-/resize-observer-browser-0.1.11.tgz",
+ "integrity": "sha512-cNw5iH8JkMkb3QkCoe7DaZiawbDQEUX8t7iuQaRTyLOyQCR2h+ibBD4GJt7p5yhUHrlOeL7ZtbxNHeipqNsBzQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.1.tgz",
+ "integrity": "sha512-+MaE752hU0wfPFJEUAIxqw18+20euHHdxVtMvbFcOEpjEyfqXH/5DCoTHiVJ0J29EhTJdoTkjEv5YBKU9dnoTw==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "@rolldown/pluginutils": "1.0.0-beta.29"
+ },
"engines": {
- "node": "^14.18.0 || >= 16.0.0"
+ "node": "^20.19.0 || >=22.12.0"
},
"peerDependencies": {
- "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0",
- "vue": "^2.7.0-0"
+ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0",
+ "vue": "^3.2.25"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.22.tgz",
+ "integrity": "sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.28.4",
+ "@vue/shared": "3.5.22",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.22.tgz",
+ "integrity": "sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-core": "3.5.22",
+ "@vue/shared": "3.5.22"
}
},
"node_modules/@vue/compiler-sfc": {
- "version": "2.7.16",
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz",
- "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==",
+ "version": "3.5.22",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.22.tgz",
+ "integrity": "sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/parser": "^7.23.5",
- "postcss": "^8.4.14",
- "source-map": "^0.6.1"
- },
- "optionalDependencies": {
- "prettier": "^1.18.2 || ^2.0.0"
+ "@babel/parser": "^7.28.4",
+ "@vue/compiler-core": "3.5.22",
+ "@vue/compiler-dom": "3.5.22",
+ "@vue/compiler-ssr": "3.5.22",
+ "@vue/shared": "3.5.22",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.19",
+ "postcss": "^8.5.6",
+ "source-map-js": "^1.2.1"
}
},
- "node_modules/@vue/compiler-sfc/node_modules/prettier": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
- "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.22.tgz",
+ "integrity": "sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==",
"dev": true,
"license": "MIT",
- "optional": true,
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.22",
+ "@vue/shared": "3.5.22"
+ }
+ },
+ "node_modules/@vue/devtools-api": {
+ "version": "6.6.4",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
+ "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.22.tgz",
+ "integrity": "sha512-f2Wux4v/Z2pqc9+4SmgZC1p73Z53fyD90NFWXiX9AKVnVBEvLFOWCEgJD3GdGnlxPZt01PSlfmLqbLYzY/Fw4A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/shared": "3.5.22"
+ }
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.22.tgz",
+ "integrity": "sha512-EHo4W/eiYeAzRTN5PCextDUZ0dMs9I8mQ2Fy+OkzvRPUYQEyK9yAjbasrMCXbLNhF7P0OUyivLjIy0yc6VrLJQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/reactivity": "3.5.22",
+ "@vue/shared": "3.5.22"
+ }
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.22.tgz",
+ "integrity": "sha512-Av60jsryAkI023PlN7LsqrfPvwfxOd2yAwtReCjeuugTJTkgrksYJJstg1e12qle0NarkfhfFu1ox2D+cQotww==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/reactivity": "3.5.22",
+ "@vue/runtime-core": "3.5.22",
+ "@vue/shared": "3.5.22",
+ "csstype": "^3.1.3"
+ }
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.22.tgz",
+ "integrity": "sha512-gXjo+ao0oHYTSswF+a3KRHZ1WszxIqO7u6XwNHqcqb9JfyIL/pbWrrh/xLv7jeDqla9u+LK7yfZKHih1e1RKAQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.5.22",
+ "@vue/shared": "3.5.22"
},
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
+ "peerDependencies": {
+ "vue": "3.5.22"
}
},
+ "node_modules/@vue/shared": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.22.tgz",
+ "integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@webassemblyjs/ast": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz",
@@ -1783,11 +2013,11 @@
}
},
"node_modules/apexcharts": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-4.7.0.tgz",
- "integrity": "sha512-iZSrrBGvVlL+nt2B1NpqfDuBZ9jX61X9I2+XV0hlYXHtTwhwLTHDKGXjNXAgFBDLuvSYCB/rq2nPWVPRv2DrGA==",
+ "version": "5.3.5",
+ "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-5.3.5.tgz",
+ "integrity": "sha512-I04DY/WBZbJgJD2uixeV5EzyiL+J5LgKQXEu8rctqAwyRmKv44aDVeofJoLdTJe3ao4r2KEQfCgtVzXn6pqirg==",
"dev": true,
- "license": "MIT",
+ "license": "SEE LICENSE IN LICENSE",
"dependencies": {
"@svgdotjs/svg.draggable.js": "^3.0.4",
"@svgdotjs/svg.filter.js": "^3.0.8",
@@ -1797,13 +2027,6 @@
"@yr/monotone-cubic-spline": "^1.0.3"
}
},
- "node_modules/array-intersect": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/array-intersect/-/array-intersect-0.0.1.tgz",
- "integrity": "sha512-n7+bHor4z+uofaUyLmUD9H/yEkDFsIHXQVRcK4xLpHgnpkVQA2lkaMTPNg0T3J0tCEVb6oACxeyTmCtspd+BBA==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
@@ -1823,20 +2046,6 @@
"proxy-from-env": "^1.1.0"
}
},
- "node_modules/babel-helper-vue-jsx-merge-props": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
- "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/babel-plugin-add-module-exports": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz",
- "integrity": "sha512-3AN/9V/rKuv90NG65m4tTHsI04XrCKsWbztIcW7a8H5iIN7WlvWucRtVV0V/rT4QvtA11n5Vmp20fLwfMWqp6g==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/baseline-browser-mapping": {
"version": "2.8.12",
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.12.tgz",
@@ -1848,16 +2057,6 @@
"baseline-browser-mapping": "dist/cli.js"
}
},
- "node_modules/big.js": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
- "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "*"
- }
- },
"node_modules/braces": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
@@ -2087,52 +2286,6 @@
"node": ">=20"
}
},
- "node_modules/core-js": {
- "version": "3.45.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.45.1.tgz",
- "integrity": "sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
- }
- },
- "node_modules/cross-env": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
- "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cross-spawn": "^7.0.1"
- },
- "bin": {
- "cross-env": "src/bin/cross-env.js",
- "cross-env-shell": "src/bin/cross-env-shell.js"
- },
- "engines": {
- "node": ">=10.14",
- "npm": ">=6",
- "yarn": ">=1"
- }
- },
- "node_modules/cross-spawn": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
- "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
"node_modules/cssesc": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
@@ -2170,6 +2323,16 @@
"url": "https://opencollective.com/date-fns"
}
},
+ "node_modules/date-fns-tz": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-1.3.8.tgz",
+ "integrity": "sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "date-fns": ">=2.0.0"
+ }
+ },
"node_modules/dayjs": {
"version": "1.11.18",
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.18.tgz",
@@ -2177,20 +2340,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/de-indent": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
- "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/debounce": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
- "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -2241,16 +2390,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/emojis-list": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
- "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
"node_modules/enhanced-resolve": {
"version": "5.18.3",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz",
@@ -2265,6 +2404,19 @@
"node": ">=10.13.0"
}
},
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
"node_modules/environment": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz",
@@ -2439,6 +2591,13 @@
"node": ">=4.0"
}
},
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/eventemitter3": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
@@ -2616,8 +2775,7 @@
"resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
"dev": true,
- "license": "BSD-2-Clause",
- "peer": true
+ "license": "BSD-2-Clause"
},
"node_modules/gopd": {
"version": "1.2.0",
@@ -2698,16 +2856,6 @@
"node": ">= 0.4"
}
},
- "node_modules/he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "he": "bin/he"
- }
- },
"node_modules/husky": {
"version": "9.1.7",
"resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz",
@@ -2750,13 +2898,6 @@
"node": ">=0.12.0"
}
},
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true,
- "license": "ISC"
- },
"node_modules/jest-worker": {
"version": "27.5.1",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
@@ -2800,13 +2941,6 @@
"jiti": "lib/jiti-cli.mjs"
}
},
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
@@ -2823,19 +2957,6 @@
"license": "MIT",
"peer": true
},
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/laravel-vite-plugin": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-2.0.1.tgz",
@@ -3149,21 +3270,6 @@
"node": ">=6.11.5"
}
},
- "node_modules/loader-utils": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
- "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "big.js": "^5.2.2",
- "emojis-list": "^3.0.0",
- "json5": "^2.1.2"
- },
- "engines": {
- "node": ">=8.9.0"
- }
- },
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
@@ -3171,13 +3277,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/lodash.clonedeep": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/log-update": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz",
@@ -3198,19 +3297,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- },
- "bin": {
- "loose-envify": "cli.js"
- }
- },
"node_modules/magic-string": {
"version": "0.30.19",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz",
@@ -3231,13 +3317,6 @@
"node": ">= 0.4"
}
},
- "node_modules/merge": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz",
- "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -3383,16 +3462,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -3426,18 +3495,6 @@
"node": ">=0.10"
}
},
- "node_modules/popper.js": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
- "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==",
- "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1",
- "dev": true,
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/popperjs"
- }
- },
"node_modules/postcss": {
"version": "8.5.6",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
@@ -3517,6 +3574,23 @@
"url": "https://github.com/prettier/prettier?sponsor=1"
}
},
+ "node_modules/primevue": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/primevue/-/primevue-4.4.0.tgz",
+ "integrity": "sha512-SscTQg1UxFzUCOk058pv9kVjLsC/RSIxltxKGrHIOJzDOaqr9BfxPSxjo/ipecZx1hB10k+jzGApG0iWL84zsg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@primeuix/styled": "^0.7.3",
+ "@primeuix/styles": "^1.2.5",
+ "@primeuix/utils": "^0.6.1",
+ "@primevue/core": "4.4.0",
+ "@primevue/icons": "4.4.0"
+ },
+ "engines": {
+ "node": ">=12.11.0"
+ }
+ },
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
@@ -3666,29 +3740,6 @@
"randombytes": "^2.1.0"
}
},
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/signal-exit": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
@@ -3725,6 +3776,7 @@
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
"license": "BSD-3-Clause",
+ "peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -4018,18 +4070,22 @@
"license": "MIT"
},
"node_modules/v-calendar": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/v-calendar/-/v-calendar-1.0.8.tgz",
- "integrity": "sha512-2st0wvSM7oGTOQixVMFHAEPjGBWEJmAhBDE6NYR5MB9Owe1d/pR5+A1OB+/HICXbuiKMjG8KzDpeySnPECddsw==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/v-calendar/-/v-calendar-3.0.1.tgz",
+ "integrity": "sha512-basXEXcmBsxHyxqjj/82vjgz5vbIMREiiUC2VOVh0pHCDXEF1birPUZD12lk8u3+5R+909WUnxu7bt0DFxCOLw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "date-fns": "^2.6.0",
- "lodash": "^4.17.15",
- "popper.js": "^1.14.7"
+ "@types/lodash": "^4.14.165",
+ "@types/resize-observer-browser": "^0.1.7",
+ "date-fns": "^2.16.1",
+ "date-fns-tz": "^1.0.12",
+ "lodash": "^4.17.20",
+ "vue-screen-utils": "^1.0.0-beta.13"
},
"peerDependencies": {
- "vue": "^2.5.18"
+ "@popperjs/core": "^2.0.0",
+ "vue": "^3.2.0"
}
},
"node_modules/vite": {
@@ -4150,159 +4206,118 @@
}
},
"node_modules/vue": {
- "version": "2.7.16",
- "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz",
- "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==",
- "deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.",
+ "version": "3.5.22",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.22.tgz",
+ "integrity": "sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vue/compiler-sfc": "2.7.16",
- "csstype": "^3.1.0"
- }
- },
- "node_modules/vue-apexcharts": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/vue-apexcharts/-/vue-apexcharts-1.7.0.tgz",
- "integrity": "sha512-QMpvBllJ1XvFsK4dwcbyxKalVpHfJnoqsNWszY55HJk/Sn7WP1f5YUv4JIzugqu4GTQB6gLcCVwwPDQFtwr0oQ==",
- "dev": true,
- "license": "MIT",
+ "@vue/compiler-dom": "3.5.22",
+ "@vue/compiler-sfc": "3.5.22",
+ "@vue/runtime-dom": "3.5.22",
+ "@vue/server-renderer": "3.5.22",
+ "@vue/shared": "3.5.22"
+ },
"peerDependencies": {
- "apexcharts": ">=4.0.0",
- "vue": "^2.5.17"
+ "typescript": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
"node_modules/vue-cal": {
- "version": "2.24.8",
- "resolved": "https://registry.npmjs.org/vue-cal/-/vue-cal-2.24.8.tgz",
- "integrity": "sha512-n2aSJlzAHhu1OHECysTzi4xKRA4Myc1cMUZF2zABWFfS0QvXOSQjhSfpgnCahmYYbJ7SFIdgi4fqqN+QKspECg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/vue-class-component": {
- "version": "7.2.6",
- "resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-7.2.6.tgz",
- "integrity": "sha512-+eaQXVrAm/LldalI272PpDe3+i4mPis0ORiMYxF6Ae4hyuCh15W8Idet7wPUEs4N4YptgFHGys4UrgNQOMyO6w==",
+ "version": "5.0.1-rc.30",
+ "resolved": "https://registry.npmjs.org/vue-cal/-/vue-cal-5.0.1-rc.30.tgz",
+ "integrity": "sha512-kbbKftcIMvYubS/dWh66tq0ATKl2MrNprad8o94nBn9+YMZrPv0fEJ/eH59J5CXYB5RwrqMznx7ge8OIgl9xPA==",
"dev": true,
"license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/antoniandre"
+ },
"peerDependencies": {
- "vue": "^2.0.0"
+ "vue": "^3.5.0"
}
},
- "node_modules/vue-clickaway": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/vue-clickaway/-/vue-clickaway-2.2.2.tgz",
- "integrity": "sha512-25SpjXKetL06GLYoLoC8pqAV6Cur9cQ//2g35GRFBV4FgoljbZZjTINR8g2NuVXXDMLSUXaKx5dutgO4PaDE7A==",
+ "node_modules/vue-i18n": {
+ "version": "11.1.12",
+ "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-11.1.12.tgz",
+ "integrity": "sha512-BnstPj3KLHLrsqbVU2UOrPmr0+Mv11bsUZG0PyCOzsawCivk8W00GMXHeVUWIDOgNaScCuZah47CZFE+Wnl8mw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "loose-envify": "^1.2.0"
+ "@intlify/core-base": "11.1.12",
+ "@intlify/shared": "11.1.12",
+ "@vue/devtools-api": "^6.5.0"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
},
"peerDependencies": {
- "vue": "^2.0.0"
+ "vue": "^3.0.0"
}
},
- "node_modules/vue-i18n": {
- "version": "8.28.2",
- "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.28.2.tgz",
- "integrity": "sha512-C5GZjs1tYlAqjwymaaCPDjCyGo10ajUphiwA922jKt9n7KPpqR7oM1PCwYzhB/E7+nT3wfdG3oRre5raIT1rKA==",
- "deprecated": "Vue I18n v8.x has reached EOL and is no longer actively maintained. About maintenance status, see https://vue-i18n.intlify.dev/guide/maintenance.html",
- "dev": true,
- "license": "MIT"
- },
"node_modules/vue-loader": {
- "version": "16.8.3",
- "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
- "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
+ "version": "17.4.2",
+ "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-17.4.2.tgz",
+ "integrity": "sha512-yTKOA4R/VN4jqjw4y5HrynFL8AK0Z3/Jt7eOJXEitsm0GMRHDBjCfCiuTiLP7OESvsZYo2pATCWhDqxC5ZrM6w==",
"dev": true,
"license": "MIT",
"dependencies": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
- "loader-utils": "^2.0.0"
+ "watchpack": "^2.4.0"
},
"peerDependencies": {
"webpack": "^4.1.0 || ^5.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/compiler-sfc": {
+ "optional": true
+ },
+ "vue": {
+ "optional": true
+ }
}
},
- "node_modules/vue-pagination-2": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/vue-pagination-2/-/vue-pagination-2-3.1.0.tgz",
- "integrity": "sha512-gySZMsQq7DQ++tQ3FinQ8jr4n/lwJx1Qo5T5BXwacdYwDui9bH1tmx29Ob1sZ/gq3BTFwfuJasLLKg6BRDxpYg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "babel-plugin-add-module-exports": "^0.2.1",
- "merge": "^2.1.1",
- "vue": ">=2.0.0",
- "vuex": "^2.0.0"
- }
- },
- "node_modules/vue-property-decorator": {
- "version": "8.5.1",
- "resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-8.5.1.tgz",
- "integrity": "sha512-O6OUN2OMsYTGPvgFtXeBU3jPnX5ffQ9V4I1WfxFQ6dqz6cOUbR3Usou7kgFpfiXDvV7dJQSFcJ5yUPgOtPPm1Q==",
+ "node_modules/vue-screen-utils": {
+ "version": "1.0.0-beta.13",
+ "resolved": "https://registry.npmjs.org/vue-screen-utils/-/vue-screen-utils-1.0.0-beta.13.tgz",
+ "integrity": "sha512-EJ/8TANKhFj+LefDuOvZykwMr3rrLFPLNb++lNBqPOpVigT2ActRg6icH9RFQVm4nHwlHIHSGm5OY/Clar9yIg==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "vue-class-component": "^7.1.0"
- },
"peerDependencies": {
- "vue": "*"
+ "vue": "^3.2.0"
}
},
"node_modules/vue-slider-component": {
- "version": "3.2.24",
- "resolved": "https://registry.npmjs.org/vue-slider-component/-/vue-slider-component-3.2.24.tgz",
- "integrity": "sha512-28hfotAL/CPXPwqHgVFyUwUEV0zweoc2wW0bgraGkoIcRZGlFjk8caYJLE8+Luug5t3b9tJm/NyDXpyIdmcYZg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "core-js": "^3.6.5",
- "vue-property-decorator": "^8.0.0"
- }
- },
- "node_modules/vue-tables-2": {
- "version": "2.3.5",
- "resolved": "https://registry.npmjs.org/vue-tables-2/-/vue-tables-2-2.3.5.tgz",
- "integrity": "sha512-Oq1Nrq6EkjEbSTEvqTKPFInrTrav34KBZARNDFtvu8nDItw9D+S/y/lTbmNapPiNxaGuXPYef10lqOJp02hONg==",
+ "version": "4.1.0-beta.7",
+ "resolved": "https://registry.npmjs.org/vue-slider-component/-/vue-slider-component-4.1.0-beta.7.tgz",
+ "integrity": "sha512-Qb7K920ZG7PoQswoF6Ias+i3W2rd3k4fpk04JUl82kEUcN86Yg6et7bVSKWt/7VpQe8a5IT3BqCKSCOZ7AJgCA==",
"dev": true,
- "license": "GPLv3",
- "dependencies": {
- "array-intersect": "^0.0.1",
- "babel-helper-vue-jsx-merge-props": "^2.0.3",
- "debounce": "^1.1",
- "lodash.clonedeep": "^4.5.0",
- "merge": "^2.1.1",
- "vue": "^2.6.10",
- "vue-pagination-2": "^3.0"
- }
+ "license": "MIT"
},
- "node_modules/vue-template-compiler": {
- "version": "2.7.16",
- "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz",
- "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==",
+ "node_modules/vue3-apexcharts": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/vue3-apexcharts/-/vue3-apexcharts-1.8.0.tgz",
+ "integrity": "sha512-5tSD4mXTBbIJ9ir+58qHE6oNtIe0RNgqIRYMKpcsIaxkKtwUww4JhvPkpUFlmiW4OJbbdklgjleXq1lfcM4gdA==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "de-indent": "^1.0.2",
- "he": "^1.2.0"
+ "peerDependencies": {
+ "apexcharts": ">=4.0.0",
+ "vue": ">=3.0.0"
}
},
- "node_modules/vuex": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/vuex/-/vuex-2.5.0.tgz",
- "integrity": "sha512-5oJPOJySBgSgSzoeO+gZB/BbN/XsapgIF6tz34UwJqnGZMQurzIO3B4KIBf862gfc9ya+oduY5sSkq+5/oOilQ==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/watchpack": {
"version": "2.4.4",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz",
"integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.1.2"
@@ -4372,22 +4387,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
"node_modules/wrap-ansi": {
"version": "9.0.2",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
diff --git a/package.json b/package.json
index cbdbefc8..2bc05b5a 100644
--- a/package.json
+++ b/package.json
@@ -20,32 +20,30 @@
"**/*.{js,vue}": "prettier --write --ignore-unknown"
},
"devDependencies": {
- "@fortawesome/fontawesome-svg-core": "^1.3.0",
- "@fortawesome/free-regular-svg-icons": "^6.7.2",
- "@fortawesome/free-solid-svg-icons": "^6.7.2",
- "@fortawesome/vue-fontawesome": "^2.0.10",
+ "@fortawesome/fontawesome-svg-core": "^7.0.0",
+ "@fortawesome/free-regular-svg-icons": "^7.0.0",
+ "@fortawesome/free-solid-svg-icons": "^7.0.0",
+ "@fortawesome/vue-fontawesome": "^3.1.2",
+ "@primevue/themes": "^4.4.0",
"@tailwindcss/nesting": "^0.0.0-insiders.565cd3e",
"@tailwindcss/postcss": "^4.1.14",
- "@vitejs/plugin-vue2": "^2.3.3",
- "apexcharts": "^4.0",
+ "@vitejs/plugin-vue": "^6.0.1",
+ "apexcharts": "^5.0",
"axios": "^1.12",
- "cross-env": "^7.0",
"dayjs": "^1.11",
"husky": "^9.0.0",
"laravel-vite-plugin": "^2.0.0",
"lint-staged": "^16.0.0",
"prettier": "3.0.0",
+ "primevue": "^4.4.0",
"tailwindcss": "^4.1.14",
- "v-calendar": "^1.0.8",
+ "v-calendar": "3.0.1",
"vite": "^7.0.0",
- "vue": "^2.7.0",
- "vue-apexcharts": "^1.7",
- "vue-cal": "^2.0.0",
- "vue-clickaway": "^2.2.2",
- "vue-i18n": "^8.22.1",
- "vue-loader": "^16.0.0",
- "vue-slider-component": "^3.2.24",
- "vue-tables-2": "^2.3.5",
- "vue-template-compiler": "^2.7.16"
+ "vue": "^3.5.22",
+ "vue-cal": "^5.0.1-rc.30",
+ "vue-i18n": "^11.1.12",
+ "vue-loader": "^17.0.0",
+ "vue-slider-component": "next",
+ "vue3-apexcharts": "^1.8.0"
}
}
\ No newline at end of file
diff --git a/resources/css/components/_button.css b/resources/css/components/_button.css
index 5def2f85..1413d27d 100644
--- a/resources/css/components/_button.css
+++ b/resources/css/components/_button.css
@@ -1,5 +1,6 @@
.button {
@apply bg-gray-300;
+ @apply cursor-pointer;
@apply inline-block;
@apply px-4;
@apply py-2;
diff --git a/resources/css/components/_calendar.css b/resources/css/components/_calendar.css
index 61bc4052..e6068c97 100644
--- a/resources/css/components/_calendar.css
+++ b/resources/css/components/_calendar.css
@@ -1,22 +1,41 @@
-.vuecal--events-on-month-view {
- .vuecal__menu {
- .active {
- @apply border-blue-600;
- @apply border-b-3;
- @apply text-blue-600;
- }
+.vuecal__menu {
+ .active {
+ @apply border-blue-600;
+ @apply border-b-3;
+ @apply text-blue-600;
}
+}
+
+.vuecal__title-bar {
+ @apply bg-blue-800!;
+ @apply text-white;
- .vuecal__title-bar {
- @apply bg-blue-800!;
- @apply text-white;
+ .vuecal__title small {
+ @apply hidden!;
}
+}
+
+.vuecal__event {
+ @apply bg-transparent!;
+ @apply rounded-xs;
+}
+.vuecal__event-title {
+ @apply px-1;
+ @apply py-0.5;
+ @apply rounded-sm;
+}
+
+.vuecal--month-view {
.vuecal__cell-content {
@apply h-full;
}
- .vuecal__event {
- @apply rounded-xs;
+ .vuecal__cell-events {
+ @apply p-0!;
+ }
+
+ .vuecal__event-details {
+ @apply block!;
}
}
diff --git a/resources/css/components/_table.css b/resources/css/components/_table.css
index b39cbbfe..2be98967 100644
--- a/resources/css/components/_table.css
+++ b/resources/css/components/_table.css
@@ -1,107 +1,80 @@
-.VueTables {
- @apply flex;
- @apply flex-col;
+.p-datatable {
+ @apply w-full;
+}
- .table {
- @apply w-full;
+.p-datatable {
+ .p-datatable-thead th {
+ @apply px-3;
+ @apply py-4;
+ @apply text-left;
+ @apply text-sm;
+ @apply font-semibold;
+ @apply bg-white;
+ }
- thead th {
- @apply cursor-pointer;
+ .p-datatable-tbody tr {
+ td {
+ @apply border-t;
+ @apply border-gray-200;
@apply px-3;
@apply py-4;
- @apply text-left;
- @apply text-sm;
}
- tbody tr {
- @apply rounded-sm;
-
- td {
- @apply border-t;
- @apply border-gray-300;
- @apply px-3;
- @apply py-4;
- }
+ &:hover {
+ @apply bg-gray-100;
}
}
-
- .table-responsive {
- @apply overflow-x-auto;
- }
-
- &__heading {
- @apply text-gray-800;
- }
}
-.VueTables__search {
- @apply flex;
- @apply flex-col;
- @apply font-light;
- @apply items-end;
- @apply mb-8;
+.p-paginator {
+ @apply mt-4;
+ @apply py-2;
- label {
- @apply mr-4;
+ .p-paginator-content-start,
+ .p-paginator-content-end {
+ @apply flex;
+ @apply items-center;
+ @apply gap-2;
}
-}
-.VueTables__sortable {
- @apply relative;
-
- .VueTables__sort-icon {
- @apply text-gray-400;
+ .p-button {
+ @apply min-w-0;
+ @apply text-blue-700;
- .fa-sort-down, .fa-sort-up {
- @apply text-gray-900;
+ &.p-disabled {
+ @apply text-gray-400;
+ @apply cursor-not-allowed;
}
- }
-}
-
-.VueTables__limit-field {
- @apply font-light;
-
- label {
- @apply mr-4;
- }
-
- select {
- @apply appearance-none;
- @apply bg-white;
- }
-}
-
-.VuePagination__count {
- @apply font-light;
-}
-
-.VueTables__no-results {
- @apply font-light;
- @apply text-sm;
-}
-.VuePagination {
- @apply mt-4;
-
- a {
- /* @apply link; */
-
- &.active {
+ &.p-active {
@apply font-semibold;
@apply text-blue-900;
+ @apply bg-blue-100;
+ }
+
+ &:hover:not(.p-disabled) {
+ @apply bg-gray-100;
}
}
+}
- li {
- @apply mx-1;
+.p-inputtext {
+ @apply px-3;
+ @apply py-2;
+ @apply pl-10!;
+ @apply border;
+ @apply border-gray-300;
+ @apply rounded;
+ @apply w-64;
- @apply lg:mx-2;
+ &::placeholder {
+ @apply text-gray-400;
}
- ul {
- @apply flex;
- @apply items-center;
- @apply justify-center;
- @apply mb-6;
+ &:focus {
+ @apply outline-none;
+ @apply border-blue-500;
+ @apply ring-2;
+ @apply ring-blue-200;
}
}
diff --git a/resources/js/app.js b/resources/js/app.js
index 723176db..b59cb223 100644
--- a/resources/js/app.js
+++ b/resources/js/app.js
@@ -1,22 +1,27 @@
import './bootstrap'
-import Vue from 'vue/dist/vue'
+import { createApp } from 'vue'
+
+const app = createApp({})
/**
* Vue Internationalization/Translations
*/
+// Generate this file using `npm run i18n`
import languageBundle from './i18n'
-import VueI18n from 'vue-i18n'
-Vue.use(VueI18n)
+import { createI18n } from 'vue-i18n'
-const i18n = new VueI18n({
+const i18n = createI18n({
+ legacy: false,
locale: window.Locale,
messages: languageBundle,
})
+app.use(i18n)
+
/**
* Font Awesome
*/
-import { library, config, dom } from '@fortawesome/fontawesome-svg-core'
+import { library } from '@fortawesome/fontawesome-svg-core'
import {
faCaretDown,
faCaretUp,
@@ -28,6 +33,7 @@ import {
faDollarSign,
faPencilAlt,
faPlus,
+ faSearch,
faSort,
faSortDown,
faSortUp,
@@ -47,6 +53,7 @@ library.add(
faDollarSign,
faPencilAlt,
faPlus,
+ faSearch,
faSort,
faSortDown,
faSortUp,
@@ -58,33 +65,23 @@ library.add(
faFlag
)
-/**
- * Ensure vue-tables-2 sorting icons can be replaced with font-awesome chevrons
- */
-config.autoReplaceSvg = 'nest'
-dom.watch()
-
-Vue.component('font-awesome-icon', FontAwesomeIcon)
-Vue.component('font-awesome-layers', FontAwesomeLayers)
+app.component('font-awesome-icon', FontAwesomeIcon)
+app.component('font-awesome-layers', FontAwesomeLayers)
/**
- * Vue-Tables-2
+ * DataTables
*/
-import { ClientTable } from 'vue-tables-2'
-import TailwindTheme from './themes/vue-tables-tailwind-theme'
-Vue.use(
- ClientTable,
- {
- sortIcon: {
- is: 'fa-sort',
- base: 'fas',
- up: 'fa-sort-up',
- down: 'fa-sort-down',
+import PrimeVue from 'primevue/config'
+import Lara from '@primevue/themes/lara'
+
+app.use(PrimeVue, {
+ theme: {
+ preset: Lara,
+ options: {
+ darkModeSelector: '.dark-mode',
},
},
- false,
- TailwindTheme
-)
+})
/**
* The following block of code may be used to automatically register your
@@ -94,10 +91,7 @@ Vue.use(
* Eg. ./components/ExampleComponent.vue -> {{ title }}
+
@@ -31,8 +29,8 @@
diff --git a/resources/js/components/BudgetCategoryTable.vue b/resources/js/components/BudgetCategoryTable.vue
index f19139f3..7c0e1906 100644
--- a/resources/js/components/BudgetCategoryTable.vue
+++ b/resources/js/components/BudgetCategoryTable.vue
@@ -30,7 +30,7 @@
min="0"
max="99999"
:value="budget.budgeted || 0"
- @change="setBudgeted(budget.category_id, $event.target.value)"
+ @change="setBudgeted(budget.category_id, $event.target.value, budget.date)"
/>
@@ -54,8 +54,6 @@
diff --git a/resources/js/components/TransactionsTable.vue b/resources/js/components/TransactionsTable.vue
index c7567350..a4c2dcb4 100644
--- a/resources/js/components/TransactionsTable.vue
+++ b/resources/js/components/TransactionsTable.vue
@@ -1,116 +1,143 @@
- {{ title }}
+
+