浏览代码

Merge pull request #115 from andrewdwallo/development-3.x

Development 3.x
3.x
Andrew Wallo 7 个月前
父节点
当前提交
1bce88fc9f
没有帐户链接到提交者的电子邮件
共有 31 个文件被更改,包括 531 次插入866 次删除
  1. 2
    0
      app/Filament/Company/Resources/Purchases/BillResource.php
  2. 2
    0
      app/Filament/Company/Resources/Sales/EstimateResource.php
  3. 2
    0
      app/Filament/Company/Resources/Sales/InvoiceResource.php
  4. 2
    0
      app/Filament/Company/Resources/Sales/RecurringInvoiceResource.php
  5. 0
    6
      app/Jobs/GenerateRecurringInvoices.php
  6. 0
    6
      app/Jobs/ProcessOverdueInvoices.php
  7. 1
    7
      app/Jobs/ProcessTransactionImport.php
  8. 1
    7
      app/Jobs/ProcessTransactionUpdate.php
  9. 2
    0
      app/Listeners/HandleTransactionImport.php
  10. 4
    5
      app/Models/Accounting/DocumentLineItem.php
  11. 7
    1
      app/Utilities/Currency/CurrencyConverter.php
  12. 87
    87
      composer.lock
  13. 4
    4
      config/queue.php
  14. 6
    6
      database/migrations/2024_11_13_220301_create_document_line_items_table.php
  15. 1
    1
      database/migrations/2024_11_14_230753_create_adjustments_table.php
  16. 7
    7
      database/migrations/2024_11_27_221657_create_bills_table.php
  17. 5
    5
      database/migrations/2024_11_27_223000_create_estimates_table.php
  18. 5
    5
      database/migrations/2024_11_27_223001_create_recurring_invoices_table.php
  19. 7
    7
      database/migrations/2024_11_27_223015_create_invoices_table.php
  20. 203
    203
      package-lock.json
  21. 1
    1
      resources/views/components/company/document-template/footer.blade.php
  22. 1
    1
      resources/views/components/company/document-template/header.blade.php
  23. 1
    1
      resources/views/components/company/document-template/line-items.blade.php
  24. 14
    12
      resources/views/components/icons/document-header-decoration.blade.php
  25. 43
    32
      resources/views/filament/company/components/document-templates/classic.blade.php
  26. 34
    25
      resources/views/filament/company/components/document-templates/default.blade.php
  27. 9
    9
      resources/views/filament/company/components/document-templates/modern.blade.php
  28. 39
    36
      resources/views/filament/infolists/components/document-templates/classic.blade.php
  29. 34
    27
      resources/views/filament/infolists/components/document-templates/default.blade.php
  30. 7
    7
      resources/views/filament/infolists/components/document-templates/modern.blade.php
  31. 0
    358
      resources/views/vendor/filament/components/modal/index.blade.php

+ 2
- 0
app/Filament/Company/Resources/Purchases/BillResource.php 查看文件

164
                                     ->required()
164
                                     ->required()
165
                                     ->numeric()
165
                                     ->numeric()
166
                                     ->live()
166
                                     ->live()
167
+                                    ->maxValue(9999999999.99)
167
                                     ->default(1),
168
                                     ->default(1),
168
                                 Forms\Components\TextInput::make('unit_price')
169
                                 Forms\Components\TextInput::make('unit_price')
169
                                     ->label('Price')
170
                                     ->label('Price')
170
                                     ->hiddenLabel()
171
                                     ->hiddenLabel()
171
                                     ->numeric()
172
                                     ->numeric()
172
                                     ->live()
173
                                     ->live()
174
+                                    ->maxValue(9999999999.99)
173
                                     ->default(0),
175
                                     ->default(0),
174
                                 Forms\Components\Select::make('purchaseTaxes')
176
                                 Forms\Components\Select::make('purchaseTaxes')
175
                                     ->label('Taxes')
177
                                     ->label('Taxes')

+ 2
- 0
app/Filament/Company/Resources/Sales/EstimateResource.php 查看文件

169
                                     ->required()
169
                                     ->required()
170
                                     ->numeric()
170
                                     ->numeric()
171
                                     ->live()
171
                                     ->live()
172
+                                    ->maxValue(9999999999.99)
172
                                     ->default(1),
173
                                     ->default(1),
173
                                 Forms\Components\TextInput::make('unit_price')
174
                                 Forms\Components\TextInput::make('unit_price')
174
                                     ->hiddenLabel()
175
                                     ->hiddenLabel()
175
                                     ->numeric()
176
                                     ->numeric()
176
                                     ->live()
177
                                     ->live()
178
+                                    ->maxValue(9999999999.99)
177
                                     ->default(0),
179
                                     ->default(0),
178
                                 Forms\Components\Select::make('salesTaxes')
180
                                 Forms\Components\Select::make('salesTaxes')
179
                                     ->relationship('salesTaxes', 'name')
181
                                     ->relationship('salesTaxes', 'name')

+ 2
- 0
app/Filament/Company/Resources/Sales/InvoiceResource.php 查看文件

183
                                     ->required()
183
                                     ->required()
184
                                     ->numeric()
184
                                     ->numeric()
185
                                     ->live()
185
                                     ->live()
186
+                                    ->maxValue(9999999999.99)
186
                                     ->default(1),
187
                                     ->default(1),
187
                                 Forms\Components\TextInput::make('unit_price')
188
                                 Forms\Components\TextInput::make('unit_price')
188
                                     ->hiddenLabel()
189
                                     ->hiddenLabel()
189
                                     ->numeric()
190
                                     ->numeric()
190
                                     ->live()
191
                                     ->live()
192
+                                    ->maxValue(9999999999.99)
191
                                     ->default(0),
193
                                     ->default(0),
192
                                 Forms\Components\Select::make('salesTaxes')
194
                                 Forms\Components\Select::make('salesTaxes')
193
                                     ->relationship('salesTaxes', 'name')
195
                                     ->relationship('salesTaxes', 'name')

+ 2
- 0
app/Filament/Company/Resources/Sales/RecurringInvoiceResource.php 查看文件

153
                                     ->required()
153
                                     ->required()
154
                                     ->numeric()
154
                                     ->numeric()
155
                                     ->live()
155
                                     ->live()
156
+                                    ->maxValue(9999999999.99)
156
                                     ->default(1),
157
                                     ->default(1),
157
                                 Forms\Components\TextInput::make('unit_price')
158
                                 Forms\Components\TextInput::make('unit_price')
158
                                     ->hiddenLabel()
159
                                     ->hiddenLabel()
159
                                     ->numeric()
160
                                     ->numeric()
160
                                     ->live()
161
                                     ->live()
162
+                                    ->maxValue(9999999999.99)
161
                                     ->default(0),
163
                                     ->default(0),
162
                                 Forms\Components\Select::make('salesTaxes')
164
                                 Forms\Components\Select::make('salesTaxes')
163
                                     ->relationship('salesTaxes', 'name')
165
                                     ->relationship('salesTaxes', 'name')

+ 0
- 6
app/Jobs/GenerateRecurringInvoices.php 查看文件

5
 use App\Enums\Accounting\RecurringInvoiceStatus;
5
 use App\Enums\Accounting\RecurringInvoiceStatus;
6
 use App\Models\Accounting\RecurringInvoice;
6
 use App\Models\Accounting\RecurringInvoice;
7
 use Illuminate\Contracts\Queue\ShouldQueue;
7
 use Illuminate\Contracts\Queue\ShouldQueue;
8
-use Illuminate\Foundation\Bus\Dispatchable;
9
 use Illuminate\Foundation\Queue\Queueable;
8
 use Illuminate\Foundation\Queue\Queueable;
10
-use Illuminate\Queue\InteractsWithQueue;
11
-use Illuminate\Queue\SerializesModels;
12
 
9
 
13
 class GenerateRecurringInvoices implements ShouldQueue
10
 class GenerateRecurringInvoices implements ShouldQueue
14
 {
11
 {
15
-    use Dispatchable;
16
-    use InteractsWithQueue;
17
     use Queueable;
12
     use Queueable;
18
-    use SerializesModels;
19
 
13
 
20
     /**
14
     /**
21
      * Execute the job.
15
      * Execute the job.

+ 0
- 6
app/Jobs/ProcessOverdueInvoices.php 查看文件

5
 use App\Enums\Accounting\InvoiceStatus;
5
 use App\Enums\Accounting\InvoiceStatus;
6
 use App\Models\Accounting\Invoice;
6
 use App\Models\Accounting\Invoice;
7
 use Illuminate\Contracts\Queue\ShouldQueue;
7
 use Illuminate\Contracts\Queue\ShouldQueue;
8
-use Illuminate\Foundation\Bus\Dispatchable;
9
 use Illuminate\Foundation\Queue\Queueable;
8
 use Illuminate\Foundation\Queue\Queueable;
10
-use Illuminate\Queue\InteractsWithQueue;
11
-use Illuminate\Queue\SerializesModels;
12
 
9
 
13
 class ProcessOverdueInvoices implements ShouldQueue
10
 class ProcessOverdueInvoices implements ShouldQueue
14
 {
11
 {
15
-    use Dispatchable;
16
-    use InteractsWithQueue;
17
     use Queueable;
12
     use Queueable;
18
-    use SerializesModels;
19
 
13
 
20
     /**
14
     /**
21
      * Execute the job.
15
      * Execute the job.

+ 1
- 7
app/Jobs/ProcessTransactionImport.php 查看文件

8
 use App\Models\Company;
8
 use App\Models\Company;
9
 use App\Services\PlaidService;
9
 use App\Services\PlaidService;
10
 use App\Services\TransactionService;
10
 use App\Services\TransactionService;
11
-use Illuminate\Bus\Queueable;
12
 use Illuminate\Contracts\Queue\ShouldQueue;
11
 use Illuminate\Contracts\Queue\ShouldQueue;
13
-use Illuminate\Foundation\Bus\Dispatchable;
14
-use Illuminate\Queue\InteractsWithQueue;
15
-use Illuminate\Queue\SerializesModels;
12
+use Illuminate\Foundation\Queue\Queueable;
16
 use Illuminate\Support\Carbon;
13
 use Illuminate\Support\Carbon;
17
 
14
 
18
 class ProcessTransactionImport implements ShouldQueue
15
 class ProcessTransactionImport implements ShouldQueue
19
 {
16
 {
20
-    use Dispatchable;
21
-    use InteractsWithQueue;
22
     use Queueable;
17
     use Queueable;
23
-    use SerializesModels;
24
 
18
 
25
     public function __construct(
19
     public function __construct(
26
         protected Company $company,
20
         protected Company $company,

+ 1
- 7
app/Jobs/ProcessTransactionUpdate.php 查看文件

6
 use App\Models\Company;
6
 use App\Models\Company;
7
 use App\Services\PlaidService;
7
 use App\Services\PlaidService;
8
 use App\Services\TransactionService;
8
 use App\Services\TransactionService;
9
-use Illuminate\Bus\Queueable;
10
 use Illuminate\Contracts\Queue\ShouldQueue;
9
 use Illuminate\Contracts\Queue\ShouldQueue;
11
-use Illuminate\Foundation\Bus\Dispatchable;
12
-use Illuminate\Queue\InteractsWithQueue;
13
-use Illuminate\Queue\SerializesModels;
10
+use Illuminate\Foundation\Queue\Queueable;
14
 use Illuminate\Support\Carbon;
11
 use Illuminate\Support\Carbon;
15
 
12
 
16
 class ProcessTransactionUpdate implements ShouldQueue
13
 class ProcessTransactionUpdate implements ShouldQueue
17
 {
14
 {
18
-    use Dispatchable;
19
-    use InteractsWithQueue;
20
     use Queueable;
15
     use Queueable;
21
-    use SerializesModels;
22
 
16
 
23
     public function __construct(
17
     public function __construct(
24
         protected Company $company,
18
         protected Company $company,

+ 2
- 0
app/Listeners/HandleTransactionImport.php 查看文件

4
 
4
 
5
 use App\Events\StartTransactionImport;
5
 use App\Events\StartTransactionImport;
6
 use App\Jobs\ProcessTransactionImport;
6
 use App\Jobs\ProcessTransactionImport;
7
+use App\Models\Accounting\Account;
7
 use Illuminate\Database\Eloquent\ModelNotFoundException;
8
 use Illuminate\Database\Eloquent\ModelNotFoundException;
8
 use Illuminate\Support\Facades\DB;
9
 use Illuminate\Support\Facades\DB;
9
 
10
 
37
                 throw new ModelNotFoundException("Account subtype '{$defaultAccountSubtypeName}' not found for company '{$company->name}'");
38
                 throw new ModelNotFoundException("Account subtype '{$defaultAccountSubtypeName}' not found for company '{$company->name}'");
38
             }
39
             }
39
 
40
 
41
+            /** @var Account $account */
40
             $account = $company->accounts()->create([
42
             $account = $company->accounts()->create([
41
                 'name' => $connectedBankAccount->name,
43
                 'name' => $connectedBankAccount->name,
42
                 'currency_code' => $connectedBankAccount->currency_code,
44
                 'currency_code' => $connectedBankAccount->currency_code,

+ 4
- 5
app/Models/Accounting/DocumentLineItem.php 查看文件

4
 
4
 
5
 use Akaunting\Money\Money;
5
 use Akaunting\Money\Money;
6
 use App\Casts\DocumentMoneyCast;
6
 use App\Casts\DocumentMoneyCast;
7
-use App\Casts\MoneyCast;
8
 use App\Concerns\Blamable;
7
 use App\Concerns\Blamable;
9
 use App\Concerns\CompanyOwned;
8
 use App\Concerns\CompanyOwned;
10
 use App\Enums\Accounting\AdjustmentCategory;
9
 use App\Enums\Accounting\AdjustmentCategory;
42
     ];
41
     ];
43
 
42
 
44
     protected $casts = [
43
     protected $casts = [
45
-        'unit_price' => MoneyCast::class,
44
+        'unit_price' => DocumentMoneyCast::class,
46
         'subtotal' => DocumentMoneyCast::class,
45
         'subtotal' => DocumentMoneyCast::class,
47
-        'tax_total' => MoneyCast::class,
48
-        'discount_total' => MoneyCast::class,
49
-        'total' => MoneyCast::class,
46
+        'tax_total' => DocumentMoneyCast::class,
47
+        'discount_total' => DocumentMoneyCast::class,
48
+        'total' => DocumentMoneyCast::class,
50
     ];
49
     ];
51
 
50
 
52
     public function documentable(): MorphTo
51
     public function documentable(): MorphTo

+ 7
- 1
app/Utilities/Currency/CurrencyConverter.php 查看文件

46
     {
46
     {
47
         $currency ??= CurrencyAccessor::getDefaultCurrency();
47
         $currency ??= CurrencyAccessor::getDefaultCurrency();
48
 
48
 
49
-        return money($amount, $currency, true)->getAmount();
49
+        $amountInCents = money($amount, $currency, true)->getAmount();
50
+
51
+        if (is_float($amountInCents)) {
52
+            $amountInCents = (int) round($amountInCents);
53
+        }
54
+
55
+        return $amountInCents;
50
     }
56
     }
51
 
57
 
52
     public static function formatCentsToMoney(int $amount, ?string $currency = null, bool $withCode = false): string
58
     public static function formatCentsToMoney(int $amount, ?string $currency = null, bool $withCode = false): string

+ 87
- 87
composer.lock 查看文件

497
         },
497
         },
498
         {
498
         {
499
             "name": "aws/aws-sdk-php",
499
             "name": "aws/aws-sdk-php",
500
-            "version": "3.342.0",
500
+            "version": "3.342.4",
501
             "source": {
501
             "source": {
502
                 "type": "git",
502
                 "type": "git",
503
                 "url": "https://github.com/aws/aws-sdk-php.git",
503
                 "url": "https://github.com/aws/aws-sdk-php.git",
504
-                "reference": "5b8c837ab0c9754ab3408bd9afe6f0c67516b1fd"
504
+                "reference": "65cc842b9998d415b05d635b6146d0728934ff4a"
505
             },
505
             },
506
             "dist": {
506
             "dist": {
507
                 "type": "zip",
507
                 "type": "zip",
508
-                "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/5b8c837ab0c9754ab3408bd9afe6f0c67516b1fd",
509
-                "reference": "5b8c837ab0c9754ab3408bd9afe6f0c67516b1fd",
508
+                "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/65cc842b9998d415b05d635b6146d0728934ff4a",
509
+                "reference": "65cc842b9998d415b05d635b6146d0728934ff4a",
510
                 "shasum": ""
510
                 "shasum": ""
511
             },
511
             },
512
             "require": {
512
             "require": {
588
             "support": {
588
             "support": {
589
                 "forum": "https://github.com/aws/aws-sdk-php/discussions",
589
                 "forum": "https://github.com/aws/aws-sdk-php/discussions",
590
                 "issues": "https://github.com/aws/aws-sdk-php/issues",
590
                 "issues": "https://github.com/aws/aws-sdk-php/issues",
591
-                "source": "https://github.com/aws/aws-sdk-php/tree/3.342.0"
591
+                "source": "https://github.com/aws/aws-sdk-php/tree/3.342.4"
592
             },
592
             },
593
-            "time": "2025-03-05T19:20:14+00:00"
593
+            "time": "2025-03-11T18:27:07+00:00"
594
         },
594
         },
595
         {
595
         {
596
             "name": "aws/aws-sdk-php-laravel",
596
             "name": "aws/aws-sdk-php-laravel",
1282
         },
1282
         },
1283
         {
1283
         {
1284
             "name": "doctrine/dbal",
1284
             "name": "doctrine/dbal",
1285
-            "version": "4.2.2",
1285
+            "version": "4.2.3",
1286
             "source": {
1286
             "source": {
1287
                 "type": "git",
1287
                 "type": "git",
1288
                 "url": "https://github.com/doctrine/dbal.git",
1288
                 "url": "https://github.com/doctrine/dbal.git",
1289
-                "reference": "19a2b7deb5fe8c2df0ff817ecea305e50acb62ec"
1289
+                "reference": "33d2d7fe1269b2301640c44cf2896ea607b30e3e"
1290
             },
1290
             },
1291
             "dist": {
1291
             "dist": {
1292
                 "type": "zip",
1292
                 "type": "zip",
1293
-                "url": "https://api.github.com/repos/doctrine/dbal/zipball/19a2b7deb5fe8c2df0ff817ecea305e50acb62ec",
1294
-                "reference": "19a2b7deb5fe8c2df0ff817ecea305e50acb62ec",
1293
+                "url": "https://api.github.com/repos/doctrine/dbal/zipball/33d2d7fe1269b2301640c44cf2896ea607b30e3e",
1294
+                "reference": "33d2d7fe1269b2301640c44cf2896ea607b30e3e",
1295
                 "shasum": ""
1295
                 "shasum": ""
1296
             },
1296
             },
1297
             "require": {
1297
             "require": {
1368
             ],
1368
             ],
1369
             "support": {
1369
             "support": {
1370
                 "issues": "https://github.com/doctrine/dbal/issues",
1370
                 "issues": "https://github.com/doctrine/dbal/issues",
1371
-                "source": "https://github.com/doctrine/dbal/tree/4.2.2"
1371
+                "source": "https://github.com/doctrine/dbal/tree/4.2.3"
1372
             },
1372
             },
1373
             "funding": [
1373
             "funding": [
1374
                 {
1374
                 {
1384
                     "type": "tidelift"
1384
                     "type": "tidelift"
1385
                 }
1385
                 }
1386
             ],
1386
             ],
1387
-            "time": "2025-01-16T08:40:56+00:00"
1387
+            "time": "2025-03-07T18:29:05+00:00"
1388
         },
1388
         },
1389
         {
1389
         {
1390
             "name": "doctrine/deprecations",
1390
             "name": "doctrine/deprecations",
1733
         },
1733
         },
1734
         {
1734
         {
1735
             "name": "filament/actions",
1735
             "name": "filament/actions",
1736
-            "version": "v3.3.3",
1736
+            "version": "v3.3.4",
1737
             "source": {
1737
             "source": {
1738
                 "type": "git",
1738
                 "type": "git",
1739
                 "url": "https://github.com/filamentphp/actions.git",
1739
                 "url": "https://github.com/filamentphp/actions.git",
1740
-                "reference": "acaaa861bc01f72a73cb5faedcc3fecbbbf599c6"
1740
+                "reference": "dd738da99c8032986e7628b09f185d8f0db7850a"
1741
             },
1741
             },
1742
             "dist": {
1742
             "dist": {
1743
                 "type": "zip",
1743
                 "type": "zip",
1744
-                "url": "https://api.github.com/repos/filamentphp/actions/zipball/acaaa861bc01f72a73cb5faedcc3fecbbbf599c6",
1745
-                "reference": "acaaa861bc01f72a73cb5faedcc3fecbbbf599c6",
1744
+                "url": "https://api.github.com/repos/filamentphp/actions/zipball/dd738da99c8032986e7628b09f185d8f0db7850a",
1745
+                "reference": "dd738da99c8032986e7628b09f185d8f0db7850a",
1746
                 "shasum": ""
1746
                 "shasum": ""
1747
             },
1747
             },
1748
             "require": {
1748
             "require": {
1782
                 "issues": "https://github.com/filamentphp/filament/issues",
1782
                 "issues": "https://github.com/filamentphp/filament/issues",
1783
                 "source": "https://github.com/filamentphp/filament"
1783
                 "source": "https://github.com/filamentphp/filament"
1784
             },
1784
             },
1785
-            "time": "2025-02-25T08:19:06+00:00"
1785
+            "time": "2025-03-11T16:33:01+00:00"
1786
         },
1786
         },
1787
         {
1787
         {
1788
             "name": "filament/filament",
1788
             "name": "filament/filament",
1789
-            "version": "v3.3.3",
1789
+            "version": "v3.3.4",
1790
             "source": {
1790
             "source": {
1791
                 "type": "git",
1791
                 "type": "git",
1792
                 "url": "https://github.com/filamentphp/panels.git",
1792
                 "url": "https://github.com/filamentphp/panels.git",
1793
-                "reference": "6ca7e497517a78413777ab74a0688a70337f6b4f"
1793
+                "reference": "ae0288f28054c88a9f36f666f4752660ce72cb08"
1794
             },
1794
             },
1795
             "dist": {
1795
             "dist": {
1796
                 "type": "zip",
1796
                 "type": "zip",
1797
-                "url": "https://api.github.com/repos/filamentphp/panels/zipball/6ca7e497517a78413777ab74a0688a70337f6b4f",
1798
-                "reference": "6ca7e497517a78413777ab74a0688a70337f6b4f",
1797
+                "url": "https://api.github.com/repos/filamentphp/panels/zipball/ae0288f28054c88a9f36f666f4752660ce72cb08",
1798
+                "reference": "ae0288f28054c88a9f36f666f4752660ce72cb08",
1799
                 "shasum": ""
1799
                 "shasum": ""
1800
             },
1800
             },
1801
             "require": {
1801
             "require": {
1847
                 "issues": "https://github.com/filamentphp/filament/issues",
1847
                 "issues": "https://github.com/filamentphp/filament/issues",
1848
                 "source": "https://github.com/filamentphp/filament"
1848
                 "source": "https://github.com/filamentphp/filament"
1849
             },
1849
             },
1850
-            "time": "2025-03-05T09:26:29+00:00"
1850
+            "time": "2025-03-11T16:33:11+00:00"
1851
         },
1851
         },
1852
         {
1852
         {
1853
             "name": "filament/forms",
1853
             "name": "filament/forms",
1854
-            "version": "v3.3.3",
1854
+            "version": "v3.3.4",
1855
             "source": {
1855
             "source": {
1856
                 "type": "git",
1856
                 "type": "git",
1857
                 "url": "https://github.com/filamentphp/forms.git",
1857
                 "url": "https://github.com/filamentphp/forms.git",
1858
-                "reference": "420f6b2b30288c853024d189213e38f644dd6f6e"
1858
+                "reference": "647f03f3d7a15a9ce71e803926b2e89f88693e8e"
1859
             },
1859
             },
1860
             "dist": {
1860
             "dist": {
1861
                 "type": "zip",
1861
                 "type": "zip",
1862
-                "url": "https://api.github.com/repos/filamentphp/forms/zipball/420f6b2b30288c853024d189213e38f644dd6f6e",
1863
-                "reference": "420f6b2b30288c853024d189213e38f644dd6f6e",
1862
+                "url": "https://api.github.com/repos/filamentphp/forms/zipball/647f03f3d7a15a9ce71e803926b2e89f88693e8e",
1863
+                "reference": "647f03f3d7a15a9ce71e803926b2e89f88693e8e",
1864
                 "shasum": ""
1864
                 "shasum": ""
1865
             },
1865
             },
1866
             "require": {
1866
             "require": {
1903
                 "issues": "https://github.com/filamentphp/filament/issues",
1903
                 "issues": "https://github.com/filamentphp/filament/issues",
1904
                 "source": "https://github.com/filamentphp/filament"
1904
                 "source": "https://github.com/filamentphp/filament"
1905
             },
1905
             },
1906
-            "time": "2025-03-05T09:26:39+00:00"
1906
+            "time": "2025-03-11T16:33:00+00:00"
1907
         },
1907
         },
1908
         {
1908
         {
1909
             "name": "filament/infolists",
1909
             "name": "filament/infolists",
1910
-            "version": "v3.3.3",
1910
+            "version": "v3.3.4",
1911
             "source": {
1911
             "source": {
1912
                 "type": "git",
1912
                 "type": "git",
1913
                 "url": "https://github.com/filamentphp/infolists.git",
1913
                 "url": "https://github.com/filamentphp/infolists.git",
1914
-                "reference": "3498bfd23670f94d9c2160d2a7382775dfc97430"
1914
+                "reference": "a1355ace7341e4e44d31dc30cfc6129bd61c7d8f"
1915
             },
1915
             },
1916
             "dist": {
1916
             "dist": {
1917
                 "type": "zip",
1917
                 "type": "zip",
1918
-                "url": "https://api.github.com/repos/filamentphp/infolists/zipball/3498bfd23670f94d9c2160d2a7382775dfc97430",
1919
-                "reference": "3498bfd23670f94d9c2160d2a7382775dfc97430",
1918
+                "url": "https://api.github.com/repos/filamentphp/infolists/zipball/a1355ace7341e4e44d31dc30cfc6129bd61c7d8f",
1919
+                "reference": "a1355ace7341e4e44d31dc30cfc6129bd61c7d8f",
1920
                 "shasum": ""
1920
                 "shasum": ""
1921
             },
1921
             },
1922
             "require": {
1922
             "require": {
1954
                 "issues": "https://github.com/filamentphp/filament/issues",
1954
                 "issues": "https://github.com/filamentphp/filament/issues",
1955
                 "source": "https://github.com/filamentphp/filament"
1955
                 "source": "https://github.com/filamentphp/filament"
1956
             },
1956
             },
1957
-            "time": "2025-03-03T08:11:43+00:00"
1957
+            "time": "2025-03-11T16:33:01+00:00"
1958
         },
1958
         },
1959
         {
1959
         {
1960
             "name": "filament/notifications",
1960
             "name": "filament/notifications",
1961
-            "version": "v3.3.3",
1961
+            "version": "v3.3.4",
1962
             "source": {
1962
             "source": {
1963
                 "type": "git",
1963
                 "type": "git",
1964
                 "url": "https://github.com/filamentphp/notifications.git",
1964
                 "url": "https://github.com/filamentphp/notifications.git",
1965
-                "reference": "8cfe18e5d04ba72d777753ed632bbcf3408236a2"
1965
+                "reference": "25d37ce5c74fcd339490b1cf89c4a4d3db3eb87d"
1966
             },
1966
             },
1967
             "dist": {
1967
             "dist": {
1968
                 "type": "zip",
1968
                 "type": "zip",
1969
-                "url": "https://api.github.com/repos/filamentphp/notifications/zipball/8cfe18e5d04ba72d777753ed632bbcf3408236a2",
1970
-                "reference": "8cfe18e5d04ba72d777753ed632bbcf3408236a2",
1969
+                "url": "https://api.github.com/repos/filamentphp/notifications/zipball/25d37ce5c74fcd339490b1cf89c4a4d3db3eb87d",
1970
+                "reference": "25d37ce5c74fcd339490b1cf89c4a4d3db3eb87d",
1971
                 "shasum": ""
1971
                 "shasum": ""
1972
             },
1972
             },
1973
             "require": {
1973
             "require": {
2006
                 "issues": "https://github.com/filamentphp/filament/issues",
2006
                 "issues": "https://github.com/filamentphp/filament/issues",
2007
                 "source": "https://github.com/filamentphp/filament"
2007
                 "source": "https://github.com/filamentphp/filament"
2008
             },
2008
             },
2009
-            "time": "2025-02-25T08:18:58+00:00"
2009
+            "time": "2025-03-11T16:33:09+00:00"
2010
         },
2010
         },
2011
         {
2011
         {
2012
             "name": "filament/support",
2012
             "name": "filament/support",
2013
-            "version": "v3.3.3",
2013
+            "version": "v3.3.4",
2014
             "source": {
2014
             "source": {
2015
                 "type": "git",
2015
                 "type": "git",
2016
                 "url": "https://github.com/filamentphp/support.git",
2016
                 "url": "https://github.com/filamentphp/support.git",
2069
         },
2069
         },
2070
         {
2070
         {
2071
             "name": "filament/tables",
2071
             "name": "filament/tables",
2072
-            "version": "v3.3.3",
2072
+            "version": "v3.3.4",
2073
             "source": {
2073
             "source": {
2074
                 "type": "git",
2074
                 "type": "git",
2075
                 "url": "https://github.com/filamentphp/tables.git",
2075
                 "url": "https://github.com/filamentphp/tables.git",
2076
-                "reference": "5f2fbd8f0c6ffd19b2462269778ed96ce3c6fd35"
2076
+                "reference": "8f9bb6449c7ff74e234848f336161af5a64561c6"
2077
             },
2077
             },
2078
             "dist": {
2078
             "dist": {
2079
                 "type": "zip",
2079
                 "type": "zip",
2080
-                "url": "https://api.github.com/repos/filamentphp/tables/zipball/5f2fbd8f0c6ffd19b2462269778ed96ce3c6fd35",
2081
-                "reference": "5f2fbd8f0c6ffd19b2462269778ed96ce3c6fd35",
2080
+                "url": "https://api.github.com/repos/filamentphp/tables/zipball/8f9bb6449c7ff74e234848f336161af5a64561c6",
2081
+                "reference": "8f9bb6449c7ff74e234848f336161af5a64561c6",
2082
                 "shasum": ""
2082
                 "shasum": ""
2083
             },
2083
             },
2084
             "require": {
2084
             "require": {
2117
                 "issues": "https://github.com/filamentphp/filament/issues",
2117
                 "issues": "https://github.com/filamentphp/filament/issues",
2118
                 "source": "https://github.com/filamentphp/filament"
2118
                 "source": "https://github.com/filamentphp/filament"
2119
             },
2119
             },
2120
-            "time": "2025-03-03T09:07:30+00:00"
2120
+            "time": "2025-03-11T16:33:31+00:00"
2121
         },
2121
         },
2122
         {
2122
         {
2123
             "name": "filament/widgets",
2123
             "name": "filament/widgets",
2124
-            "version": "v3.3.3",
2124
+            "version": "v3.3.4",
2125
             "source": {
2125
             "source": {
2126
                 "type": "git",
2126
                 "type": "git",
2127
                 "url": "https://github.com/filamentphp/widgets.git",
2127
                 "url": "https://github.com/filamentphp/widgets.git",
2128
-                "reference": "3bbd19044e19f93711f3690c441a3a0d35696aa1"
2128
+                "reference": "2d91f0d509b4ef497678b919e471e9099451bd21"
2129
             },
2129
             },
2130
             "dist": {
2130
             "dist": {
2131
                 "type": "zip",
2131
                 "type": "zip",
2132
-                "url": "https://api.github.com/repos/filamentphp/widgets/zipball/3bbd19044e19f93711f3690c441a3a0d35696aa1",
2133
-                "reference": "3bbd19044e19f93711f3690c441a3a0d35696aa1",
2132
+                "url": "https://api.github.com/repos/filamentphp/widgets/zipball/2d91f0d509b4ef497678b919e471e9099451bd21",
2133
+                "reference": "2d91f0d509b4ef497678b919e471e9099451bd21",
2134
                 "shasum": ""
2134
                 "shasum": ""
2135
             },
2135
             },
2136
             "require": {
2136
             "require": {
2161
                 "issues": "https://github.com/filamentphp/filament/issues",
2161
                 "issues": "https://github.com/filamentphp/filament/issues",
2162
                 "source": "https://github.com/filamentphp/filament"
2162
                 "source": "https://github.com/filamentphp/filament"
2163
             },
2163
             },
2164
-            "time": "2025-02-19T08:42:37+00:00"
2164
+            "time": "2025-03-11T16:33:32+00:00"
2165
         },
2165
         },
2166
         {
2166
         {
2167
             "name": "firebase/php-jwt",
2167
             "name": "firebase/php-jwt",
2921
         },
2921
         },
2922
         {
2922
         {
2923
             "name": "kirschbaum-development/eloquent-power-joins",
2923
             "name": "kirschbaum-development/eloquent-power-joins",
2924
-            "version": "4.2.1",
2924
+            "version": "4.2.2",
2925
             "source": {
2925
             "source": {
2926
                 "type": "git",
2926
                 "type": "git",
2927
                 "url": "https://github.com/kirschbaum-development/eloquent-power-joins.git",
2927
                 "url": "https://github.com/kirschbaum-development/eloquent-power-joins.git",
2928
-                "reference": "84a24784d9abde8bafb1998a0841a6bc10fa6f8e"
2928
+                "reference": "a307fab78c291526fba754e6ac8a86f7bd58d45d"
2929
             },
2929
             },
2930
             "dist": {
2930
             "dist": {
2931
                 "type": "zip",
2931
                 "type": "zip",
2932
-                "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/84a24784d9abde8bafb1998a0841a6bc10fa6f8e",
2933
-                "reference": "84a24784d9abde8bafb1998a0841a6bc10fa6f8e",
2932
+                "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/a307fab78c291526fba754e6ac8a86f7bd58d45d",
2933
+                "reference": "a307fab78c291526fba754e6ac8a86f7bd58d45d",
2934
                 "shasum": ""
2934
                 "shasum": ""
2935
             },
2935
             },
2936
             "require": {
2936
             "require": {
2978
             ],
2978
             ],
2979
             "support": {
2979
             "support": {
2980
                 "issues": "https://github.com/kirschbaum-development/eloquent-power-joins/issues",
2980
                 "issues": "https://github.com/kirschbaum-development/eloquent-power-joins/issues",
2981
-                "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/4.2.1"
2981
+                "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/4.2.2"
2982
             },
2982
             },
2983
-            "time": "2025-03-05T10:11:33+00:00"
2983
+            "time": "2025-03-08T01:26:00+00:00"
2984
         },
2984
         },
2985
         {
2985
         {
2986
             "name": "knplabs/knp-snappy",
2986
             "name": "knplabs/knp-snappy",
5141
         },
5141
         },
5142
         {
5142
         {
5143
             "name": "openspout/openspout",
5143
             "name": "openspout/openspout",
5144
-            "version": "v4.28.5",
5144
+            "version": "v4.29.1",
5145
             "source": {
5145
             "source": {
5146
                 "type": "git",
5146
                 "type": "git",
5147
                 "url": "https://github.com/openspout/openspout.git",
5147
                 "url": "https://github.com/openspout/openspout.git",
5148
-                "reference": "ab05a09fe6fce57c90338f83280648a9786ce36b"
5148
+                "reference": "ec83106bc3922fe94c9d37976ba6b7259511c4c5"
5149
             },
5149
             },
5150
             "dist": {
5150
             "dist": {
5151
                 "type": "zip",
5151
                 "type": "zip",
5152
-                "url": "https://api.github.com/repos/openspout/openspout/zipball/ab05a09fe6fce57c90338f83280648a9786ce36b",
5153
-                "reference": "ab05a09fe6fce57c90338f83280648a9786ce36b",
5152
+                "url": "https://api.github.com/repos/openspout/openspout/zipball/ec83106bc3922fe94c9d37976ba6b7259511c4c5",
5153
+                "reference": "ec83106bc3922fe94c9d37976ba6b7259511c4c5",
5154
                 "shasum": ""
5154
                 "shasum": ""
5155
             },
5155
             },
5156
             "require": {
5156
             "require": {
5160
                 "ext-libxml": "*",
5160
                 "ext-libxml": "*",
5161
                 "ext-xmlreader": "*",
5161
                 "ext-xmlreader": "*",
5162
                 "ext-zip": "*",
5162
                 "ext-zip": "*",
5163
-                "php": "~8.2.0 || ~8.3.0 || ~8.4.0"
5163
+                "php": "~8.3.0 || ~8.4.0"
5164
             },
5164
             },
5165
             "require-dev": {
5165
             "require-dev": {
5166
                 "ext-zlib": "*",
5166
                 "ext-zlib": "*",
5167
-                "friendsofphp/php-cs-fixer": "^3.68.3",
5168
-                "infection/infection": "^0.29.10",
5167
+                "friendsofphp/php-cs-fixer": "^3.71.0",
5168
+                "infection/infection": "^0.29.14",
5169
                 "phpbench/phpbench": "^1.4.0",
5169
                 "phpbench/phpbench": "^1.4.0",
5170
-                "phpstan/phpstan": "^2.1.2",
5170
+                "phpstan/phpstan": "^2.1.8",
5171
                 "phpstan/phpstan-phpunit": "^2.0.4",
5171
                 "phpstan/phpstan-phpunit": "^2.0.4",
5172
-                "phpstan/phpstan-strict-rules": "^2",
5173
-                "phpunit/phpunit": "^11.5.4"
5172
+                "phpstan/phpstan-strict-rules": "^2.0.3",
5173
+                "phpunit/phpunit": "^12.0.7"
5174
             },
5174
             },
5175
             "suggest": {
5175
             "suggest": {
5176
                 "ext-iconv": "To handle non UTF-8 CSV files (if \"php-mbstring\" is not already installed or is too limited)",
5176
                 "ext-iconv": "To handle non UTF-8 CSV files (if \"php-mbstring\" is not already installed or is too limited)",
5218
             ],
5218
             ],
5219
             "support": {
5219
             "support": {
5220
                 "issues": "https://github.com/openspout/openspout/issues",
5220
                 "issues": "https://github.com/openspout/openspout/issues",
5221
-                "source": "https://github.com/openspout/openspout/tree/v4.28.5"
5221
+                "source": "https://github.com/openspout/openspout/tree/v4.29.1"
5222
             },
5222
             },
5223
             "funding": [
5223
             "funding": [
5224
                 {
5224
                 {
5230
                     "type": "github"
5230
                     "type": "github"
5231
                 }
5231
                 }
5232
             ],
5232
             ],
5233
-            "time": "2025-01-30T13:51:11+00:00"
5233
+            "time": "2025-03-11T14:40:46+00:00"
5234
         },
5234
         },
5235
         {
5235
         {
5236
             "name": "paragonie/constant_time_encoding",
5236
             "name": "paragonie/constant_time_encoding",
9704
         },
9704
         },
9705
         {
9705
         {
9706
             "name": "laravel/pint",
9706
             "name": "laravel/pint",
9707
-            "version": "v1.21.0",
9707
+            "version": "v1.21.1",
9708
             "source": {
9708
             "source": {
9709
                 "type": "git",
9709
                 "type": "git",
9710
                 "url": "https://github.com/laravel/pint.git",
9710
                 "url": "https://github.com/laravel/pint.git",
9711
-                "reference": "531fa0871fbde719c51b12afa3a443b8f4e4b425"
9711
+                "reference": "c44bffbb2334e90fba560933c45948fa4a3f3e86"
9712
             },
9712
             },
9713
             "dist": {
9713
             "dist": {
9714
                 "type": "zip",
9714
                 "type": "zip",
9715
-                "url": "https://api.github.com/repos/laravel/pint/zipball/531fa0871fbde719c51b12afa3a443b8f4e4b425",
9716
-                "reference": "531fa0871fbde719c51b12afa3a443b8f4e4b425",
9715
+                "url": "https://api.github.com/repos/laravel/pint/zipball/c44bffbb2334e90fba560933c45948fa4a3f3e86",
9716
+                "reference": "c44bffbb2334e90fba560933c45948fa4a3f3e86",
9717
                 "shasum": ""
9717
                 "shasum": ""
9718
             },
9718
             },
9719
             "require": {
9719
             "require": {
9724
                 "php": "^8.2.0"
9724
                 "php": "^8.2.0"
9725
             },
9725
             },
9726
             "require-dev": {
9726
             "require-dev": {
9727
-                "friendsofphp/php-cs-fixer": "^3.68.5",
9728
-                "illuminate/view": "^11.42.0",
9729
-                "larastan/larastan": "^3.0.4",
9727
+                "friendsofphp/php-cs-fixer": "^3.70.2",
9728
+                "illuminate/view": "^11.44.1",
9729
+                "larastan/larastan": "^3.1.0",
9730
                 "laravel-zero/framework": "^11.36.1",
9730
                 "laravel-zero/framework": "^11.36.1",
9731
                 "mockery/mockery": "^1.6.12",
9731
                 "mockery/mockery": "^1.6.12",
9732
                 "nunomaduro/termwind": "^2.3",
9732
                 "nunomaduro/termwind": "^2.3",
9766
                 "issues": "https://github.com/laravel/pint/issues",
9766
                 "issues": "https://github.com/laravel/pint/issues",
9767
                 "source": "https://github.com/laravel/pint"
9767
                 "source": "https://github.com/laravel/pint"
9768
             },
9768
             },
9769
-            "time": "2025-02-18T03:18:57+00:00"
9769
+            "time": "2025-03-11T03:22:21+00:00"
9770
         },
9770
         },
9771
         {
9771
         {
9772
             "name": "laravel/sail",
9772
             "name": "laravel/sail",
11526
         },
11526
         },
11527
         {
11527
         {
11528
             "name": "sebastian/comparator",
11528
             "name": "sebastian/comparator",
11529
-            "version": "6.3.0",
11529
+            "version": "6.3.1",
11530
             "source": {
11530
             "source": {
11531
                 "type": "git",
11531
                 "type": "git",
11532
                 "url": "https://github.com/sebastianbergmann/comparator.git",
11532
                 "url": "https://github.com/sebastianbergmann/comparator.git",
11533
-                "reference": "d4e47a769525c4dd38cea90e5dcd435ddbbc7115"
11533
+                "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959"
11534
             },
11534
             },
11535
             "dist": {
11535
             "dist": {
11536
                 "type": "zip",
11536
                 "type": "zip",
11537
-                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/d4e47a769525c4dd38cea90e5dcd435ddbbc7115",
11538
-                "reference": "d4e47a769525c4dd38cea90e5dcd435ddbbc7115",
11537
+                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/24b8fbc2c8e201bb1308e7b05148d6ab393b6959",
11538
+                "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959",
11539
                 "shasum": ""
11539
                 "shasum": ""
11540
             },
11540
             },
11541
             "require": {
11541
             "require": {
11554
             "type": "library",
11554
             "type": "library",
11555
             "extra": {
11555
             "extra": {
11556
                 "branch-alias": {
11556
                 "branch-alias": {
11557
-                    "dev-main": "6.2-dev"
11557
+                    "dev-main": "6.3-dev"
11558
                 }
11558
                 }
11559
             },
11559
             },
11560
             "autoload": {
11560
             "autoload": {
11594
             "support": {
11594
             "support": {
11595
                 "issues": "https://github.com/sebastianbergmann/comparator/issues",
11595
                 "issues": "https://github.com/sebastianbergmann/comparator/issues",
11596
                 "security": "https://github.com/sebastianbergmann/comparator/security/policy",
11596
                 "security": "https://github.com/sebastianbergmann/comparator/security/policy",
11597
-                "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.0"
11597
+                "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.1"
11598
             },
11598
             },
11599
             "funding": [
11599
             "funding": [
11600
                 {
11600
                 {
11602
                     "type": "github"
11602
                     "type": "github"
11603
                 }
11603
                 }
11604
             ],
11604
             ],
11605
-            "time": "2025-01-06T10:28:19+00:00"
11605
+            "time": "2025-03-07T06:57:01+00:00"
11606
         },
11606
         },
11607
         {
11607
         {
11608
             "name": "sebastian/complexity",
11608
             "name": "sebastian/complexity",
12662
         },
12662
         },
12663
         {
12663
         {
12664
             "name": "spatie/laravel-ray",
12664
             "name": "spatie/laravel-ray",
12665
-            "version": "1.39.1",
12665
+            "version": "1.40.0",
12666
             "source": {
12666
             "source": {
12667
                 "type": "git",
12667
                 "type": "git",
12668
                 "url": "https://github.com/spatie/laravel-ray.git",
12668
                 "url": "https://github.com/spatie/laravel-ray.git",
12669
-                "reference": "0d890fa2cd2c0b6175cf54c56b9321d81047571d"
12669
+                "reference": "3bcca8c64cd6d45c903f20cb0a548e2143ffdf84"
12670
             },
12670
             },
12671
             "dist": {
12671
             "dist": {
12672
                 "type": "zip",
12672
                 "type": "zip",
12673
-                "url": "https://api.github.com/repos/spatie/laravel-ray/zipball/0d890fa2cd2c0b6175cf54c56b9321d81047571d",
12674
-                "reference": "0d890fa2cd2c0b6175cf54c56b9321d81047571d",
12673
+                "url": "https://api.github.com/repos/spatie/laravel-ray/zipball/3bcca8c64cd6d45c903f20cb0a548e2143ffdf84",
12674
+                "reference": "3bcca8c64cd6d45c903f20cb0a548e2143ffdf84",
12675
                 "shasum": ""
12675
                 "shasum": ""
12676
             },
12676
             },
12677
             "require": {
12677
             "require": {
12734
             ],
12734
             ],
12735
             "support": {
12735
             "support": {
12736
                 "issues": "https://github.com/spatie/laravel-ray/issues",
12736
                 "issues": "https://github.com/spatie/laravel-ray/issues",
12737
-                "source": "https://github.com/spatie/laravel-ray/tree/1.39.1"
12737
+                "source": "https://github.com/spatie/laravel-ray/tree/1.40.0"
12738
             },
12738
             },
12739
             "funding": [
12739
             "funding": [
12740
                 {
12740
                 {
12746
                     "type": "other"
12746
                     "type": "other"
12747
                 }
12747
                 }
12748
             ],
12748
             ],
12749
-            "time": "2025-02-05T08:16:15+00:00"
12749
+            "time": "2025-03-08T10:58:11+00:00"
12750
         },
12750
         },
12751
         {
12751
         {
12752
             "name": "spatie/macroable",
12752
             "name": "spatie/macroable",

+ 4
- 4
config/queue.php 查看文件

40
             'table' => env('DB_QUEUE_TABLE', 'jobs'),
40
             'table' => env('DB_QUEUE_TABLE', 'jobs'),
41
             'queue' => env('DB_QUEUE', 'default'),
41
             'queue' => env('DB_QUEUE', 'default'),
42
             'retry_after' => env('DB_QUEUE_RETRY_AFTER', 90),
42
             'retry_after' => env('DB_QUEUE_RETRY_AFTER', 90),
43
-            'after_commit' => false,
43
+            'after_commit' => true,
44
         ],
44
         ],
45
 
45
 
46
         'beanstalkd' => [
46
         'beanstalkd' => [
49
             'queue' => env('BEANSTALKD_QUEUE', 'default'),
49
             'queue' => env('BEANSTALKD_QUEUE', 'default'),
50
             'retry_after' => env('BEANSTALKD_QUEUE_RETRY_AFTER', 90),
50
             'retry_after' => env('BEANSTALKD_QUEUE_RETRY_AFTER', 90),
51
             'block_for' => 0,
51
             'block_for' => 0,
52
-            'after_commit' => false,
52
+            'after_commit' => true,
53
         ],
53
         ],
54
 
54
 
55
         'sqs' => [
55
         'sqs' => [
60
             'queue' => env('SQS_QUEUE', 'default'),
60
             'queue' => env('SQS_QUEUE', 'default'),
61
             'suffix' => env('SQS_SUFFIX'),
61
             'suffix' => env('SQS_SUFFIX'),
62
             'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
62
             'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
63
-            'after_commit' => false,
63
+            'after_commit' => true,
64
         ],
64
         ],
65
 
65
 
66
         'redis' => [
66
         'redis' => [
69
             'queue' => env('REDIS_QUEUE', 'default'),
69
             'queue' => env('REDIS_QUEUE', 'default'),
70
             'retry_after' => env('REDIS_QUEUE_RETRY_AFTER', 90),
70
             'retry_after' => env('REDIS_QUEUE_RETRY_AFTER', 90),
71
             'block_for' => null,
71
             'block_for' => null,
72
-            'after_commit' => false,
72
+            'after_commit' => true,
73
         ],
73
         ],
74
 
74
 
75
     ],
75
     ],

+ 6
- 6
database/migrations/2024_11_13_220301_create_document_line_items_table.php 查看文件

17
             $table->morphs('documentable');
17
             $table->morphs('documentable');
18
             $table->foreignId('offering_id')->nullable()->constrained()->nullOnDelete();
18
             $table->foreignId('offering_id')->nullable()->constrained()->nullOnDelete();
19
             $table->string('description')->nullable();
19
             $table->string('description')->nullable();
20
-            $table->integer('quantity')->default(1);
21
-            $table->integer('unit_price')->default(0);
22
-            $table->integer('subtotal')->storedAs('quantity * unit_price');
23
-            $table->integer('total')->storedAs('(quantity * unit_price) + tax_total - discount_total');
24
-            $table->integer('tax_total')->default(0);
25
-            $table->integer('discount_total')->default(0);
20
+            $table->decimal('quantity', 10, 2)->default(1);
21
+            $table->bigInteger('unit_price')->default(0);
22
+            $table->bigInteger('subtotal')->storedAs('quantity * unit_price');
23
+            $table->bigInteger('total')->storedAs('(quantity * unit_price) + tax_total - discount_total');
24
+            $table->bigInteger('tax_total')->default(0);
25
+            $table->bigInteger('discount_total')->default(0);
26
             $table->foreignId('created_by')->nullable()->constrained('users')->nullOnDelete();
26
             $table->foreignId('created_by')->nullable()->constrained('users')->nullOnDelete();
27
             $table->foreignId('updated_by')->nullable()->constrained('users')->nullOnDelete();
27
             $table->foreignId('updated_by')->nullable()->constrained('users')->nullOnDelete();
28
             $table->timestamps();
28
             $table->timestamps();

+ 1
- 1
database/migrations/2024_11_14_230753_create_adjustments_table.php 查看文件

20
             $table->string('category')->default('tax');
20
             $table->string('category')->default('tax');
21
             $table->string('type')->default('sales');
21
             $table->string('type')->default('sales');
22
             $table->boolean('recoverable')->default(false);
22
             $table->boolean('recoverable')->default(false);
23
-            $table->integer('rate')->default(0);
23
+            $table->bigInteger('rate')->default(0);
24
             $table->string('computation')->default('percentage');
24
             $table->string('computation')->default('percentage');
25
             $table->string('scope')->nullable();
25
             $table->string('scope')->nullable();
26
             $table->dateTime('start_date')->nullable();
26
             $table->dateTime('start_date')->nullable();

+ 7
- 7
database/migrations/2024_11_27_221657_create_bills_table.php 查看文件

24
             $table->string('currency_code')->nullable();
24
             $table->string('currency_code')->nullable();
25
             $table->string('discount_method')->default('per_line_item');
25
             $table->string('discount_method')->default('per_line_item');
26
             $table->string('discount_computation')->default('percentage');
26
             $table->string('discount_computation')->default('percentage');
27
-            $table->integer('discount_rate')->default(0);
28
-            $table->integer('subtotal')->default(0);
29
-            $table->integer('tax_total')->default(0);
30
-            $table->integer('discount_total')->default(0);
31
-            $table->integer('total')->default(0);
32
-            $table->integer('amount_paid')->default(0);
33
-            $table->integer('amount_due')->storedAs('total - amount_paid');
27
+            $table->bigInteger('discount_rate')->default(0);
28
+            $table->bigInteger('subtotal')->default(0);
29
+            $table->bigInteger('tax_total')->default(0);
30
+            $table->bigInteger('discount_total')->default(0);
31
+            $table->bigInteger('total')->default(0);
32
+            $table->bigInteger('amount_paid')->default(0);
33
+            $table->bigInteger('amount_due')->storedAs('total - amount_paid');
34
             $table->text('notes')->nullable();
34
             $table->text('notes')->nullable();
35
             $table->foreignId('created_by')->nullable()->constrained('users')->nullOnDelete();
35
             $table->foreignId('created_by')->nullable()->constrained('users')->nullOnDelete();
36
             $table->foreignId('updated_by')->nullable()->constrained('users')->nullOnDelete();
36
             $table->foreignId('updated_by')->nullable()->constrained('users')->nullOnDelete();

+ 5
- 5
database/migrations/2024_11_27_223000_create_estimates_table.php 查看文件

32
             $table->string('currency_code')->nullable();
32
             $table->string('currency_code')->nullable();
33
             $table->string('discount_method')->default('per_line_item');
33
             $table->string('discount_method')->default('per_line_item');
34
             $table->string('discount_computation')->default('percentage');
34
             $table->string('discount_computation')->default('percentage');
35
-            $table->integer('discount_rate')->default(0);
36
-            $table->integer('subtotal')->default(0);
37
-            $table->integer('tax_total')->default(0);
38
-            $table->integer('discount_total')->default(0);
39
-            $table->integer('total')->default(0);
35
+            $table->bigInteger('discount_rate')->default(0);
36
+            $table->bigInteger('subtotal')->default(0);
37
+            $table->bigInteger('tax_total')->default(0);
38
+            $table->bigInteger('discount_total')->default(0);
39
+            $table->bigInteger('total')->default(0);
40
             $table->text('terms')->nullable(); // terms, notes
40
             $table->text('terms')->nullable(); // terms, notes
41
             $table->text('footer')->nullable();
41
             $table->text('footer')->nullable();
42
             $table->foreignId('created_by')->nullable()->constrained('users')->nullOnDelete();
42
             $table->foreignId('created_by')->nullable()->constrained('users')->nullOnDelete();

+ 5
- 5
database/migrations/2024_11_27_223001_create_recurring_invoices_table.php 查看文件

42
             $table->string('currency_code')->nullable();
42
             $table->string('currency_code')->nullable();
43
             $table->string('discount_method')->default('per_line_item');
43
             $table->string('discount_method')->default('per_line_item');
44
             $table->string('discount_computation')->default('percentage');
44
             $table->string('discount_computation')->default('percentage');
45
-            $table->integer('discount_rate')->default(0);
46
-            $table->integer('subtotal')->default(0);
47
-            $table->integer('tax_total')->default(0);
48
-            $table->integer('discount_total')->default(0);
49
-            $table->integer('total')->default(0);
45
+            $table->bigInteger('discount_rate')->default(0);
46
+            $table->bigInteger('subtotal')->default(0);
47
+            $table->bigInteger('tax_total')->default(0);
48
+            $table->bigInteger('discount_total')->default(0);
49
+            $table->bigInteger('total')->default(0);
50
             $table->text('terms')->nullable(); // terms, notes
50
             $table->text('terms')->nullable(); // terms, notes
51
             $table->text('footer')->nullable();
51
             $table->text('footer')->nullable();
52
             $table->foreignId('created_by')->nullable()->constrained('users')->nullOnDelete();
52
             $table->foreignId('created_by')->nullable()->constrained('users')->nullOnDelete();

+ 7
- 7
database/migrations/2024_11_27_223015_create_invoices_table.php 查看文件

32
             $table->string('currency_code')->nullable();
32
             $table->string('currency_code')->nullable();
33
             $table->string('discount_method')->default('per_line_item');
33
             $table->string('discount_method')->default('per_line_item');
34
             $table->string('discount_computation')->default('percentage');
34
             $table->string('discount_computation')->default('percentage');
35
-            $table->integer('discount_rate')->default(0);
36
-            $table->integer('subtotal')->default(0);
37
-            $table->integer('tax_total')->default(0);
38
-            $table->integer('discount_total')->default(0);
39
-            $table->integer('total')->default(0);
40
-            $table->integer('amount_paid')->default(0);
41
-            $table->integer('amount_due')->storedAs('total - amount_paid');
35
+            $table->bigInteger('discount_rate')->default(0);
36
+            $table->bigInteger('subtotal')->default(0);
37
+            $table->bigInteger('tax_total')->default(0);
38
+            $table->bigInteger('discount_total')->default(0);
39
+            $table->bigInteger('total')->default(0);
40
+            $table->bigInteger('amount_paid')->default(0);
41
+            $table->bigInteger('amount_due')->storedAs('total - amount_paid');
42
             $table->text('terms')->nullable(); // terms, notes
42
             $table->text('terms')->nullable(); // terms, notes
43
             $table->text('footer')->nullable();
43
             $table->text('footer')->nullable();
44
             $table->foreignId('created_by')->nullable()->constrained('users')->nullOnDelete();
44
             $table->foreignId('created_by')->nullable()->constrained('users')->nullOnDelete();

+ 203
- 203
package-lock.json 查看文件

30
             }
30
             }
31
         },
31
         },
32
         "node_modules/@esbuild/aix-ppc64": {
32
         "node_modules/@esbuild/aix-ppc64": {
33
-            "version": "0.25.0",
34
-            "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz",
35
-            "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==",
33
+            "version": "0.25.1",
34
+            "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz",
35
+            "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==",
36
             "cpu": [
36
             "cpu": [
37
                 "ppc64"
37
                 "ppc64"
38
             ],
38
             ],
47
             }
47
             }
48
         },
48
         },
49
         "node_modules/@esbuild/android-arm": {
49
         "node_modules/@esbuild/android-arm": {
50
-            "version": "0.25.0",
51
-            "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz",
52
-            "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==",
50
+            "version": "0.25.1",
51
+            "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz",
52
+            "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==",
53
             "cpu": [
53
             "cpu": [
54
                 "arm"
54
                 "arm"
55
             ],
55
             ],
64
             }
64
             }
65
         },
65
         },
66
         "node_modules/@esbuild/android-arm64": {
66
         "node_modules/@esbuild/android-arm64": {
67
-            "version": "0.25.0",
68
-            "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz",
69
-            "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==",
67
+            "version": "0.25.1",
68
+            "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz",
69
+            "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==",
70
             "cpu": [
70
             "cpu": [
71
                 "arm64"
71
                 "arm64"
72
             ],
72
             ],
81
             }
81
             }
82
         },
82
         },
83
         "node_modules/@esbuild/android-x64": {
83
         "node_modules/@esbuild/android-x64": {
84
-            "version": "0.25.0",
85
-            "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz",
86
-            "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==",
84
+            "version": "0.25.1",
85
+            "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz",
86
+            "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==",
87
             "cpu": [
87
             "cpu": [
88
                 "x64"
88
                 "x64"
89
             ],
89
             ],
98
             }
98
             }
99
         },
99
         },
100
         "node_modules/@esbuild/darwin-arm64": {
100
         "node_modules/@esbuild/darwin-arm64": {
101
-            "version": "0.25.0",
102
-            "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz",
103
-            "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==",
101
+            "version": "0.25.1",
102
+            "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz",
103
+            "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==",
104
             "cpu": [
104
             "cpu": [
105
                 "arm64"
105
                 "arm64"
106
             ],
106
             ],
115
             }
115
             }
116
         },
116
         },
117
         "node_modules/@esbuild/darwin-x64": {
117
         "node_modules/@esbuild/darwin-x64": {
118
-            "version": "0.25.0",
119
-            "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz",
120
-            "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==",
118
+            "version": "0.25.1",
119
+            "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz",
120
+            "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==",
121
             "cpu": [
121
             "cpu": [
122
                 "x64"
122
                 "x64"
123
             ],
123
             ],
132
             }
132
             }
133
         },
133
         },
134
         "node_modules/@esbuild/freebsd-arm64": {
134
         "node_modules/@esbuild/freebsd-arm64": {
135
-            "version": "0.25.0",
136
-            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz",
137
-            "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==",
135
+            "version": "0.25.1",
136
+            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz",
137
+            "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==",
138
             "cpu": [
138
             "cpu": [
139
                 "arm64"
139
                 "arm64"
140
             ],
140
             ],
149
             }
149
             }
150
         },
150
         },
151
         "node_modules/@esbuild/freebsd-x64": {
151
         "node_modules/@esbuild/freebsd-x64": {
152
-            "version": "0.25.0",
153
-            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz",
154
-            "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==",
152
+            "version": "0.25.1",
153
+            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz",
154
+            "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==",
155
             "cpu": [
155
             "cpu": [
156
                 "x64"
156
                 "x64"
157
             ],
157
             ],
166
             }
166
             }
167
         },
167
         },
168
         "node_modules/@esbuild/linux-arm": {
168
         "node_modules/@esbuild/linux-arm": {
169
-            "version": "0.25.0",
170
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz",
171
-            "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==",
169
+            "version": "0.25.1",
170
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz",
171
+            "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==",
172
             "cpu": [
172
             "cpu": [
173
                 "arm"
173
                 "arm"
174
             ],
174
             ],
183
             }
183
             }
184
         },
184
         },
185
         "node_modules/@esbuild/linux-arm64": {
185
         "node_modules/@esbuild/linux-arm64": {
186
-            "version": "0.25.0",
187
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz",
188
-            "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==",
186
+            "version": "0.25.1",
187
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz",
188
+            "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==",
189
             "cpu": [
189
             "cpu": [
190
                 "arm64"
190
                 "arm64"
191
             ],
191
             ],
200
             }
200
             }
201
         },
201
         },
202
         "node_modules/@esbuild/linux-ia32": {
202
         "node_modules/@esbuild/linux-ia32": {
203
-            "version": "0.25.0",
204
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz",
205
-            "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==",
203
+            "version": "0.25.1",
204
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz",
205
+            "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==",
206
             "cpu": [
206
             "cpu": [
207
                 "ia32"
207
                 "ia32"
208
             ],
208
             ],
217
             }
217
             }
218
         },
218
         },
219
         "node_modules/@esbuild/linux-loong64": {
219
         "node_modules/@esbuild/linux-loong64": {
220
-            "version": "0.25.0",
221
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz",
222
-            "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==",
220
+            "version": "0.25.1",
221
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz",
222
+            "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==",
223
             "cpu": [
223
             "cpu": [
224
                 "loong64"
224
                 "loong64"
225
             ],
225
             ],
234
             }
234
             }
235
         },
235
         },
236
         "node_modules/@esbuild/linux-mips64el": {
236
         "node_modules/@esbuild/linux-mips64el": {
237
-            "version": "0.25.0",
238
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz",
239
-            "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==",
237
+            "version": "0.25.1",
238
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz",
239
+            "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==",
240
             "cpu": [
240
             "cpu": [
241
                 "mips64el"
241
                 "mips64el"
242
             ],
242
             ],
251
             }
251
             }
252
         },
252
         },
253
         "node_modules/@esbuild/linux-ppc64": {
253
         "node_modules/@esbuild/linux-ppc64": {
254
-            "version": "0.25.0",
255
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz",
256
-            "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==",
254
+            "version": "0.25.1",
255
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz",
256
+            "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==",
257
             "cpu": [
257
             "cpu": [
258
                 "ppc64"
258
                 "ppc64"
259
             ],
259
             ],
268
             }
268
             }
269
         },
269
         },
270
         "node_modules/@esbuild/linux-riscv64": {
270
         "node_modules/@esbuild/linux-riscv64": {
271
-            "version": "0.25.0",
272
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz",
273
-            "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==",
271
+            "version": "0.25.1",
272
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz",
273
+            "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==",
274
             "cpu": [
274
             "cpu": [
275
                 "riscv64"
275
                 "riscv64"
276
             ],
276
             ],
285
             }
285
             }
286
         },
286
         },
287
         "node_modules/@esbuild/linux-s390x": {
287
         "node_modules/@esbuild/linux-s390x": {
288
-            "version": "0.25.0",
289
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz",
290
-            "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==",
288
+            "version": "0.25.1",
289
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz",
290
+            "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==",
291
             "cpu": [
291
             "cpu": [
292
                 "s390x"
292
                 "s390x"
293
             ],
293
             ],
302
             }
302
             }
303
         },
303
         },
304
         "node_modules/@esbuild/linux-x64": {
304
         "node_modules/@esbuild/linux-x64": {
305
-            "version": "0.25.0",
306
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz",
307
-            "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==",
305
+            "version": "0.25.1",
306
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz",
307
+            "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==",
308
             "cpu": [
308
             "cpu": [
309
                 "x64"
309
                 "x64"
310
             ],
310
             ],
319
             }
319
             }
320
         },
320
         },
321
         "node_modules/@esbuild/netbsd-arm64": {
321
         "node_modules/@esbuild/netbsd-arm64": {
322
-            "version": "0.25.0",
323
-            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz",
324
-            "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==",
322
+            "version": "0.25.1",
323
+            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz",
324
+            "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==",
325
             "cpu": [
325
             "cpu": [
326
                 "arm64"
326
                 "arm64"
327
             ],
327
             ],
336
             }
336
             }
337
         },
337
         },
338
         "node_modules/@esbuild/netbsd-x64": {
338
         "node_modules/@esbuild/netbsd-x64": {
339
-            "version": "0.25.0",
340
-            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz",
341
-            "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==",
339
+            "version": "0.25.1",
340
+            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz",
341
+            "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==",
342
             "cpu": [
342
             "cpu": [
343
                 "x64"
343
                 "x64"
344
             ],
344
             ],
353
             }
353
             }
354
         },
354
         },
355
         "node_modules/@esbuild/openbsd-arm64": {
355
         "node_modules/@esbuild/openbsd-arm64": {
356
-            "version": "0.25.0",
357
-            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz",
358
-            "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==",
356
+            "version": "0.25.1",
357
+            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz",
358
+            "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==",
359
             "cpu": [
359
             "cpu": [
360
                 "arm64"
360
                 "arm64"
361
             ],
361
             ],
370
             }
370
             }
371
         },
371
         },
372
         "node_modules/@esbuild/openbsd-x64": {
372
         "node_modules/@esbuild/openbsd-x64": {
373
-            "version": "0.25.0",
374
-            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz",
375
-            "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==",
373
+            "version": "0.25.1",
374
+            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz",
375
+            "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==",
376
             "cpu": [
376
             "cpu": [
377
                 "x64"
377
                 "x64"
378
             ],
378
             ],
387
             }
387
             }
388
         },
388
         },
389
         "node_modules/@esbuild/sunos-x64": {
389
         "node_modules/@esbuild/sunos-x64": {
390
-            "version": "0.25.0",
391
-            "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz",
392
-            "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==",
390
+            "version": "0.25.1",
391
+            "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz",
392
+            "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==",
393
             "cpu": [
393
             "cpu": [
394
                 "x64"
394
                 "x64"
395
             ],
395
             ],
404
             }
404
             }
405
         },
405
         },
406
         "node_modules/@esbuild/win32-arm64": {
406
         "node_modules/@esbuild/win32-arm64": {
407
-            "version": "0.25.0",
408
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz",
409
-            "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==",
407
+            "version": "0.25.1",
408
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz",
409
+            "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==",
410
             "cpu": [
410
             "cpu": [
411
                 "arm64"
411
                 "arm64"
412
             ],
412
             ],
421
             }
421
             }
422
         },
422
         },
423
         "node_modules/@esbuild/win32-ia32": {
423
         "node_modules/@esbuild/win32-ia32": {
424
-            "version": "0.25.0",
425
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz",
426
-            "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==",
424
+            "version": "0.25.1",
425
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz",
426
+            "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==",
427
             "cpu": [
427
             "cpu": [
428
                 "ia32"
428
                 "ia32"
429
             ],
429
             ],
438
             }
438
             }
439
         },
439
         },
440
         "node_modules/@esbuild/win32-x64": {
440
         "node_modules/@esbuild/win32-x64": {
441
-            "version": "0.25.0",
442
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz",
443
-            "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==",
441
+            "version": "0.25.1",
442
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz",
443
+            "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==",
444
             "cpu": [
444
             "cpu": [
445
                 "x64"
445
                 "x64"
446
             ],
446
             ],
575
             }
575
             }
576
         },
576
         },
577
         "node_modules/@rollup/rollup-android-arm-eabi": {
577
         "node_modules/@rollup/rollup-android-arm-eabi": {
578
-            "version": "4.34.9",
579
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.9.tgz",
580
-            "integrity": "sha512-qZdlImWXur0CFakn2BJ2znJOdqYZKiedEPEVNTBrpfPjc/YuTGcaYZcdmNFTkUj3DU0ZM/AElcM8Ybww3xVLzA==",
578
+            "version": "4.35.0",
579
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.35.0.tgz",
580
+            "integrity": "sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==",
581
             "cpu": [
581
             "cpu": [
582
                 "arm"
582
                 "arm"
583
             ],
583
             ],
589
             ]
589
             ]
590
         },
590
         },
591
         "node_modules/@rollup/rollup-android-arm64": {
591
         "node_modules/@rollup/rollup-android-arm64": {
592
-            "version": "4.34.9",
593
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.9.tgz",
594
-            "integrity": "sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg==",
592
+            "version": "4.35.0",
593
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.35.0.tgz",
594
+            "integrity": "sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==",
595
             "cpu": [
595
             "cpu": [
596
                 "arm64"
596
                 "arm64"
597
             ],
597
             ],
603
             ]
603
             ]
604
         },
604
         },
605
         "node_modules/@rollup/rollup-darwin-arm64": {
605
         "node_modules/@rollup/rollup-darwin-arm64": {
606
-            "version": "4.34.9",
607
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz",
608
-            "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==",
606
+            "version": "4.35.0",
607
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.35.0.tgz",
608
+            "integrity": "sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==",
609
             "cpu": [
609
             "cpu": [
610
                 "arm64"
610
                 "arm64"
611
             ],
611
             ],
617
             ]
617
             ]
618
         },
618
         },
619
         "node_modules/@rollup/rollup-darwin-x64": {
619
         "node_modules/@rollup/rollup-darwin-x64": {
620
-            "version": "4.34.9",
621
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz",
622
-            "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==",
620
+            "version": "4.35.0",
621
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.35.0.tgz",
622
+            "integrity": "sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==",
623
             "cpu": [
623
             "cpu": [
624
                 "x64"
624
                 "x64"
625
             ],
625
             ],
631
             ]
631
             ]
632
         },
632
         },
633
         "node_modules/@rollup/rollup-freebsd-arm64": {
633
         "node_modules/@rollup/rollup-freebsd-arm64": {
634
-            "version": "4.34.9",
635
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.9.tgz",
636
-            "integrity": "sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw==",
634
+            "version": "4.35.0",
635
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.35.0.tgz",
636
+            "integrity": "sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==",
637
             "cpu": [
637
             "cpu": [
638
                 "arm64"
638
                 "arm64"
639
             ],
639
             ],
645
             ]
645
             ]
646
         },
646
         },
647
         "node_modules/@rollup/rollup-freebsd-x64": {
647
         "node_modules/@rollup/rollup-freebsd-x64": {
648
-            "version": "4.34.9",
649
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.9.tgz",
650
-            "integrity": "sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g==",
648
+            "version": "4.35.0",
649
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.35.0.tgz",
650
+            "integrity": "sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==",
651
             "cpu": [
651
             "cpu": [
652
                 "x64"
652
                 "x64"
653
             ],
653
             ],
659
             ]
659
             ]
660
         },
660
         },
661
         "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
661
         "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
662
-            "version": "4.34.9",
663
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.9.tgz",
664
-            "integrity": "sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg==",
662
+            "version": "4.35.0",
663
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.35.0.tgz",
664
+            "integrity": "sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==",
665
             "cpu": [
665
             "cpu": [
666
                 "arm"
666
                 "arm"
667
             ],
667
             ],
673
             ]
673
             ]
674
         },
674
         },
675
         "node_modules/@rollup/rollup-linux-arm-musleabihf": {
675
         "node_modules/@rollup/rollup-linux-arm-musleabihf": {
676
-            "version": "4.34.9",
677
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.9.tgz",
678
-            "integrity": "sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA==",
676
+            "version": "4.35.0",
677
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.35.0.tgz",
678
+            "integrity": "sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==",
679
             "cpu": [
679
             "cpu": [
680
                 "arm"
680
                 "arm"
681
             ],
681
             ],
687
             ]
687
             ]
688
         },
688
         },
689
         "node_modules/@rollup/rollup-linux-arm64-gnu": {
689
         "node_modules/@rollup/rollup-linux-arm64-gnu": {
690
-            "version": "4.34.9",
691
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz",
692
-            "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==",
690
+            "version": "4.35.0",
691
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.35.0.tgz",
692
+            "integrity": "sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==",
693
             "cpu": [
693
             "cpu": [
694
                 "arm64"
694
                 "arm64"
695
             ],
695
             ],
701
             ]
701
             ]
702
         },
702
         },
703
         "node_modules/@rollup/rollup-linux-arm64-musl": {
703
         "node_modules/@rollup/rollup-linux-arm64-musl": {
704
-            "version": "4.34.9",
705
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz",
706
-            "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==",
704
+            "version": "4.35.0",
705
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.35.0.tgz",
706
+            "integrity": "sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==",
707
             "cpu": [
707
             "cpu": [
708
                 "arm64"
708
                 "arm64"
709
             ],
709
             ],
715
             ]
715
             ]
716
         },
716
         },
717
         "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
717
         "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
718
-            "version": "4.34.9",
719
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.9.tgz",
720
-            "integrity": "sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg==",
718
+            "version": "4.35.0",
719
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.35.0.tgz",
720
+            "integrity": "sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==",
721
             "cpu": [
721
             "cpu": [
722
                 "loong64"
722
                 "loong64"
723
             ],
723
             ],
729
             ]
729
             ]
730
         },
730
         },
731
         "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
731
         "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
732
-            "version": "4.34.9",
733
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.9.tgz",
734
-            "integrity": "sha512-PHcNOAEhkoMSQtMf+rJofwisZqaU8iQ8EaSps58f5HYll9EAY5BSErCZ8qBDMVbq88h4UxaNPlbrKqfWP8RfJA==",
732
+            "version": "4.35.0",
733
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.35.0.tgz",
734
+            "integrity": "sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==",
735
             "cpu": [
735
             "cpu": [
736
                 "ppc64"
736
                 "ppc64"
737
             ],
737
             ],
743
             ]
743
             ]
744
         },
744
         },
745
         "node_modules/@rollup/rollup-linux-riscv64-gnu": {
745
         "node_modules/@rollup/rollup-linux-riscv64-gnu": {
746
-            "version": "4.34.9",
747
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.9.tgz",
748
-            "integrity": "sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg==",
746
+            "version": "4.35.0",
747
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.35.0.tgz",
748
+            "integrity": "sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==",
749
             "cpu": [
749
             "cpu": [
750
                 "riscv64"
750
                 "riscv64"
751
             ],
751
             ],
757
             ]
757
             ]
758
         },
758
         },
759
         "node_modules/@rollup/rollup-linux-s390x-gnu": {
759
         "node_modules/@rollup/rollup-linux-s390x-gnu": {
760
-            "version": "4.34.9",
761
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.9.tgz",
762
-            "integrity": "sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ==",
760
+            "version": "4.35.0",
761
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.35.0.tgz",
762
+            "integrity": "sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==",
763
             "cpu": [
763
             "cpu": [
764
                 "s390x"
764
                 "s390x"
765
             ],
765
             ],
771
             ]
771
             ]
772
         },
772
         },
773
         "node_modules/@rollup/rollup-linux-x64-gnu": {
773
         "node_modules/@rollup/rollup-linux-x64-gnu": {
774
-            "version": "4.34.9",
775
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz",
776
-            "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==",
774
+            "version": "4.35.0",
775
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.35.0.tgz",
776
+            "integrity": "sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==",
777
             "cpu": [
777
             "cpu": [
778
                 "x64"
778
                 "x64"
779
             ],
779
             ],
785
             ]
785
             ]
786
         },
786
         },
787
         "node_modules/@rollup/rollup-linux-x64-musl": {
787
         "node_modules/@rollup/rollup-linux-x64-musl": {
788
-            "version": "4.34.9",
789
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz",
790
-            "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==",
788
+            "version": "4.35.0",
789
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.35.0.tgz",
790
+            "integrity": "sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==",
791
             "cpu": [
791
             "cpu": [
792
                 "x64"
792
                 "x64"
793
             ],
793
             ],
799
             ]
799
             ]
800
         },
800
         },
801
         "node_modules/@rollup/rollup-win32-arm64-msvc": {
801
         "node_modules/@rollup/rollup-win32-arm64-msvc": {
802
-            "version": "4.34.9",
803
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz",
804
-            "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==",
802
+            "version": "4.35.0",
803
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.35.0.tgz",
804
+            "integrity": "sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==",
805
             "cpu": [
805
             "cpu": [
806
                 "arm64"
806
                 "arm64"
807
             ],
807
             ],
813
             ]
813
             ]
814
         },
814
         },
815
         "node_modules/@rollup/rollup-win32-ia32-msvc": {
815
         "node_modules/@rollup/rollup-win32-ia32-msvc": {
816
-            "version": "4.34.9",
817
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.9.tgz",
818
-            "integrity": "sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w==",
816
+            "version": "4.35.0",
817
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.35.0.tgz",
818
+            "integrity": "sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==",
819
             "cpu": [
819
             "cpu": [
820
                 "ia32"
820
                 "ia32"
821
             ],
821
             ],
827
             ]
827
             ]
828
         },
828
         },
829
         "node_modules/@rollup/rollup-win32-x64-msvc": {
829
         "node_modules/@rollup/rollup-win32-x64-msvc": {
830
-            "version": "4.34.9",
831
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz",
832
-            "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==",
830
+            "version": "4.35.0",
831
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.35.0.tgz",
832
+            "integrity": "sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==",
833
             "cpu": [
833
             "cpu": [
834
                 "x64"
834
                 "x64"
835
             ],
835
             ],
938
             "license": "MIT"
938
             "license": "MIT"
939
         },
939
         },
940
         "node_modules/autoprefixer": {
940
         "node_modules/autoprefixer": {
941
-            "version": "10.4.20",
942
-            "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz",
943
-            "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==",
941
+            "version": "10.4.21",
942
+            "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz",
943
+            "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==",
944
             "dev": true,
944
             "dev": true,
945
             "funding": [
945
             "funding": [
946
                 {
946
                 {
958
             ],
958
             ],
959
             "license": "MIT",
959
             "license": "MIT",
960
             "dependencies": {
960
             "dependencies": {
961
-                "browserslist": "^4.23.3",
962
-                "caniuse-lite": "^1.0.30001646",
961
+                "browserslist": "^4.24.4",
962
+                "caniuse-lite": "^1.0.30001702",
963
                 "fraction.js": "^4.3.7",
963
                 "fraction.js": "^4.3.7",
964
                 "normalize-range": "^0.1.2",
964
                 "normalize-range": "^0.1.2",
965
-                "picocolors": "^1.0.1",
965
+                "picocolors": "^1.1.1",
966
                 "postcss-value-parser": "^4.2.0"
966
                 "postcss-value-parser": "^4.2.0"
967
             },
967
             },
968
             "bin": {
968
             "bin": {
976
             }
976
             }
977
         },
977
         },
978
         "node_modules/axios": {
978
         "node_modules/axios": {
979
-            "version": "1.8.1",
980
-            "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.1.tgz",
981
-            "integrity": "sha512-NN+fvwH/kV01dYUQ3PTOZns4LWtWhOFCAhQ/pHb88WQ1hNe5V/dvFwc4VJcDL11LT9xSX0QtsR8sWUuyOuOq7g==",
979
+            "version": "1.8.2",
980
+            "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.2.tgz",
981
+            "integrity": "sha512-ls4GYBm5aig9vWx8AWDSGLpnpDQRtWAfrjU+EuytuODrFBkqesN2RkOQCBzrA1RQNHw1SmRMSDDDSwzNAYQ6Rg==",
982
             "dev": true,
982
             "dev": true,
983
             "license": "MIT",
983
             "license": "MIT",
984
             "dependencies": {
984
             "dependencies": {
1088
             }
1088
             }
1089
         },
1089
         },
1090
         "node_modules/caniuse-lite": {
1090
         "node_modules/caniuse-lite": {
1091
-            "version": "1.0.30001702",
1092
-            "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001702.tgz",
1093
-            "integrity": "sha512-LoPe/D7zioC0REI5W73PeR1e1MLCipRGq/VkovJnd6Df+QVqT+vT33OXCp8QUd7kA7RZrHWxb1B36OQKI/0gOA==",
1091
+            "version": "1.0.30001703",
1092
+            "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001703.tgz",
1093
+            "integrity": "sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ==",
1094
             "dev": true,
1094
             "dev": true,
1095
             "funding": [
1095
             "funding": [
1096
                 {
1096
                 {
1264
             "license": "MIT"
1264
             "license": "MIT"
1265
         },
1265
         },
1266
         "node_modules/electron-to-chromium": {
1266
         "node_modules/electron-to-chromium": {
1267
-            "version": "1.5.112",
1268
-            "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.112.tgz",
1269
-            "integrity": "sha512-oen93kVyqSb3l+ziUgzIOlWt/oOuy4zRmpwestMn4rhFWAoFJeFuCVte9F2fASjeZZo7l/Cif9TiyrdW4CwEMA==",
1267
+            "version": "1.5.114",
1268
+            "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.114.tgz",
1269
+            "integrity": "sha512-DFptFef3iktoKlFQK/afbo274/XNWD00Am0xa7M8FZUepHlHT8PEuiNBoRfFHbH1okqN58AlhbJ4QTkcnXorjA==",
1270
             "dev": true,
1270
             "dev": true,
1271
             "license": "ISC"
1271
             "license": "ISC"
1272
         },
1272
         },
1327
             }
1327
             }
1328
         },
1328
         },
1329
         "node_modules/esbuild": {
1329
         "node_modules/esbuild": {
1330
-            "version": "0.25.0",
1331
-            "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz",
1332
-            "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==",
1330
+            "version": "0.25.1",
1331
+            "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz",
1332
+            "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==",
1333
             "dev": true,
1333
             "dev": true,
1334
             "hasInstallScript": true,
1334
             "hasInstallScript": true,
1335
             "license": "MIT",
1335
             "license": "MIT",
1340
                 "node": ">=18"
1340
                 "node": ">=18"
1341
             },
1341
             },
1342
             "optionalDependencies": {
1342
             "optionalDependencies": {
1343
-                "@esbuild/aix-ppc64": "0.25.0",
1344
-                "@esbuild/android-arm": "0.25.0",
1345
-                "@esbuild/android-arm64": "0.25.0",
1346
-                "@esbuild/android-x64": "0.25.0",
1347
-                "@esbuild/darwin-arm64": "0.25.0",
1348
-                "@esbuild/darwin-x64": "0.25.0",
1349
-                "@esbuild/freebsd-arm64": "0.25.0",
1350
-                "@esbuild/freebsd-x64": "0.25.0",
1351
-                "@esbuild/linux-arm": "0.25.0",
1352
-                "@esbuild/linux-arm64": "0.25.0",
1353
-                "@esbuild/linux-ia32": "0.25.0",
1354
-                "@esbuild/linux-loong64": "0.25.0",
1355
-                "@esbuild/linux-mips64el": "0.25.0",
1356
-                "@esbuild/linux-ppc64": "0.25.0",
1357
-                "@esbuild/linux-riscv64": "0.25.0",
1358
-                "@esbuild/linux-s390x": "0.25.0",
1359
-                "@esbuild/linux-x64": "0.25.0",
1360
-                "@esbuild/netbsd-arm64": "0.25.0",
1361
-                "@esbuild/netbsd-x64": "0.25.0",
1362
-                "@esbuild/openbsd-arm64": "0.25.0",
1363
-                "@esbuild/openbsd-x64": "0.25.0",
1364
-                "@esbuild/sunos-x64": "0.25.0",
1365
-                "@esbuild/win32-arm64": "0.25.0",
1366
-                "@esbuild/win32-ia32": "0.25.0",
1367
-                "@esbuild/win32-x64": "0.25.0"
1343
+                "@esbuild/aix-ppc64": "0.25.1",
1344
+                "@esbuild/android-arm": "0.25.1",
1345
+                "@esbuild/android-arm64": "0.25.1",
1346
+                "@esbuild/android-x64": "0.25.1",
1347
+                "@esbuild/darwin-arm64": "0.25.1",
1348
+                "@esbuild/darwin-x64": "0.25.1",
1349
+                "@esbuild/freebsd-arm64": "0.25.1",
1350
+                "@esbuild/freebsd-x64": "0.25.1",
1351
+                "@esbuild/linux-arm": "0.25.1",
1352
+                "@esbuild/linux-arm64": "0.25.1",
1353
+                "@esbuild/linux-ia32": "0.25.1",
1354
+                "@esbuild/linux-loong64": "0.25.1",
1355
+                "@esbuild/linux-mips64el": "0.25.1",
1356
+                "@esbuild/linux-ppc64": "0.25.1",
1357
+                "@esbuild/linux-riscv64": "0.25.1",
1358
+                "@esbuild/linux-s390x": "0.25.1",
1359
+                "@esbuild/linux-x64": "0.25.1",
1360
+                "@esbuild/netbsd-arm64": "0.25.1",
1361
+                "@esbuild/netbsd-x64": "0.25.1",
1362
+                "@esbuild/openbsd-arm64": "0.25.1",
1363
+                "@esbuild/openbsd-x64": "0.25.1",
1364
+                "@esbuild/sunos-x64": "0.25.1",
1365
+                "@esbuild/win32-arm64": "0.25.1",
1366
+                "@esbuild/win32-ia32": "0.25.1",
1367
+                "@esbuild/win32-x64": "0.25.1"
1368
             }
1368
             }
1369
         },
1369
         },
1370
         "node_modules/escalade": {
1370
         "node_modules/escalade": {
1930
             }
1930
             }
1931
         },
1931
         },
1932
         "node_modules/nanoid": {
1932
         "node_modules/nanoid": {
1933
-            "version": "3.3.8",
1934
-            "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
1935
-            "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
1933
+            "version": "3.3.9",
1934
+            "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz",
1935
+            "integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==",
1936
             "dev": true,
1936
             "dev": true,
1937
             "funding": [
1937
             "funding": [
1938
                 {
1938
                 {
2412
             }
2412
             }
2413
         },
2413
         },
2414
         "node_modules/rollup": {
2414
         "node_modules/rollup": {
2415
-            "version": "4.34.9",
2416
-            "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.9.tgz",
2417
-            "integrity": "sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==",
2415
+            "version": "4.35.0",
2416
+            "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.35.0.tgz",
2417
+            "integrity": "sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==",
2418
             "dev": true,
2418
             "dev": true,
2419
             "license": "MIT",
2419
             "license": "MIT",
2420
             "dependencies": {
2420
             "dependencies": {
2428
                 "npm": ">=8.0.0"
2428
                 "npm": ">=8.0.0"
2429
             },
2429
             },
2430
             "optionalDependencies": {
2430
             "optionalDependencies": {
2431
-                "@rollup/rollup-android-arm-eabi": "4.34.9",
2432
-                "@rollup/rollup-android-arm64": "4.34.9",
2433
-                "@rollup/rollup-darwin-arm64": "4.34.9",
2434
-                "@rollup/rollup-darwin-x64": "4.34.9",
2435
-                "@rollup/rollup-freebsd-arm64": "4.34.9",
2436
-                "@rollup/rollup-freebsd-x64": "4.34.9",
2437
-                "@rollup/rollup-linux-arm-gnueabihf": "4.34.9",
2438
-                "@rollup/rollup-linux-arm-musleabihf": "4.34.9",
2439
-                "@rollup/rollup-linux-arm64-gnu": "4.34.9",
2440
-                "@rollup/rollup-linux-arm64-musl": "4.34.9",
2441
-                "@rollup/rollup-linux-loongarch64-gnu": "4.34.9",
2442
-                "@rollup/rollup-linux-powerpc64le-gnu": "4.34.9",
2443
-                "@rollup/rollup-linux-riscv64-gnu": "4.34.9",
2444
-                "@rollup/rollup-linux-s390x-gnu": "4.34.9",
2445
-                "@rollup/rollup-linux-x64-gnu": "4.34.9",
2446
-                "@rollup/rollup-linux-x64-musl": "4.34.9",
2447
-                "@rollup/rollup-win32-arm64-msvc": "4.34.9",
2448
-                "@rollup/rollup-win32-ia32-msvc": "4.34.9",
2449
-                "@rollup/rollup-win32-x64-msvc": "4.34.9",
2431
+                "@rollup/rollup-android-arm-eabi": "4.35.0",
2432
+                "@rollup/rollup-android-arm64": "4.35.0",
2433
+                "@rollup/rollup-darwin-arm64": "4.35.0",
2434
+                "@rollup/rollup-darwin-x64": "4.35.0",
2435
+                "@rollup/rollup-freebsd-arm64": "4.35.0",
2436
+                "@rollup/rollup-freebsd-x64": "4.35.0",
2437
+                "@rollup/rollup-linux-arm-gnueabihf": "4.35.0",
2438
+                "@rollup/rollup-linux-arm-musleabihf": "4.35.0",
2439
+                "@rollup/rollup-linux-arm64-gnu": "4.35.0",
2440
+                "@rollup/rollup-linux-arm64-musl": "4.35.0",
2441
+                "@rollup/rollup-linux-loongarch64-gnu": "4.35.0",
2442
+                "@rollup/rollup-linux-powerpc64le-gnu": "4.35.0",
2443
+                "@rollup/rollup-linux-riscv64-gnu": "4.35.0",
2444
+                "@rollup/rollup-linux-s390x-gnu": "4.35.0",
2445
+                "@rollup/rollup-linux-x64-gnu": "4.35.0",
2446
+                "@rollup/rollup-linux-x64-musl": "4.35.0",
2447
+                "@rollup/rollup-win32-arm64-msvc": "4.35.0",
2448
+                "@rollup/rollup-win32-ia32-msvc": "4.35.0",
2449
+                "@rollup/rollup-win32-x64-msvc": "4.35.0",
2450
                 "fsevents": "~2.3.2"
2450
                 "fsevents": "~2.3.2"
2451
             }
2451
             }
2452
         },
2452
         },
2794
             "license": "MIT"
2794
             "license": "MIT"
2795
         },
2795
         },
2796
         "node_modules/vite": {
2796
         "node_modules/vite": {
2797
-            "version": "6.2.0",
2798
-            "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.0.tgz",
2799
-            "integrity": "sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==",
2797
+            "version": "6.2.1",
2798
+            "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.1.tgz",
2799
+            "integrity": "sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q==",
2800
             "dev": true,
2800
             "dev": true,
2801
             "license": "MIT",
2801
             "license": "MIT",
2802
             "dependencies": {
2802
             "dependencies": {

+ 1
- 1
resources/views/components/company/document-template/footer.blade.php 查看文件

1
-<footer {{ $attributes->class(['doc-template-footer text-xs text-gray-600 dark:text-gray-300 min-h-60']) }}>
1
+<footer {{ $attributes->class(['doc-template-footer min-h-60']) }}>
2
     {{ $slot }}
2
     {{ $slot }}
3
 </footer>
3
 </footer>

+ 1
- 1
resources/views/components/company/document-template/header.blade.php 查看文件

1
-<header {{ $attributes->class(['doc-template-header flex py-2 relative']) }}>
1
+<header {{ $attributes->class(['doc-template-header flex p-6 relative']) }}>
2
     {{ $slot }}
2
     {{ $slot }}
3
 </header>
3
 </header>

+ 1
- 1
resources/views/components/company/document-template/line-items.blade.php 查看文件

1
-<div {{ $attributes->class(['doc-template-line-items py-6']) }}>
1
+<div {{ $attributes->class(['doc-template-line-items py-4']) }}>
2
     {{ $slot }}
2
     {{ $slot }}
3
 </div>
3
 </div>

+ 14
- 12
resources/views/components/icons/document-header-decoration.blade.php 查看文件

4
 ])
4
 ])
5
 
5
 
6
 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 72" aria-hidden="true" fill="none" {{ $attributes }}>
6
 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 72" aria-hidden="true" fill="none" {{ $attributes }}>
7
-   <g stroke="{{ $color }}" stroke-width="2">
8
-       <path d="M20 57.038v-42.076c.33.025.664.038 1 .038 7.18 0 13-5.82 13-13 0-.336-.013-.67-.038-1h172.076c-.025.33-.038.664-.038 1 0 7.18 5.82 13 13 13 .336 0 .67-.013 1-.038v42.076c-.33-.025-.664-.038-1-.038-7.18 0-13 5.82-13 13 0 .336.013.67.038 1h-172.076c.025-.33.038-.664.038-1 0-7.18-5.82-13-13-13-.336 0-.67.013-1 .038z" />
9
-       <path d="M26 51.503v-31.007c.33.024.664.037 1 .037 7.18 0 13-5.626 13-12.567 0-.325.013-.648-.038-.967h160.076c-.025.319-.038.641-.038.967 0 6.94 5.82 12.567 13 12.567.336 0 .67-.012 1-.037v31.007c-.33-.024-.664-.037-1-.037-7.18 0-13 5.626-13 12.567 0 .325.013.648.038.967h-160.076c.025-.319.038-.641.038-.967 0-6.94-5.82-12.567-13-12.567-.336 0-.67.012-1 .037z" />
10
-   </g>
11
-   <text
12
-       x="50%"
13
-       y="50%"
14
-       text-anchor="middle"
15
-       dominant-baseline="middle"
16
-       class="text-3xl font-light tracking-tight"
17
-       fill="{{ $color }}"
18
-   >{{ $text }}</text>
7
+    <g stroke="{{ $color }}" stroke-width="2">
8
+        <path
9
+            d="M20 57.038v-42.076c.33.025.664.038 1 .038 7.18 0 13-5.82 13-13 0-.336-.013-.67-.038-1h172.076c-.025.33-.038.664-.038 1 0 7.18 5.82 13 13 13 .336 0 .67-.013 1-.038v42.076c-.33-.025-.664-.038-1-.038-7.18 0-13 5.82-13 13 0 .336.013.67.038 1h-172.076c.025-.33.038-.664.038-1 0-7.18-5.82-13-13-13-.336 0-.67.013-1 .038z"/>
10
+        <path
11
+            d="M26 51.503v-31.007c.33.024.664.037 1 .037 7.18 0 13-5.626 13-12.567 0-.325.013-.648-.038-.967h160.076c-.025.319-.038.641-.038.967 0 6.94 5.82 12.567 13 12.567.336 0 .67-.012 1-.037v31.007c-.33-.024-.664-.037-1-.037-7.18 0-13 5.626-13 12.567 0 .325.013.648.038.967h-160.076c.025-.319.038-.641.038-.967 0-6.94-5.82-12.567-13-12.567-.336 0-.67.012-1 .037z"/>
12
+    </g>
13
+    <text
14
+        x="50%"
15
+        y="50%"
16
+        text-anchor="middle"
17
+        dominant-baseline="middle"
18
+        class="text-3xl font-light"
19
+        fill="{{ $color }}"
20
+    >{{ $text }}</text>
19
 </svg>
21
 </svg>

+ 43
- 32
resources/views/filament/company/components/document-templates/classic.blade.php 查看文件

14
 <x-company.document-template.container class="classic-template-container" preview>
14
 <x-company.document-template.container class="classic-template-container" preview>
15
     <!-- Header Section -->
15
     <!-- Header Section -->
16
     <x-company.document-template.header class="default-template-header">
16
     <x-company.document-template.header class="default-template-header">
17
-        <div class="w-2/3 text-left ml-6">
17
+        <div class="w-2/3 text-left">
18
             <div class="text-xs">
18
             <div class="text-xs">
19
-                <h2 class="text-base font-semibold">{{ $document->company->name }}</h2>
19
+                <strong class="text-xs block">{{ $document->company->name }}</strong>
20
                 @if($formattedAddress = $document->company->getFormattedAddressHtml())
20
                 @if($formattedAddress = $document->company->getFormattedAddressHtml())
21
                     {!! $formattedAddress !!}
21
                     {!! $formattedAddress !!}
22
                 @endif
22
                 @endif
23
             </div>
23
             </div>
24
         </div>
24
         </div>
25
 
25
 
26
-        <div class="w-1/3 flex justify-end mr-6">
26
+        <div class="w-1/3 flex justify-end">
27
             @if($document->logo && $document->showLogo)
27
             @if($document->logo && $document->showLogo)
28
                 <x-company.document-template.logo :src="$document->logo"/>
28
                 <x-company.document-template.logo :src="$document->logo"/>
29
             @endif
29
             @endif
30
         </div>
30
         </div>
31
     </x-company.document-template.header>
31
     </x-company.document-template.header>
32
 
32
 
33
-    <x-company.document-template.metadata class="classic-template-metadata">
33
+    <x-company.document-template.metadata class="classic-template-metadata space-y-2">
34
         <div class="items-center flex">
34
         <div class="items-center flex">
35
             <hr class="grow-[2] py-0.5 border-solid border-y-2" style="border-color: {{ $document->accentColor }};">
35
             <hr class="grow-[2] py-0.5 border-solid border-y-2" style="border-color: {{ $document->accentColor }};">
36
             <x-icons.document-header-decoration
36
             <x-icons.document-header-decoration
40
             />
40
             />
41
             <hr class="grow-[2] py-0.5 border-solid border-y-2" style="border-color: {{ $document->accentColor }};">
41
             <hr class="grow-[2] py-0.5 border-solid border-y-2" style="border-color: {{ $document->accentColor }};">
42
         </div>
42
         </div>
43
-        <div class="mt-2 text-sm text-center text-gray-600 dark:text-gray-400">{{ $document->subheader }}</div>
43
+        @if ($document->subheader)
44
+            <p class="text-xs text-center text-gray-600 dark:text-gray-400">{{ $document->subheader }}</p>
45
+        @endif
44
 
46
 
45
         <div class="flex justify-between items-end">
47
         <div class="flex justify-between items-end">
46
             <!-- Billing Details -->
48
             <!-- Billing Details -->
47
             <div class="text-xs">
49
             <div class="text-xs">
48
-                <h3 class="text-gray-600 dark:text-gray-400 font-medium tracking-tight mb-1">BILL TO</h3>
49
-                <p class="text-base font-bold">{{ $document->client->name }}</p>
50
+                <h3 class="text-gray-600 dark:text-gray-400 font-medium mb-1">BILL TO</h3>
51
+                <p class="text-xs font-bold">{{ $document->client->name }}</p>
50
                 @if($formattedAddress = $document->client->getFormattedAddressHtml())
52
                 @if($formattedAddress = $document->client->getFormattedAddressHtml())
51
                     {!! $formattedAddress !!}
53
                     {!! $formattedAddress !!}
52
                 @endif
54
                 @endif
80
     <!-- Line Items -->
82
     <!-- Line Items -->
81
     <x-company.document-template.line-items class="classic-template-line-items px-6">
83
     <x-company.document-template.line-items class="classic-template-line-items px-6">
82
         <table class="w-full text-left table-fixed">
84
         <table class="w-full text-left table-fixed">
83
-            <thead class="text-sm leading-8">
85
+            <thead class="text-xs leading-8">
84
             <tr>
86
             <tr>
85
                 <th class="text-left">{{ $document->columnLabel->items }}</th>
87
                 <th class="text-left">{{ $document->columnLabel->items }}</th>
86
                 <th class="text-center">{{ $document->columnLabel->units }}</th>
88
                 <th class="text-center">{{ $document->columnLabel->units }}</th>
101
         </table>
103
         </table>
102
 
104
 
103
         <!-- Financial Details and Notes -->
105
         <!-- Financial Details and Notes -->
104
-        <div class="flex justify-between text-xs space-x-1">
106
+        <div class="flex justify-between text-xs space-x-1 pt-2">
105
             <!-- Notes Section -->
107
             <!-- Notes Section -->
106
-            <div class="w-1/2 border border-dashed border-gray-300 p-2 mt-4">
107
-                <h4 class="font-semibold mb-2">Notes</h4>
108
-                <p>{{ $document->footer }}</p>
108
+            <div class="w-[60%] py-2">
109
+                <p class="font-semibold">{{ $document->footer }}</p>
109
             </div>
110
             </div>
110
 
111
 
111
             <!-- Financial Summary -->
112
             <!-- Financial Summary -->
112
-            <div class="w-1/2 mt-2">
113
-                <table class="w-full table-fixed">
114
-                    <tbody class="text-xs leading-loose">
113
+            <div class="w-[40%]">
114
+                <table class="w-full table-fixed whitespace-nowrap">
115
+                    <tbody class="text-xs">
115
                     <tr>
116
                     <tr>
116
-                        <td class="text-right font-semibold">Subtotal:</td>
117
-                        <td class="text-right">{{ $document->subtotal }}</td>
118
-                    </tr>
119
-                    <tr class="text-success-800 dark:text-success-600">
120
-                        <td class="text-right">Discount (5%):</td>
121
-                        <td class="text-right">({{ $document->discount }})</td>
122
-                    </tr>
123
-                    <tr>
124
-                        <td class="text-right">Sales Tax (10%):</td>
125
-                        <td class="text-right">{{ $document->tax }}</td>
126
-                    </tr>
127
-                    <tr>
128
-                        <td class="text-right font-semibold">Total:</td>
129
-                        <td class="text-right">{{ $document->total }}</td>
117
+                        <td class="text-right font-semibold py-2">Subtotal:</td>
118
+                        <td class="text-right py-2">{{ $document->subtotal }}</td>
130
                     </tr>
119
                     </tr>
120
+                    @if($document->discount)
121
+                        <tr class="text-success-800 dark:text-success-600">
122
+                            <td class="text-right py-2">Discount:</td>
123
+                            <td class="text-right py-2">
124
+                                ({{ $document->discount }})
125
+                            </td>
126
+                        </tr>
127
+                    @endif
128
+                    @if($document->tax)
129
+                        <tr>
130
+                            <td class="text-right py-2">Tax:</td>
131
+                            <td class="text-right py-2">{{ $document->tax }}</td>
132
+                        </tr>
133
+                    @endif
131
                     <tr>
134
                     <tr>
132
-                        <td class="text-right font-semibold">Amount Due (USD):</td>
133
-                        <td class="text-right">{{ $document->amountDue }}</td>
135
+                        <td class="text-right font-semibold border-t py-2">Total:</td>
136
+                        <td class="text-right border-t py-2">{{ $document->total }}</td>
134
                     </tr>
137
                     </tr>
138
+                    @if($document->amountDue)
139
+                        <tr>
140
+                            <td class="text-right font-semibold border-t-4 border-double py-2">{{ $document->label->amountDue }}
141
+                                ({{ $document->currencyCode }}):
142
+                            </td>
143
+                            <td class="text-right border-t-4 border-double py-2">{{ $document->amountDue }}</td>
144
+                        </tr>
145
+                    @endif
135
                     </tbody>
146
                     </tbody>
136
                 </table>
147
                 </table>
137
             </div>
148
             </div>
139
     </x-company.document-template.line-items>
150
     </x-company.document-template.line-items>
140
 
151
 
141
     <!-- Footer -->
152
     <!-- Footer -->
142
-    <x-company.document-template.footer class="classic-template-footer">
153
+    <x-company.document-template.footer class="classic-template-footer text-xs">
143
         <h4 class="font-semibold px-6 mb-2">Terms & Conditions</h4>
154
         <h4 class="font-semibold px-6 mb-2">Terms & Conditions</h4>
144
         <p class="px-6 break-words line-clamp-4">{{ $document->terms }}</p>
155
         <p class="px-6 break-words line-clamp-4">{{ $document->terms }}</p>
145
     </x-company.document-template.footer>
156
     </x-company.document-template.footer>

+ 34
- 25
resources/views/filament/company/components/document-templates/default.blade.php 查看文件

13
 
13
 
14
 <x-company.document-template.container class="default-template-container" preview>
14
 <x-company.document-template.container class="default-template-container" preview>
15
 
15
 
16
-    <x-company.document-template.header class="default-template-header border-b-2 p-6 pb-4">
17
-        <div class="w-2/3">
16
+    <x-company.document-template.header class="default-template-header border-b">
17
+        <div class="w-1/3">
18
             @if($document->logo && $document->showLogo)
18
             @if($document->logo && $document->showLogo)
19
                 <x-company.document-template.logo :src="$document->logo"/>
19
                 <x-company.document-template.logo :src="$document->logo"/>
20
             @endif
20
             @endif
21
         </div>
21
         </div>
22
 
22
 
23
-        <div class="w-1/3 text-right">
24
-            <div class="text-xs">
25
-                <h2 class="font-semibold">{{ $document->company->name }}</h2>
26
-                @if($formattedAddress = $document->company->getFormattedAddressHtml())
27
-                    {!! $formattedAddress !!}
28
-                @endif
23
+        <div class="w-2/3 text-right">
24
+            <div class="space-y-4">
25
+                <div>
26
+                    <h1 class="text-3xl font-light uppercase">{{ $document->header }}</h1>
27
+                    @if ($document->subheader)
28
+                        <p class="text-xs text-gray-600 dark:text-gray-400">{{ $document->subheader }}</p>
29
+                    @endif
30
+                </div>
31
+                <div class="text-xs">
32
+                    <strong class="text-xs block">{{ $document->company->name }}</strong>
33
+                    @if($formattedAddress = $document->company->getFormattedAddressHtml())
34
+                        {!! $formattedAddress !!}
35
+                    @endif
36
+                </div>
29
             </div>
37
             </div>
30
         </div>
38
         </div>
31
     </x-company.document-template.header>
39
     </x-company.document-template.header>
32
 
40
 
33
-    <x-company.document-template.metadata class="default-template-metadata space-y-6">
34
-        <div>
35
-            <h1 class="text-3xl font-light uppercase">{{ $document->header }}</h1>
36
-            @if ($document->subheader)
37
-                <h2 class="text-sm text-gray-600 dark:text-gray-400">{{ $document->subheader }}</h2>
38
-            @endif
39
-        </div>
40
-
41
+    <x-company.document-template.metadata class="default-template-metadata space-y-2">
41
         <div class="flex justify-between items-end">
42
         <div class="flex justify-between items-end">
42
             <!-- Billing Details -->
43
             <!-- Billing Details -->
43
             <div class="text-xs">
44
             <div class="text-xs">
44
-                <h3 class="text-gray-600 dark:text-gray-400 font-medium tracking-tight mb-1">BILL TO</h3>
45
-                <p class="text-base font-bold">{{ $document->client->name }}</p>
45
+                <h3 class="text-gray-600 dark:text-gray-400 font-medium mb-1">BILL TO</h3>
46
+                <p class="text-xs font-bold">{{ $document->client->name }}</p>
46
                 @if($formattedAddress = $document->client->getFormattedAddressHtml())
47
                 @if($formattedAddress = $document->client->getFormattedAddressHtml())
47
                     {!! $formattedAddress !!}
48
                     {!! $formattedAddress !!}
48
                 @endif
49
                 @endif
76
     <!-- Line Items Table -->
77
     <!-- Line Items Table -->
77
     <x-company.document-template.line-items class="default-template-line-items">
78
     <x-company.document-template.line-items class="default-template-line-items">
78
         <table class="w-full text-left table-fixed">
79
         <table class="w-full text-left table-fixed">
79
-            <thead class="text-sm leading-8" style="background: {{ $document->accentColor }}">
80
+            <thead class="text-xs leading-8" style="background: {{ $document->accentColor }}">
80
             <tr class="text-white">
81
             <tr class="text-white">
81
                 <th class="text-left pl-6">{{ $document->columnLabel->items }}</th>
82
                 <th class="text-left pl-6">{{ $document->columnLabel->items }}</th>
82
                 <th class="text-center">{{ $document->columnLabel->units }}</th>
83
                 <th class="text-center">{{ $document->columnLabel->units }}</th>
117
             </tr>
118
             </tr>
118
             <tr>
119
             <tr>
119
                 <td class="pl-6" colspan="2"></td>
120
                 <td class="pl-6" colspan="2"></td>
120
-                <td class="text-right font-semibold border-t-4 border-double">{{ $document->label->amountDue }} ({{ $document->currencyCode }}):</td>
121
+                <td class="text-right font-semibold border-t-4 border-double">{{ $document->label->amountDue }}
122
+                    ({{ $document->currencyCode }}):
123
+                </td>
121
                 <td class="text-right border-t-4 border-double pr-6">{{ $document->amountDue }}</td>
124
                 <td class="text-right border-t-4 border-double pr-6">{{ $document->amountDue }}</td>
122
             </tr>
125
             </tr>
123
             </tfoot>
126
             </tfoot>
125
     </x-company.document-template.line-items>
128
     </x-company.document-template.line-items>
126
 
129
 
127
     <!-- Footer Notes -->
130
     <!-- Footer Notes -->
128
-    <x-company.document-template.footer class="default-template-footer">
129
-        <p class="px-6">{{ $document->footer }}</p>
130
-        <span class="border-t-2 my-2 border-gray-300 block w-full"></span>
131
-        <h4 class="font-semibold px-6 mb-2">Terms & Conditions</h4>
132
-        <p class="px-6 break-words line-clamp-4">{{ $document->terms }}</p>
131
+    <x-company.document-template.footer class="classic-template-footer min-h-48 flex flex-col text-xs p-6">
132
+        <div>
133
+            <h4 class="font-semibold mb-2">Terms & Conditions</h4>
134
+            <p class="break-words line-clamp-4">{{ $document->terms }}</p>
135
+        </div>
136
+
137
+        @if($document->footer)
138
+            <div class="mt-auto text-center py-4">
139
+                <p class="font-semibold">{{ $document->footer }}</p>
140
+            </div>
141
+        @endif
133
     </x-company.document-template.footer>
142
     </x-company.document-template.footer>
134
 </x-company.document-template.container>
143
 </x-company.document-template.container>

+ 9
- 9
resources/views/filament/company/components/document-templates/modern.blade.php 查看文件

34
     <!-- Company Details -->
34
     <!-- Company Details -->
35
     <x-company.document-template.metadata class="modern-template-metadata space-y-6">
35
     <x-company.document-template.metadata class="modern-template-metadata space-y-6">
36
         <div class="text-xs">
36
         <div class="text-xs">
37
-            <h2 class="text-base font-semibold">{{ $document->company->name }}</h2>
37
+            <h2 class="text-xs font-semibold">{{ $document->company->name }}</h2>
38
             @if($formattedAddress = $document->company->getFormattedAddressHtml())
38
             @if($formattedAddress = $document->company->getFormattedAddressHtml())
39
                 {!! $formattedAddress !!}
39
                 {!! $formattedAddress !!}
40
             @endif
40
             @endif
42
 
42
 
43
         <div class="flex justify-between items-end">
43
         <div class="flex justify-between items-end">
44
             <!-- Billing Details -->
44
             <!-- Billing Details -->
45
-            <div class="text-xs tracking-tight">
46
-                <h3 class="text-gray-600 dark:text-gray-400 font-medium tracking-tight mb-1">BILL TO</h3>
47
-                <p class="text-base font-bold"
45
+            <div class="text-xs">
46
+                <h3 class="text-gray-600 dark:text-gray-400 font-medium mb-1">BILL TO</h3>
47
+                <p class="text-xs font-bold"
48
                    style="color: {{ $document->accentColor }}">{{ $document->client->name }}</p>
48
                    style="color: {{ $document->accentColor }}">{{ $document->client->name }}</p>
49
 
49
 
50
                 @if($formattedAddress = $document->client->getFormattedAddressHtml())
50
                 @if($formattedAddress = $document->client->getFormattedAddressHtml())
52
                 @endif
52
                 @endif
53
             </div>
53
             </div>
54
 
54
 
55
-            <div class="text-xs tracking-tight">
55
+            <div class="text-xs">
56
                 <table class="min-w-full">
56
                 <table class="min-w-full">
57
                     <tbody>
57
                     <tbody>
58
                     <tr>
58
                     <tr>
82
     <!-- Line Items Table -->
82
     <!-- Line Items Table -->
83
     <x-company.document-template.line-items class="modern-template-line-items">
83
     <x-company.document-template.line-items class="modern-template-line-items">
84
         <table class="w-full text-left table-fixed">
84
         <table class="w-full text-left table-fixed">
85
-            <thead class="text-sm leading-8">
85
+            <thead class="text-xs leading-8">
86
             <tr class="text-gray-600 dark:text-gray-400">
86
             <tr class="text-gray-600 dark:text-gray-400">
87
                 <th class="text-left pl-6 w-[50%]">{{ $document->columnLabel->items }}</th>
87
                 <th class="text-left pl-6 w-[50%]">{{ $document->columnLabel->items }}</th>
88
                 <th class="text-center w-[10%]">{{ $document->columnLabel->units }}</th>
88
                 <th class="text-center w-[10%]">{{ $document->columnLabel->units }}</th>
90
                 <th class="text-right pr-6 w-[20%]">{{ $document->columnLabel->amount }}</th>
90
                 <th class="text-right pr-6 w-[20%]">{{ $document->columnLabel->amount }}</th>
91
             </tr>
91
             </tr>
92
             </thead>
92
             </thead>
93
-            <tbody class="text-xs tracking-tight border-y-2">
93
+            <tbody class="text-xs border-y-2">
94
             @foreach($document->lineItems as $index => $item)
94
             @foreach($document->lineItems as $index => $item)
95
                 <tr @class(['bg-gray-100 dark:bg-gray-800' => $index % 2 === 0])>
95
                 <tr @class(['bg-gray-100 dark:bg-gray-800' => $index % 2 === 0])>
96
                     <td class="text-left pl-6 font-semibold py-2">
96
                     <td class="text-left pl-6 font-semibold py-2">
105
                 </tr>
105
                 </tr>
106
             @endforeach
106
             @endforeach
107
             </tbody>
107
             </tbody>
108
-            <tfoot class="text-xs tracking-tight">
108
+            <tfoot class="text-xs">
109
             <tr>
109
             <tr>
110
                 <td class="pl-6 py-1" colspan="2"></td>
110
                 <td class="pl-6 py-1" colspan="2"></td>
111
                 <td class="text-right font-semibold py-1">Subtotal:</td>
111
                 <td class="text-right font-semibold py-1">Subtotal:</td>
146
     </x-company.document-template.line-items>
146
     </x-company.document-template.line-items>
147
 
147
 
148
     <!-- Footer Notes -->
148
     <!-- Footer Notes -->
149
-    <x-company.document-template.footer class="modern-template-footer tracking-tight">
149
+    <x-company.document-template.footer class="modern-template-footer text-xs">
150
         <h4 class="font-semibold px-6" style="color: {{ $document->accentColor }}">Terms & Conditions</h4>
150
         <h4 class="font-semibold px-6" style="color: {{ $document->accentColor }}">Terms & Conditions</h4>
151
         <span class="border-t-2 my-2 border-gray-300 block w-full"></span>
151
         <span class="border-t-2 my-2 border-gray-300 block w-full"></span>
152
         <div class="flex justify-between space-x-4 px-6">
152
         <div class="flex justify-between space-x-4 px-6">

+ 39
- 36
resources/views/filament/infolists/components/document-templates/classic.blade.php 查看文件

1
 <x-company.document-template.container class="classic-template-container">
1
 <x-company.document-template.container class="classic-template-container">
2
     <!-- Header Section -->
2
     <!-- Header Section -->
3
-    <x-company.document-template.header class="default-template-header">
4
-        <div class="w-2/3 text-left ml-6">
5
-            <div class="text-sm tracking-tight">
6
-                <h2 class="text-lg font-semibold">{{ $document->company->name }}</h2>
3
+    <x-company.document-template.header class="classic-template-header">
4
+        <div class="w-2/3 text-left">
5
+            <div class="text-sm">
6
+                <strong class="text-sm block">{{ $document->company->name }}</strong>
7
                 @if($formattedAddress = $document->company->getFormattedAddressHtml())
7
                 @if($formattedAddress = $document->company->getFormattedAddressHtml())
8
                     {!! $formattedAddress !!}
8
                     {!! $formattedAddress !!}
9
                 @endif
9
                 @endif
10
             </div>
10
             </div>
11
         </div>
11
         </div>
12
 
12
 
13
-        <div class="w-1/3 flex justify-end mr-6">
13
+        <div class="w-1/3 flex justify-end">
14
             @if($document->logo && $document->showLogo)
14
             @if($document->logo && $document->showLogo)
15
                 <x-company.document-template.logo :src="$document->logo"/>
15
                 <x-company.document-template.logo :src="$document->logo"/>
16
             @endif
16
             @endif
17
         </div>
17
         </div>
18
     </x-company.document-template.header>
18
     </x-company.document-template.header>
19
 
19
 
20
-    <x-company.document-template.metadata class="classic-template-metadata space-y-8">
20
+    <x-company.document-template.metadata class="classic-template-metadata space-y-4">
21
         <div class="items-center flex">
21
         <div class="items-center flex">
22
             <hr class="grow-[2] py-0.5 border-solid border-y-2" style="border-color: {{ $document->accentColor }};">
22
             <hr class="grow-[2] py-0.5 border-solid border-y-2" style="border-color: {{ $document->accentColor }};">
23
             <x-icons.document-header-decoration
23
             <x-icons.document-header-decoration
27
             />
27
             />
28
             <hr class="grow-[2] py-0.5 border-solid border-y-2" style="border-color: {{ $document->accentColor }};">
28
             <hr class="grow-[2] py-0.5 border-solid border-y-2" style="border-color: {{ $document->accentColor }};">
29
         </div>
29
         </div>
30
-        <div class="mt-2 text-base text-center text-gray-600 dark:text-gray-400">{{ $document->subheader }}</div>
30
+        @if ($document->subheader)
31
+            <p class="text-sm text-center text-gray-600 dark:text-gray-400">{{ $document->subheader }}</p>
32
+        @endif
31
 
33
 
32
         <div class="flex justify-between items-end">
34
         <div class="flex justify-between items-end">
33
             <!-- Billing Details -->
35
             <!-- Billing Details -->
34
-            <div class="text-sm tracking-tight">
35
-                <h3 class="text-gray-600 dark:text-gray-400 font-medium tracking-tight mb-1">BILL TO</h3>
36
-                <p class="text-base font-bold">{{ $document->client->name }}</p>
36
+            <div class="text-sm">
37
+                <h3 class="text-gray-600 dark:text-gray-400 font-medium mb-1">BILL TO</h3>
38
+                <p class="text-sm font-bold">{{ $document->client->name }}</p>
37
                 @if($formattedAddress = $document->client->getFormattedAddressHtml())
39
                 @if($formattedAddress = $document->client->getFormattedAddressHtml())
38
                     {!! $formattedAddress !!}
40
                     {!! $formattedAddress !!}
39
                 @endif
41
                 @endif
40
             </div>
42
             </div>
41
 
43
 
42
-            <div class="text-sm tracking-tight">
44
+            <div class="text-sm">
43
                 <table class="min-w-full">
45
                 <table class="min-w-full">
44
                     <tbody>
46
                     <tbody>
45
                     <tr>
47
                     <tr>
46
                         <td class="font-semibold text-right pr-2">{{ $document->label->number }}:</td>
48
                         <td class="font-semibold text-right pr-2">{{ $document->label->number }}:</td>
47
                         <td class="text-left pl-2">{{ $document->number }}</td>
49
                         <td class="text-left pl-2">{{ $document->number }}</td>
48
                     </tr>
50
                     </tr>
49
-                    <tr>
50
-                        <td class="font-semibold text-right pr-2">{{ $document->label->referenceNumber }}:</td>
51
-                        <td class="text-left pl-2">{{ $document->referenceNumber }}</td>
52
-                    </tr>
51
+                    @if($document->referenceNumber)
52
+                        <tr>
53
+                            <td class="font-semibold text-right pr-2">{{ $document->label->referenceNumber }}:</td>
54
+                            <td class="text-left pl-2">{{ $document->referenceNumber }}</td>
55
+                        </tr>
56
+                    @endif
53
                     <tr>
57
                     <tr>
54
                         <td class="font-semibold text-right pr-2">{{ $document->label->date }}:</td>
58
                         <td class="font-semibold text-right pr-2">{{ $document->label->date }}:</td>
55
                         <td class="text-left pl-2">{{ $document->date }}</td>
59
                         <td class="text-left pl-2">{{ $document->date }}</td>
65
     </x-company.document-template.metadata>
69
     </x-company.document-template.metadata>
66
 
70
 
67
     <!-- Line Items -->
71
     <!-- Line Items -->
68
-    <x-company.document-template.line-items class="classic-template-line-items">
72
+    <x-company.document-template.line-items class="classic-template-line-items px-6">
69
         <table class="w-full text-left table-fixed">
73
         <table class="w-full text-left table-fixed">
70
             <thead class="text-sm leading-relaxed">
74
             <thead class="text-sm leading-relaxed">
71
             <tr>
75
             <tr>
72
-                <th class="text-left pl-6 w-[50%] py-4">{{ $document->columnLabel->items }}</th>
76
+                <th class="text-left w-[50%] py-4">{{ $document->columnLabel->items }}</th>
73
                 <th class="text-center w-[10%] py-4">{{ $document->columnLabel->units }}</th>
77
                 <th class="text-center w-[10%] py-4">{{ $document->columnLabel->units }}</th>
74
                 <th class="text-right w-[20%] py-4">{{ $document->columnLabel->price }}</th>
78
                 <th class="text-right w-[20%] py-4">{{ $document->columnLabel->price }}</th>
75
-                <th class="text-right pr-6 w-[20%] py-4">{{ $document->columnLabel->amount }}</th>
79
+                <th class="text-right w-[20%] py-4">{{ $document->columnLabel->amount }}</th>
76
             </tr>
80
             </tr>
77
             </thead>
81
             </thead>
78
-            <tbody class="text-sm tracking-tight border-y-2 border-dotted border-gray-300">
82
+            <tbody class="text-sm border-y-2 border-dotted border-gray-300">
79
             @foreach($document->lineItems as $item)
83
             @foreach($document->lineItems as $item)
80
                 <tr>
84
                 <tr>
81
-                    <td class="text-left pl-6 font-semibold py-3">
85
+                    <td class="text-left font-semibold py-3">
82
                         {{ $item->name }}
86
                         {{ $item->name }}
83
                         @if($item->description)
87
                         @if($item->description)
84
                             <div class="text-gray-600 font-normal line-clamp-2 mt-1">{{ $item->description }}</div>
88
                             <div class="text-gray-600 font-normal line-clamp-2 mt-1">{{ $item->description }}</div>
86
                     </td>
90
                     </td>
87
                     <td class="text-center py-3">{{ $item->quantity }}</td>
91
                     <td class="text-center py-3">{{ $item->quantity }}</td>
88
                     <td class="text-right py-3">{{ $item->unitPrice }}</td>
92
                     <td class="text-right py-3">{{ $item->unitPrice }}</td>
89
-                    <td class="text-right pr-6 py-3">{{ $item->subtotal }}</td>
93
+                    <td class="text-right py-3">{{ $item->subtotal }}</td>
90
                 </tr>
94
                 </tr>
91
             @endforeach
95
             @endforeach
92
             </tbody>
96
             </tbody>
93
         </table>
97
         </table>
94
 
98
 
95
         <!-- Financial Details and Notes -->
99
         <!-- Financial Details and Notes -->
96
-        <div class="flex justify-between text-sm tracking-tight space-x-1">
100
+        <div class="flex justify-between text-sm space-x-1 pt-4">
97
             <!-- Notes Section -->
101
             <!-- Notes Section -->
98
-            <div class="w-[60%] border border-dashed border-gray-300 p-2 mt-4">
99
-                <h4 class="font-semibold mb-2">Notes</h4>
100
-                <p>{{ $document->footer }}</p>
102
+            <div class="w-[60%] py-2">
103
+                <p class="font-semibold">{{ $document->footer }}</p>
101
             </div>
104
             </div>
102
 
105
 
103
             <!-- Financial Summary -->
106
             <!-- Financial Summary -->
104
-            <div class="w-[40%] mt-2">
105
-                <table class="w-full table-fixed">
106
-                    <tbody class="text-sm tracking-tight">
107
+            <div class="w-[40%]">
108
+                <table class="w-full table-fixed whitespace-nowrap">
109
+                    <tbody class="text-sm">
107
                     <tr>
110
                     <tr>
108
                         <td class="text-right font-semibold py-2">Subtotal:</td>
111
                         <td class="text-right font-semibold py-2">Subtotal:</td>
109
-                        <td class="text-right pr-6 py-2">{{ $document->subtotal }}</td>
112
+                        <td class="text-right py-2">{{ $document->subtotal }}</td>
110
                     </tr>
113
                     </tr>
111
                     @if($document->discount)
114
                     @if($document->discount)
112
                         <tr class="text-success-800 dark:text-success-600">
115
                         <tr class="text-success-800 dark:text-success-600">
113
                             <td class="text-right py-2">Discount:</td>
116
                             <td class="text-right py-2">Discount:</td>
114
-                            <td class="text-right pr-6 py-2">
117
+                            <td class="text-right py-2">
115
                                 ({{ $document->discount }})
118
                                 ({{ $document->discount }})
116
                             </td>
119
                             </td>
117
                         </tr>
120
                         </tr>
119
                     @if($document->tax)
122
                     @if($document->tax)
120
                         <tr>
123
                         <tr>
121
                             <td class="text-right py-2">Tax:</td>
124
                             <td class="text-right py-2">Tax:</td>
122
-                            <td class="text-right pr-6 py-2">{{ $document->tax }}</td>
125
+                            <td class="text-right py-2">{{ $document->tax }}</td>
123
                         </tr>
126
                         </tr>
124
                     @endif
127
                     @endif
125
                     <tr>
128
                     <tr>
126
                         <td class="text-right font-semibold border-t py-2">Total:</td>
129
                         <td class="text-right font-semibold border-t py-2">Total:</td>
127
-                        <td class="text-right border-t pr-6 py-2">{{ $document->total }}</td>
130
+                        <td class="text-right border-t py-2">{{ $document->total }}</td>
128
                     </tr>
131
                     </tr>
129
                     @if($document->amountDue)
132
                     @if($document->amountDue)
130
                         <tr>
133
                         <tr>
131
                             <td class="text-right font-semibold border-t-4 border-double py-2">{{ $document->label->amountDue }}
134
                             <td class="text-right font-semibold border-t-4 border-double py-2">{{ $document->label->amountDue }}
132
                                 ({{ $document->currencyCode }}):
135
                                 ({{ $document->currencyCode }}):
133
                             </td>
136
                             </td>
134
-                            <td class="text-right border-t-4 border-double pr-6 py-2">{{ $document->amountDue }}</td>
137
+                            <td class="text-right border-t-4 border-double py-2">{{ $document->amountDue }}</td>
135
                         </tr>
138
                         </tr>
136
                     @endif
139
                     @endif
137
                     </tbody>
140
                     </tbody>
141
     </x-company.document-template.line-items>
144
     </x-company.document-template.line-items>
142
 
145
 
143
     <!-- Footer -->
146
     <!-- Footer -->
144
-    <x-company.document-template.footer class="classic-template-footer tracking-tight min-h-48">
145
-        <h4 class="font-semibold px-6 mb-2 text-sm">Terms & Conditions</h4>
146
-        <p class="px-6 break-words line-clamp-4 text-sm">{{ $document->terms }}</p>
147
+    <x-company.document-template.footer class="classic-template-footer min-h-48 p-6 text-sm">
148
+        <h4 class="font-semibold mb-2">Terms & Conditions</h4>
149
+        <p class="break-words line-clamp-4">{{ $document->terms }}</p>
147
     </x-company.document-template.footer>
150
     </x-company.document-template.footer>
148
 </x-company.document-template.container>
151
 </x-company.document-template.container>

+ 34
- 27
resources/views/filament/infolists/components/document-templates/default.blade.php 查看文件

1
 <x-company.document-template.container class="default-template-container">
1
 <x-company.document-template.container class="default-template-container">
2
 
2
 
3
-    <x-company.document-template.header class="default-template-header border-b-2 p-6 pb-4">
4
-        <div class="w-2/3">
3
+    <x-company.document-template.header class="default-template-header border-b">
4
+        <div class="w-1/3">
5
             @if($document->logo && $document->showLogo)
5
             @if($document->logo && $document->showLogo)
6
                 <x-company.document-template.logo :src="$document->logo"/>
6
                 <x-company.document-template.logo :src="$document->logo"/>
7
             @endif
7
             @endif
8
         </div>
8
         </div>
9
 
9
 
10
-        <div class="w-1/3 text-right">
11
-            <div class="text-sm tracking-tight">
12
-                <h2 class="text-lg font-semibold">{{ $document->company->name }}</h2>
13
-                @if($formattedAddress = $document->company->getFormattedAddressHtml())
14
-                    {!! $formattedAddress !!}
15
-                @endif
10
+        <div class="w-2/3 text-right">
11
+            <div class="space-y-4">
12
+                <div>
13
+                    <h1 class="text-3xl font-light uppercase">{{ $document->header }}</h1>
14
+                    @if ($document->subheader)
15
+                        <p class="text-sm text-gray-600 dark:text-gray-400">{{ $document->subheader }}</p>
16
+                    @endif
17
+                </div>
18
+                <div class="text-sm">
19
+                    <strong class="text-sm block">{{ $document->company->name }}</strong>
20
+                    @if($formattedAddress = $document->company->getFormattedAddressHtml())
21
+                        {!! $formattedAddress !!}
22
+                    @endif
23
+                </div>
16
             </div>
24
             </div>
17
         </div>
25
         </div>
18
     </x-company.document-template.header>
26
     </x-company.document-template.header>
19
 
27
 
20
-    <x-company.document-template.metadata class="default-template-metadata space-y-8">
21
-        <div>
22
-            <h1 class="text-4xl font-light uppercase">{{ $document->header }}</h1>
23
-            @if ($document->subheader)
24
-                <h2 class="text-base text-gray-600 dark:text-gray-400">{{ $document->subheader }}</h2>
25
-            @endif
26
-        </div>
27
-
28
+    <x-company.document-template.metadata class="default-template-metadata space-y-4">
28
         <div class="flex justify-between items-end">
29
         <div class="flex justify-between items-end">
29
             <!-- Billing Details -->
30
             <!-- Billing Details -->
30
-            <div class="text-sm tracking-tight">
31
-                <h3 class="text-gray-600 dark:text-gray-400 font-medium tracking-tight mb-1">BILL TO</h3>
32
-                <p class="text-base font-bold">{{ $document->client->name }}</p>
31
+            <div class="text-sm">
32
+                <h3 class="text-gray-600 dark:text-gray-400 font-medium mb-1">BILL TO</h3>
33
+                <p class="text-sm font-bold">{{ $document->client->name }}</p>
33
                 @if($formattedAddress = $document->client->getFormattedAddressHtml())
34
                 @if($formattedAddress = $document->client->getFormattedAddressHtml())
34
                     {!! $formattedAddress !!}
35
                     {!! $formattedAddress !!}
35
                 @endif
36
                 @endif
36
             </div>
37
             </div>
37
 
38
 
38
-            <div class="text-sm tracking-tight">
39
+            <div class="text-sm">
39
                 <table class="min-w-full">
40
                 <table class="min-w-full">
40
                     <tbody>
41
                     <tbody>
41
                     <tr>
42
                     <tr>
73
                 <th class="text-right pr-6 w-[20%] py-2">{{ $document->columnLabel->amount }}</th>
74
                 <th class="text-right pr-6 w-[20%] py-2">{{ $document->columnLabel->amount }}</th>
74
             </tr>
75
             </tr>
75
             </thead>
76
             </thead>
76
-            <tbody class="text-sm tracking-tight border-b-2 border-gray-300">
77
+            <tbody class="text-sm border-b-2 border-gray-300">
77
             @foreach($document->lineItems as $item)
78
             @foreach($document->lineItems as $item)
78
                 <tr>
79
                 <tr>
79
                     <td class="text-left pl-6 font-semibold py-3">
80
                     <td class="text-left pl-6 font-semibold py-3">
88
                 </tr>
89
                 </tr>
89
             @endforeach
90
             @endforeach
90
             </tbody>
91
             </tbody>
91
-            <tfoot class="text-sm tracking-tight summary-section">
92
+            <tfoot class="text-sm summary-section">
92
             <tr>
93
             <tr>
93
                 <td class="pl-6 py-2" colspan="2"></td>
94
                 <td class="pl-6 py-2" colspan="2"></td>
94
                 <td class="text-right font-semibold py-2">Subtotal:</td>
95
                 <td class="text-right font-semibold py-2">Subtotal:</td>
129
     </x-company.document-template.line-items>
130
     </x-company.document-template.line-items>
130
 
131
 
131
     <!-- Footer Notes -->
132
     <!-- Footer Notes -->
132
-    <x-company.document-template.footer class="default-template-footer tracking-tight">
133
-        <p class="px-6 text-sm">{{ $document->footer }}</p>
134
-        <span class="border-t-2 my-2 border-gray-300 block w-full"></span>
135
-        <h4 class="font-semibold px-6 mb-2 text-sm">Terms & Conditions</h4>
136
-        <p class="px-6 break-words line-clamp-4 text-sm">{{ $document->terms }}</p>
133
+    <x-company.document-template.footer class="classic-template-footer min-h-48 flex flex-col text-sm p-6">
134
+        <div>
135
+            <h4 class="font-semibold mb-2">Terms & Conditions</h4>
136
+            <p class="break-words line-clamp-4">{{ $document->terms }}</p>
137
+        </div>
138
+
139
+        @if($document->footer)
140
+            <div class="mt-auto text-center py-4">
141
+                <p class="font-semibold">{{ $document->footer }}</p>
142
+            </div>
143
+        @endif
137
     </x-company.document-template.footer>
144
     </x-company.document-template.footer>
138
 </x-company.document-template.container>
145
 </x-company.document-template.container>

+ 7
- 7
resources/views/filament/infolists/components/document-templates/modern.blade.php 查看文件

28
 
28
 
29
         <div class="flex justify-between items-end">
29
         <div class="flex justify-between items-end">
30
             <!-- Billing Details -->
30
             <!-- Billing Details -->
31
-            <div class="text-sm tracking-tight">
32
-                <h3 class="text-gray-600 dark:text-gray-400 font-medium tracking-tight mb-1">BILL TO</h3>
33
-                <p class="text-base font-bold"
31
+            <div class="text-sm">
32
+                <h3 class="text-gray-600 dark:text-gray-400 font-medium mb-1">BILL TO</h3>
33
+                <p class="text-sm font-bold"
34
                    style="color: {{ $document->accentColor }}">{{ $document->client->name }}</p>
34
                    style="color: {{ $document->accentColor }}">{{ $document->client->name }}</p>
35
 
35
 
36
                 @if($formattedAddress = $document->client->getFormattedAddressHtml())
36
                 @if($formattedAddress = $document->client->getFormattedAddressHtml())
38
                 @endif
38
                 @endif
39
             </div>
39
             </div>
40
 
40
 
41
-            <div class="text-sm tracking-tight">
41
+            <div class="text-sm">
42
                 <table class="min-w-full">
42
                 <table class="min-w-full">
43
                     <tbody>
43
                     <tbody>
44
                     <tr>
44
                     <tr>
76
                 <th class="text-right pr-6 w-[20%] py-4">{{ $document->columnLabel->amount }}</th>
76
                 <th class="text-right pr-6 w-[20%] py-4">{{ $document->columnLabel->amount }}</th>
77
             </tr>
77
             </tr>
78
             </thead>
78
             </thead>
79
-            <tbody class="text-sm tracking-tight border-y-2">
79
+            <tbody class="text-sm border-y-2">
80
             @foreach($document->lineItems as $index => $item)
80
             @foreach($document->lineItems as $index => $item)
81
                 <tr @class(['bg-gray-100 dark:bg-gray-800' => $index % 2 === 0])>
81
                 <tr @class(['bg-gray-100 dark:bg-gray-800' => $index % 2 === 0])>
82
                     <td class="text-left pl-6 font-semibold py-3">
82
                     <td class="text-left pl-6 font-semibold py-3">
91
                 </tr>
91
                 </tr>
92
             @endforeach
92
             @endforeach
93
             </tbody>
93
             </tbody>
94
-            <tfoot class="text-sm tracking-tight summary-section">
94
+            <tfoot class="text-sm summary-section">
95
             <tr>
95
             <tr>
96
                 <td class="pl-6 py-2" colspan="2"></td>
96
                 <td class="pl-6 py-2" colspan="2"></td>
97
                 <td class="text-right font-semibold py-2">Subtotal:</td>
97
                 <td class="text-right font-semibold py-2">Subtotal:</td>
132
     </x-company.document-template.line-items>
132
     </x-company.document-template.line-items>
133
 
133
 
134
     <!-- Footer Notes -->
134
     <!-- Footer Notes -->
135
-    <x-company.document-template.footer class="modern-template-footer tracking-tight">
135
+    <x-company.document-template.footer class="modern-template-footer">
136
         <h4 class="font-semibold px-6 text-sm" style="color: {{ $document->accentColor }}">
136
         <h4 class="font-semibold px-6 text-sm" style="color: {{ $document->accentColor }}">
137
             Terms & Conditions
137
             Terms & Conditions
138
         </h4>
138
         </h4>

+ 0
- 358
resources/views/vendor/filament/components/modal/index.blade.php 查看文件

1
-@php
2
-    use Filament\Support\Enums\Alignment;
3
-    use Filament\Support\Enums\MaxWidth;
4
-@endphp
5
-
6
-@props([
7
-    'alignment' => Alignment::Start,
8
-    'ariaLabelledby' => null,
9
-    'closeButton' => \Filament\Support\View\Components\Modal::$hasCloseButton,
10
-    'closeByClickingAway' => \Filament\Support\View\Components\Modal::$isClosedByClickingAway,
11
-    'closeEventName' => 'close-modal',
12
-    'description' => null,
13
-    'displayClasses' => 'inline-block',
14
-    'footer' => null,
15
-    'footerActions' => [],
16
-    'footerActionsAlignment' => Alignment::Start,
17
-    'header' => null,
18
-    'heading' => null,
19
-    'icon' => null,
20
-    'iconAlias' => null,
21
-    'iconColor' => 'primary',
22
-    'id' => null,
23
-    'openEventName' => 'open-modal',
24
-    'slideOver' => false,
25
-    'stickyFooter' => false,
26
-    'stickyHeader' => false,
27
-    'trigger' => null,
28
-    'visible' => true,
29
-    'width' => 'sm',
30
-])
31
-
32
-@php
33
-    if (! $alignment instanceof Alignment) {
34
-        $alignment = filled($alignment) ? (Alignment::tryFrom($alignment) ?? $alignment) : null;
35
-    }
36
-
37
-    if (! $footerActionsAlignment instanceof Alignment) {
38
-        $footerActionsAlignment = filled($footerActionsAlignment) ? (Alignment::tryFrom($footerActionsAlignment) ?? $footerActionsAlignment) : null;
39
-    }
40
-
41
-    if (! $width instanceof MaxWidth) {
42
-        $width = filled($width) ? (MaxWidth::tryFrom($width) ?? $width) : null;
43
-    }
44
-
45
-    $closeEventHandler = filled($id) ? '$dispatch(' . \Illuminate\Support\Js::from($closeEventName) . ', { id: ' . \Illuminate\Support\Js::from($id) . ' })' : 'close()';
46
-@endphp
47
-
48
-<div
49
-    @if ($ariaLabelledby)
50
-        aria-labelledby="{{ $ariaLabelledby }}"
51
-    @elseif ($heading)
52
-        aria-labelledby="{{ "{$id}.heading" }}"
53
-    @endif
54
-    aria-modal="true"
55
-    role="dialog"
56
-    x-data="{
57
-        isOpen: false,
58
-
59
-        livewire: null,
60
-
61
-        close: function () {
62
-            this.isOpen = false
63
-
64
-            this.$refs.modalContainer.dispatchEvent(
65
-                new CustomEvent('modal-closed', { id: '{{ $id }}' }),
66
-            )
67
-
68
-            {{-- this.$nextTick(() => {
69
-                if (document.getElementsByClassName('fi-modal-open').length) {
70
-                    return
71
-                }
72
-
73
-                window.clearAllBodyScrollLocks()
74
-            }) --}}
75
-        },
76
-
77
-        open: function () {
78
-            this.isOpen = true
79
-
80
-            {{-- window.clearAllBodyScrollLocks()
81
-            window.disableBodyScroll(this.$root) --}}
82
-
83
-            this.$refs.modalContainer.dispatchEvent(
84
-                new CustomEvent('modal-opened', { id: '{{ $id }}' }),
85
-            )
86
-        },
87
-    }"
88
-    @if ($id)
89
-        x-on:{{ $closeEventName }}.window="if ($event.detail.id === '{{ $id }}') close()"
90
-        x-on:{{ $openEventName }}.window="if ($event.detail.id === '{{ $id }}') open()"
91
-    @endif
92
-    x-trap.noscroll="isOpen"
93
-    x-bind:class="{
94
-        'fi-modal-open': isOpen,
95
-    }"
96
-    @class([
97
-        'fi-modal',
98
-        'fi-width-screen' => $width === MaxWidth::Screen,
99
-        $displayClasses,
100
-    ])
101
->
102
-    @if ($trigger)
103
-        <div
104
-            x-on:click="open"
105
-            {{ $trigger->attributes->class(['fi-modal-trigger flex cursor-pointer']) }}
106
-        >
107
-            {{ $trigger }}
108
-        </div>
109
-    @endif
110
-
111
-    <div
112
-        x-cloak
113
-        x-show="isOpen"
114
-    >
115
-        <div
116
-            aria-hidden="true"
117
-            x-show="isOpen"
118
-            x-transition.duration.300ms.opacity
119
-            @class([
120
-                'fi-modal-close-overlay fixed inset-0 z-40 bg-gray-950/50 dark:bg-gray-950/75',
121
-            ])
122
-        ></div>
123
-
124
-        <div
125
-            @class([
126
-                'fixed inset-0 z-40',
127
-                'overflow-hidden' => ! ($slideOver || ($width === MaxWidth::Screen)),
128
-                'cursor-pointer' => $closeByClickingAway,
129
-            ])
130
-        >
131
-            <div
132
-                x-ref="modalContainer"
133
-                @if ($closeByClickingAway)
134
-                    x-on:click.self="{{ $closeEventHandler }}"
135
-                @endif
136
-                {{
137
-                    $attributes->class([
138
-                        'relative min-h-full flex items-start justify-center',
139
-                        'mb-auto mt-8 p-4' => ! ($slideOver || ($width === MaxWidth::Screen)),
140
-                    ])
141
-                }}
142
-            >
143
-                <div
144
-                    x-data="{ isShown: false }"
145
-                    x-init="
146
-                        $nextTick(() => {
147
-                            isShown = isOpen
148
-                            $watch('isOpen', () => (isShown = isOpen))
149
-                        })
150
-                    "
151
-                    x-on:keydown.window.escape="{{ $closeEventHandler }}"
152
-                    x-show="isShown"
153
-                    x-transition:enter="duration-300"
154
-                    x-transition:leave="duration-300"
155
-                    @if ($width === MaxWidth::Screen)
156
-                    @elseif ($slideOver)
157
-                        x-transition:enter-start="translate-x-full rtl:-translate-x-full"
158
-                    x-transition:enter-end="translate-x-0"
159
-                    x-transition:leave-start="translate-x-0"
160
-                    x-transition:leave-end="translate-x-full rtl:-translate-x-full"
161
-                    @else
162
-                        x-transition:enter-start="scale-95 opacity-0"
163
-                    x-transition:enter-end="scale-100 opacity-100"
164
-                    x-transition:leave-start="scale-100 opacity-100"
165
-                    x-transition:leave-end="scale-95 opacity-0"
166
-                    @endif
167
-                    @class([
168
-                        'fi-modal-window pointer-events-auto relative flex w-full cursor-default flex-col bg-white shadow-xl ring-1 ring-gray-950/5 dark:bg-gray-900 dark:ring-white/10',
169
-                        'fi-modal-slide-over-window ms-auto overflow-y-auto' => $slideOver,
170
-                        // Using an arbitrary value instead of the h-dvh class that was added in Tailwind CSS v3.4.0
171
-                        // to ensure compatibility with custom themes that may use an older version of Tailwind CSS.
172
-                        'h-[100dvh]' => $slideOver || ($width === MaxWidth::Screen),
173
-                        'mx-auto rounded-xl' => ! ($slideOver || ($width === MaxWidth::Screen)),
174
-                        'hidden' => ! $visible,
175
-                        match ($width) {
176
-                            MaxWidth::ExtraSmall => 'max-w-xs',
177
-                            MaxWidth::Small => 'max-w-sm',
178
-                            MaxWidth::Medium => 'max-w-md',
179
-                            MaxWidth::Large => 'max-w-lg',
180
-                            MaxWidth::ExtraLarge => 'max-w-xl',
181
-                            MaxWidth::TwoExtraLarge => 'max-w-2xl',
182
-                            MaxWidth::ThreeExtraLarge => 'max-w-3xl',
183
-                            MaxWidth::FourExtraLarge => 'max-w-4xl',
184
-                            MaxWidth::FiveExtraLarge => 'max-w-5xl',
185
-                            MaxWidth::SixExtraLarge => 'max-w-6xl',
186
-                            MaxWidth::SevenExtraLarge => 'max-w-7xl',
187
-                            MaxWidth::Full => 'max-w-full',
188
-                            MaxWidth::MinContent => 'max-w-min',
189
-                            MaxWidth::MaxContent => 'max-w-max',
190
-                            MaxWidth::FitContent => 'max-w-fit',
191
-                            MaxWidth::Prose => 'max-w-prose',
192
-                            MaxWidth::ScreenSmall => 'max-w-screen-sm',
193
-                            MaxWidth::ScreenMedium => 'max-w-screen-md',
194
-                            MaxWidth::ScreenLarge => 'max-w-screen-lg',
195
-                            MaxWidth::ScreenExtraLarge => 'max-w-screen-xl',
196
-                            MaxWidth::ScreenTwoExtraLarge => 'max-w-screen-2xl',
197
-                            MaxWidth::Screen => 'fixed inset-0',
198
-                            default => $width,
199
-                        },
200
-                    ])
201
-                >
202
-                    @if ($heading || $header)
203
-                        <div
204
-                            @class([
205
-                                'fi-modal-header flex px-6 pt-6',
206
-                                'fi-sticky sticky top-0 z-10 border-b border-gray-200 bg-white pb-6 dark:border-white/10 dark:bg-gray-900' => $stickyHeader,
207
-                                'rounded-t-xl' => $stickyHeader && ! ($slideOver || ($width === MaxWidth::Screen)),
208
-                                match ($alignment) {
209
-                                    Alignment::Start, Alignment::Left => 'gap-x-5',
210
-                                    Alignment::Center => 'flex-col',
211
-                                    default => null,
212
-                                },
213
-                            ])
214
-                        >
215
-                            @if ($closeButton)
216
-                                <div
217
-                                    @class([
218
-                                        'absolute',
219
-                                        'end-4 top-4' => ! $slideOver,
220
-                                        'end-6 top-6' => $slideOver,
221
-                                    ])
222
-                                >
223
-                                    <x-filament::icon-button
224
-                                        color="gray"
225
-                                        icon="heroicon-o-x-mark"
226
-                                        icon-alias="modal.close-button"
227
-                                        icon-size="lg"
228
-                                        :label="__('filament::components/modal.actions.close.label')"
229
-                                        tabindex="-1"
230
-                                        :x-on:click="$closeEventHandler"
231
-                                        class="fi-modal-close-btn"
232
-                                    />
233
-                                </div>
234
-                            @endif
235
-
236
-                            @if ($header)
237
-                                {{ $header }}
238
-                            @else
239
-                                @if ($icon)
240
-                                    <div
241
-                                        @class([
242
-                                            'mb-5 flex items-center justify-center' => $alignment === Alignment::Center,
243
-                                        ])
244
-                                    >
245
-                                        <div
246
-                                            @class([
247
-                                                'rounded-full',
248
-                                                match ($iconColor) {
249
-                                                    'gray' => 'fi-color-gray bg-gray-100 dark:bg-gray-500/20',
250
-                                                    default => 'fi-color-custom bg-custom-100 dark:bg-custom-500/20',
251
-                                                },
252
-                                                match ($alignment) {
253
-                                                    Alignment::Start, Alignment::Left => 'p-2',
254
-                                                    Alignment::Center => 'p-3',
255
-                                                    default => null,
256
-                                                },
257
-                                            ])
258
-                                            @style([
259
-                                                \Filament\Support\get_color_css_variables(
260
-                                                    $iconColor,
261
-                                                    shades: [100, 400, 500, 600],
262
-                                                    alias: 'modal.icon',
263
-                                                ) => $iconColor !== 'gray',
264
-                                            ])
265
-                                        >
266
-                                            <x-filament::icon
267
-                                                :alias="$iconAlias"
268
-                                                :icon="$icon"
269
-                                                @class([
270
-                                                    'fi-modal-icon h-6 w-6',
271
-                                                    match ($iconColor) {
272
-                                                        'gray' => 'text-gray-500 dark:text-gray-400',
273
-                                                        default => 'text-custom-600 dark:text-custom-400',
274
-                                                    },
275
-                                                ])
276
-                                            />
277
-                                        </div>
278
-                                    </div>
279
-                                @endif
280
-
281
-                                <div
282
-                                    @class([
283
-                                        'text-center' => $alignment === Alignment::Center,
284
-                                    ])
285
-                                >
286
-                                    <x-filament::modal.heading>
287
-                                        {{ $heading }}
288
-                                    </x-filament::modal.heading>
289
-
290
-                                    @if (filled($description))
291
-                                        <x-filament::modal.description
292
-                                            class="mt-2"
293
-                                        >
294
-                                            {{ $description }}
295
-                                        </x-filament::modal.description>
296
-                                    @endif
297
-                                </div>
298
-                            @endif
299
-                        </div>
300
-                    @endif
301
-
302
-                    @if (! \Filament\Support\is_slot_empty($slot))
303
-                        <div
304
-                            @class([
305
-                                'fi-modal-content flex flex-col gap-y-4 py-6 overflow-y-auto',
306
-                                'max-h-[calc(80vh-4rem)]' => ! ($slideOver || ($width === MaxWidth::Screen)),
307
-                                'flex-1' => ($width === MaxWidth::Screen) || $slideOver,
308
-                                'pe-6 ps-[5.25rem]' => $icon && ($alignment === Alignment::Start),
309
-                                'px-6' => ! ($icon && ($alignment === Alignment::Start)),
310
-                            ])
311
-                        >
312
-                            {{ $slot }}
313
-                        </div>
314
-                    @endif
315
-
316
-                    @if ((! \Filament\Support\is_slot_empty($footer)) || (is_array($footerActions) && count($footerActions)) || (! is_array($footerActions) && (! \Filament\Support\is_slot_empty($footerActions))))
317
-                        <div
318
-                            @class([
319
-                                'fi-modal-footer w-full',
320
-                                'pe-6 ps-[5.25rem]' => $icon && ($alignment === Alignment::Start) && ($footerActionsAlignment !== Alignment::Center) && (! $stickyFooter),
321
-                                'px-6' => ! ($icon && ($alignment === Alignment::Start) && ($footerActionsAlignment !== Alignment::Center) && (! $stickyFooter)),
322
-                                'fi-sticky sticky bottom-0 border-t border-gray-200 bg-white py-5 dark:border-white/10 dark:bg-gray-900' => $stickyFooter,
323
-                                'rounded-b-xl' => $stickyFooter && ! ($slideOver || ($width === MaxWidth::Screen)),
324
-                                'pb-6' => ! $stickyFooter,
325
-                                'mt-6' => (! $stickyFooter) && \Filament\Support\is_slot_empty($slot),
326
-                                'mt-auto' => $slideOver,
327
-                            ])
328
-                        >
329
-                            @if (! \Filament\Support\is_slot_empty($footer))
330
-                                {{ $footer }}
331
-                            @else
332
-                                <div
333
-                                    @class([
334
-                                        'fi-modal-footer-actions gap-3',
335
-                                        match ($footerActionsAlignment) {
336
-                                            Alignment::Start, Alignment::Left => 'flex flex-wrap items-center',
337
-                                            Alignment::Center => 'flex flex-col-reverse sm:grid sm:grid-cols-[repeat(auto-fit,minmax(0,1fr))]',
338
-                                            Alignment::End, Alignment::Right => 'flex flex-row-reverse flex-wrap items-center',
339
-                                            default => null,
340
-                                        },
341
-                                    ])
342
-                                >
343
-                                    @if (is_array($footerActions))
344
-                                        @foreach ($footerActions as $action)
345
-                                            {{ $action }}
346
-                                        @endforeach
347
-                                    @else
348
-                                        {{ $footerActions }}
349
-                                    @endif
350
-                                </div>
351
-                            @endif
352
-                        </div>
353
-                    @endif
354
-                </div>
355
-            </div>
356
-        </div>
357
-    </div>
358
-</div>

正在加载...
取消
保存