alpha
Login
or
Join now
nandi.uk
/
semble
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
This repository has no description
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Overview
Issues
Pulls
Pipelines
feat: inline note viewer on url card
author
pdelfan
date
2 months ago
(May 6, 2026, 5:18 PM -0700)
commit
c3e3a2b2
c3e3a2b2aa55cc85b5c35bbefc91d5c16fe8a5af
parent
99b77865
99b77865c75f07f906be90a16a72de65c2f2e252
+439
-217
4 changed files
Expand all
Collapse all
Unified
Split
package-lock.json
src
webapp
features
cards
components
urlCardActions
UrlCardActions.tsx
notes
components
noteCardInline
NoteCardInline.module.css
NoteCardInline.tsx
+83
-171
package-lock.json
View file
Reviewed
···
1127
1127
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz",
1128
1128
"integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==",
1129
1129
"dev": true,
1130
1130
+
"peer": true,
1130
1131
"dependencies": {
1131
1132
"@babel/code-frame": "^7.27.1",
1132
1133
"@babel/generator": "^7.28.3",
···
1796
1797
"url": "https://opencollective.com/csstools"
1797
1798
}
1798
1799
],
1800
1800
+
"peer": true,
1799
1801
"engines": {
1800
1802
"node": ">=18"
1801
1803
},
···
1818
1820
"url": "https://opencollective.com/csstools"
1819
1821
}
1820
1822
],
1823
1823
+
"peer": true,
1821
1824
"engines": {
1822
1825
"node": ">=18"
1823
1826
}
···
1827
1830
"resolved": "https://registry.npmjs.org/@drizzle-team/brocli/-/brocli-0.10.2.tgz",
1828
1831
"integrity": "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==",
1829
1832
"dev": true
1830
1830
-
},
1831
1831
-
"node_modules/@emnapi/core": {
1832
1832
-
"version": "1.10.0",
1833
1833
-
"resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz",
1834
1834
-
"integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==",
1835
1835
-
"dev": true,
1836
1836
-
"license": "MIT",
1837
1837
-
"optional": true,
1838
1838
-
"dependencies": {
1839
1839
-
"@emnapi/wasi-threads": "1.2.1",
1840
1840
-
"tslib": "^2.4.0"
1841
1841
-
}
1842
1842
-
},
1843
1843
-
"node_modules/@emnapi/runtime": {
1844
1844
-
"version": "1.10.0",
1845
1845
-
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz",
1846
1846
-
"integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==",
1847
1847
-
"license": "MIT",
1848
1848
-
"optional": true,
1849
1849
-
"dependencies": {
1850
1850
-
"tslib": "^2.4.0"
1851
1851
-
}
1852
1833
},
1853
1834
"node_modules/@emnapi/wasi-threads": {
1854
1835
"version": "1.2.1",
···
2285
2266
"os": [
2286
2267
"aix"
2287
2268
],
2288
2288
-
"peer": true,
2289
2269
"engines": {
2290
2270
"node": ">=18"
2291
2271
}
···
2303
2283
"os": [
2304
2284
"android"
2305
2285
],
2306
2306
-
"peer": true,
2307
2286
"engines": {
2308
2287
"node": ">=18"
2309
2288
}
···
2321
2300
"os": [
2322
2301
"android"
2323
2302
],
2324
2324
-
"peer": true,
2325
2303
"engines": {
2326
2304
"node": ">=18"
2327
2305
}
···
2339
2317
"os": [
2340
2318
"android"
2341
2319
],
2342
2342
-
"peer": true,
2343
2320
"engines": {
2344
2321
"node": ">=18"
2345
2322
}
···
2357
2334
"os": [
2358
2335
"darwin"
2359
2336
],
2360
2360
-
"peer": true,
2361
2337
"engines": {
2362
2338
"node": ">=18"
2363
2339
}
···
2375
2351
"os": [
2376
2352
"darwin"
2377
2353
],
2378
2378
-
"peer": true,
2379
2354
"engines": {
2380
2355
"node": ">=18"
2381
2356
}
···
2393
2368
"os": [
2394
2369
"freebsd"
2395
2370
],
2396
2396
-
"peer": true,
2397
2371
"engines": {
2398
2372
"node": ">=18"
2399
2373
}
···
2411
2385
"os": [
2412
2386
"freebsd"
2413
2387
],
2414
2414
-
"peer": true,
2415
2388
"engines": {
2416
2389
"node": ">=18"
2417
2390
}
···
2429
2402
"os": [
2430
2403
"linux"
2431
2404
],
2432
2432
-
"peer": true,
2433
2405
"engines": {
2434
2406
"node": ">=18"
2435
2407
}
···
2447
2419
"os": [
2448
2420
"linux"
2449
2421
],
2450
2450
-
"peer": true,
2451
2422
"engines": {
2452
2423
"node": ">=18"
2453
2424
}
···
2465
2436
"os": [
2466
2437
"linux"
2467
2438
],
2468
2468
-
"peer": true,
2469
2439
"engines": {
2470
2440
"node": ">=18"
2471
2441
}
···
2483
2453
"os": [
2484
2454
"linux"
2485
2455
],
2486
2486
-
"peer": true,
2487
2456
"engines": {
2488
2457
"node": ">=18"
2489
2458
}
···
2501
2470
"os": [
2502
2471
"linux"
2503
2472
],
2504
2504
-
"peer": true,
2505
2473
"engines": {
2506
2474
"node": ">=18"
2507
2475
}
···
2519
2487
"os": [
2520
2488
"linux"
2521
2489
],
2522
2522
-
"peer": true,
2523
2490
"engines": {
2524
2491
"node": ">=18"
2525
2492
}
···
2537
2504
"os": [
2538
2505
"linux"
2539
2506
],
2540
2540
-
"peer": true,
2541
2507
"engines": {
2542
2508
"node": ">=18"
2543
2509
}
···
2555
2521
"os": [
2556
2522
"linux"
2557
2523
],
2558
2558
-
"peer": true,
2559
2524
"engines": {
2560
2525
"node": ">=18"
2561
2526
}
···
2573
2538
"os": [
2574
2539
"linux"
2575
2540
],
2576
2576
-
"peer": true,
2577
2541
"engines": {
2578
2542
"node": ">=18"
2579
2543
}
···
2591
2555
"os": [
2592
2556
"netbsd"
2593
2557
],
2594
2594
-
"peer": true,
2595
2558
"engines": {
2596
2559
"node": ">=18"
2597
2560
}
···
2609
2572
"os": [
2610
2573
"netbsd"
2611
2574
],
2612
2612
-
"peer": true,
2613
2575
"engines": {
2614
2576
"node": ">=18"
2615
2577
}
···
2627
2589
"os": [
2628
2590
"openbsd"
2629
2591
],
2630
2630
-
"peer": true,
2631
2592
"engines": {
2632
2593
"node": ">=18"
2633
2594
}
···
2645
2606
"os": [
2646
2607
"openbsd"
2647
2608
],
2648
2648
-
"peer": true,
2649
2609
"engines": {
2650
2610
"node": ">=18"
2651
2611
}
···
2663
2623
"os": [
2664
2624
"openharmony"
2665
2625
],
2666
2666
-
"peer": true,
2667
2626
"engines": {
2668
2627
"node": ">=18"
2669
2628
}
···
2681
2640
"os": [
2682
2641
"sunos"
2683
2642
],
2684
2684
-
"peer": true,
2685
2643
"engines": {
2686
2644
"node": ">=18"
2687
2645
}
···
2699
2657
"os": [
2700
2658
"win32"
2701
2659
],
2702
2702
-
"peer": true,
2703
2660
"engines": {
2704
2661
"node": ">=18"
2705
2662
}
···
2717
2674
"os": [
2718
2675
"win32"
2719
2676
],
2720
2720
-
"peer": true,
2721
2677
"engines": {
2722
2678
"node": ">=18"
2723
2679
}
···
2735
2691
"os": [
2736
2692
"win32"
2737
2693
],
2738
2738
-
"peer": true,
2739
2694
"engines": {
2740
2695
"node": ">=18"
2741
2696
}
···
4731
4686
"version": "3.1.1",
4732
4687
"resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-3.1.1.tgz",
4733
4688
"integrity": "sha512-0TTacJyZ9mDmY+VefuthVshaNIyCGZHJG2fMnGaDttCt8HmjUF7SizlHJpaCDoGnN635nK1wpzfpx/Xx5S4WnQ==",
4689
4689
+
"peer": true,
4734
4690
"dependencies": {
4735
4691
"@mdx-js/mdx": "^3.0.0",
4736
4692
"source-map": "^0.7.0"
···
4788
4744
"version": "3.1.1",
4789
4745
"resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz",
4790
4746
"integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==",
4747
4747
+
"peer": true,
4791
4748
"dependencies": {
4792
4749
"@types/mdx": "^2.0.0"
4793
4750
},
···
4919
4876
"resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.14.tgz",
4920
4877
"integrity": "sha512-aXeirLYuASxEgi4X4WhfXsShCFxWDfNn/8ZeC5YXAS2BB4A8FJi1kwwGL6nvMVboE7fZCzmJPNdMvVHc8JpaiA==",
4921
4878
"license": "MIT",
4922
4922
-
"optional": true,
4923
4923
-
"peer": true
4879
4879
+
"optional": true
4924
4880
},
4925
4881
"node_modules/@next/eslint-plugin-next": {
4926
4882
"version": "16.2.3",
···
4995
4951
"os": [
4996
4952
"darwin"
4997
4953
],
4998
4998
-
"peer": true,
4999
4954
"engines": {
5000
4955
"node": ">= 10"
5001
4956
}
···
5012
4967
"os": [
5013
4968
"darwin"
5014
4969
],
5015
5015
-
"peer": true,
5016
4970
"engines": {
5017
4971
"node": ">= 10"
5018
4972
}
···
5029
4983
"os": [
5030
4984
"linux"
5031
4985
],
5032
5032
-
"peer": true,
5033
4986
"engines": {
5034
4987
"node": ">= 10"
5035
4988
}
···
5046
4999
"os": [
5047
5000
"linux"
5048
5001
],
5049
5049
-
"peer": true,
5050
5002
"engines": {
5051
5003
"node": ">= 10"
5052
5004
}
···
5063
5015
"os": [
5064
5016
"linux"
5065
5017
],
5066
5066
-
"peer": true,
5067
5018
"engines": {
5068
5019
"node": ">= 10"
5069
5020
}
···
5080
5031
"os": [
5081
5032
"linux"
5082
5033
],
5083
5083
-
"peer": true,
5084
5034
"engines": {
5085
5035
"node": ">= 10"
5086
5036
}
···
5097
5047
"os": [
5098
5048
"win32"
5099
5049
],
5100
5100
-
"peer": true,
5101
5050
"engines": {
5102
5051
"node": ">= 10"
5103
5052
}
···
5114
5063
"os": [
5115
5064
"win32"
5116
5065
],
5117
5117
-
"peer": true,
5118
5066
"engines": {
5119
5067
"node": ">= 10"
5120
5068
}
···
5192
5140
"version": "1.9.0",
5193
5141
"resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz",
5194
5142
"integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==",
5143
5143
+
"peer": true,
5195
5144
"engines": {
5196
5145
"node": ">=8.0.0"
5197
5146
}
···
5211
5160
"version": "2.6.0",
5212
5161
"resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.6.0.tgz",
5213
5162
"integrity": "sha512-L8UyDwqpTcbkIK5cgwDRDYDoEhQoj8wp8BwsO19w3LB1Z41yEQm2VJyNfAi9DrLP/YTqXqWpKHyZfR9/tFYo1Q==",
5163
5163
+
"peer": true,
5214
5164
"engines": {
5215
5165
"node": "^18.19.0 || >=20.6.0"
5216
5166
},
···
5222
5172
"version": "2.2.0",
5223
5173
"resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz",
5224
5174
"integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==",
5175
5175
+
"peer": true,
5225
5176
"dependencies": {
5226
5177
"@opentelemetry/semantic-conventions": "^1.29.0"
5227
5178
},
···
5796
5747
"version": "2.2.0",
5797
5748
"resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.2.0.tgz",
5798
5749
"integrity": "sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==",
5750
5750
+
"peer": true,
5799
5751
"dependencies": {
5800
5752
"@opentelemetry/core": "2.2.0",
5801
5753
"@opentelemetry/resources": "2.2.0",
···
5827
5779
"version": "1.39.0",
5828
5780
"resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.39.0.tgz",
5829
5781
"integrity": "sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==",
5782
5782
+
"peer": true,
5830
5783
"engines": {
5831
5784
"node": ">=14"
5832
5785
}
···
6011
5964
"resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.9.3.tgz",
6012
5965
"integrity": "sha512-4KlM1Zr/jpsqWuMXr2zmGsaOUs1zMMFh9vfCNKRZkptf+uk8I3sugHbNdo+F5B+4e2yMuOEb1zgAmvJLeuH6ww==",
6013
5966
"dev": true,
5967
5967
+
"peer": true,
6014
5968
"dependencies": {
6015
5969
"@mischnic/json-sourcemap": "^0.1.0",
6016
5970
"@parcel/cache": "2.9.3",
···
7937
7891
"os": [
7938
7892
"android"
7939
7893
],
7940
7940
-
"peer": true,
7941
7894
"engines": {
7942
7895
"node": ">= 10.0.0"
7943
7896
},
···
7958
7911
"os": [
7959
7912
"darwin"
7960
7913
],
7961
7961
-
"peer": true,
7962
7914
"engines": {
7963
7915
"node": ">= 10.0.0"
7964
7916
},
···
7979
7931
"os": [
7980
7932
"darwin"
7981
7933
],
7982
7982
-
"peer": true,
7983
7934
"engines": {
7984
7935
"node": ">= 10.0.0"
7985
7936
},
···
8000
7951
"os": [
8001
7952
"freebsd"
8002
7953
],
8003
8003
-
"peer": true,
8004
7954
"engines": {
8005
7955
"node": ">= 10.0.0"
8006
7956
},
···
8021
7971
"os": [
8022
7972
"linux"
8023
7973
],
8024
8024
-
"peer": true,
8025
7974
"engines": {
8026
7975
"node": ">= 10.0.0"
8027
7976
},
···
8042
7991
"os": [
8043
7992
"linux"
8044
7993
],
8045
8045
-
"peer": true,
8046
7994
"engines": {
8047
7995
"node": ">= 10.0.0"
8048
7996
},
···
8063
8011
"os": [
8064
8012
"linux"
8065
8013
],
8066
8066
-
"peer": true,
8067
8014
"engines": {
8068
8015
"node": ">= 10.0.0"
8069
8016
},
···
8084
8031
"os": [
8085
8032
"linux"
8086
8033
],
8087
8087
-
"peer": true,
8088
8034
"engines": {
8089
8035
"node": ">= 10.0.0"
8090
8036
},
···
8105
8051
"os": [
8106
8052
"linux"
8107
8053
],
8108
8108
-
"peer": true,
8109
8054
"engines": {
8110
8055
"node": ">= 10.0.0"
8111
8056
},
···
8126
8071
"os": [
8127
8072
"linux"
8128
8073
],
8129
8129
-
"peer": true,
8130
8074
"engines": {
8131
8075
"node": ">= 10.0.0"
8132
8076
},
···
8147
8091
"os": [
8148
8092
"win32"
8149
8093
],
8150
8150
-
"peer": true,
8151
8094
"engines": {
8152
8095
"node": ">= 10.0.0"
8153
8096
},
···
8168
8111
"os": [
8169
8112
"win32"
8170
8113
],
8171
8171
-
"peer": true,
8172
8114
"engines": {
8173
8115
"node": ">= 10.0.0"
8174
8116
},
···
8189
8131
"os": [
8190
8132
"win32"
8191
8133
],
8192
8192
-
"peer": true,
8193
8134
"engines": {
8194
8135
"node": ">= 10.0.0"
8195
8136
},
···
8860
8801
"integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
8861
8802
"dev": true,
8862
8803
"hasInstallScript": true,
8804
8804
+
"peer": true,
8863
8805
"bin": {
8864
8806
"esbuild": "bin/esbuild"
8865
8807
},
···
9026
8968
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
9027
8969
"integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
9028
8970
"dev": true,
8971
8971
+
"peer": true,
9029
8972
"bin": {
9030
8973
"tsc": "bin/tsc",
9031
8974
"tsserver": "bin/tsserver"
···
9785
9728
"integrity": "sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==",
9786
9729
"devOptional": true,
9787
9730
"license": "Apache-2.0",
9731
9731
+
"peer": true,
9788
9732
"dependencies": {
9789
9733
"playwright": "1.59.1"
9790
9734
},
···
11222
11166
"resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz",
11223
11167
"integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==",
11224
11168
"dev": true,
11169
11169
+
"peer": true,
11225
11170
"dependencies": {
11226
11171
"@babel/core": "^7.19.6",
11227
11172
"@svgr/babel-preset": "^6.5.1",
···
11464
11409
"os": [
11465
11410
"darwin"
11466
11411
],
11467
11467
-
"peer": true,
11468
11412
"engines": {
11469
11413
"node": ">=10"
11470
11414
}
···
11481
11425
"os": [
11482
11426
"darwin"
11483
11427
],
11484
11484
-
"peer": true,
11485
11428
"engines": {
11486
11429
"node": ">=10"
11487
11430
}
···
11498
11441
"os": [
11499
11442
"linux"
11500
11443
],
11501
11501
-
"peer": true,
11502
11444
"engines": {
11503
11445
"node": ">=10"
11504
11446
}
···
11515
11457
"os": [
11516
11458
"linux"
11517
11459
],
11518
11518
-
"peer": true,
11519
11460
"engines": {
11520
11461
"node": ">=10"
11521
11462
}
···
11532
11473
"os": [
11533
11474
"linux"
11534
11475
],
11535
11535
-
"peer": true,
11536
11476
"engines": {
11537
11477
"node": ">=10"
11538
11478
}
···
11549
11489
"os": [
11550
11490
"linux"
11551
11491
],
11552
11552
-
"peer": true,
11553
11492
"engines": {
11554
11493
"node": ">=10"
11555
11494
}
···
11566
11505
"os": [
11567
11506
"linux"
11568
11507
],
11569
11569
-
"peer": true,
11570
11508
"engines": {
11571
11509
"node": ">=10"
11572
11510
}
···
11583
11521
"os": [
11584
11522
"win32"
11585
11523
],
11586
11586
-
"peer": true,
11587
11524
"engines": {
11588
11525
"node": ">=10"
11589
11526
}
···
11600
11537
"os": [
11601
11538
"win32"
11602
11539
],
11603
11603
-
"peer": true,
11604
11540
"engines": {
11605
11541
"node": ">=10"
11606
11542
}
···
11617
11553
"os": [
11618
11554
"win32"
11619
11555
],
11620
11620
-
"peer": true,
11621
11556
"engines": {
11622
11557
"node": ">=10"
11623
11558
}
···
11705
11640
"integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==",
11706
11641
"dev": true,
11707
11642
"license": "MIT",
11643
11643
+
"peer": true,
11708
11644
"dependencies": {
11709
11645
"@babel/code-frame": "^7.10.4",
11710
11646
"@babel/runtime": "^7.12.5",
···
12051
11987
"resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.3.tgz",
12052
11988
"integrity": "sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==",
12053
11989
"dev": true,
11990
11990
+
"peer": true,
12054
11991
"dependencies": {
12055
11992
"@types/body-parser": "*",
12056
11993
"@types/express-serve-static-core": "^5.0.0",
···
12246
12183
"version": "20.19.23",
12247
12184
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.23.tgz",
12248
12185
"integrity": "sha512-yIdlVVVHXpmqRhtyovZAcSy0MiPcYWGkoO4CGe/+jpP0hmNuihm4XhHbADpK++MsiLHP5MVlv+bcgdF99kSiFQ==",
12186
12186
+
"peer": true,
12249
12187
"dependencies": {
12250
12188
"undici-types": "~6.21.0"
12251
12189
}
···
12291
12229
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz",
12292
12230
"integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==",
12293
12231
"license": "MIT",
12232
12232
+
"peer": true,
12294
12233
"dependencies": {
12295
12234
"csstype": "^3.2.2"
12296
12235
}
···
12301
12240
"integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==",
12302
12241
"dev": true,
12303
12242
"license": "MIT",
12243
12243
+
"peer": true,
12304
12244
"peerDependencies": {
12305
12245
"@types/react": "^19.2.0"
12306
12246
}
···
12493
12433
"integrity": "sha512-gGkiNMPqerb2cJSVcruigx9eHBlLG14fSdPdqMoOcBfh+vvn4iCq2C8MzUB89PrxOXk0y3GZ1yIWb9aOzL93bw==",
12494
12434
"dev": true,
12495
12435
"license": "MIT",
12436
12436
+
"peer": true,
12496
12437
"dependencies": {
12497
12438
"@typescript-eslint/scope-manager": "8.58.1",
12498
12439
"@typescript-eslint/types": "8.58.1",
···
13050
12991
"integrity": "sha512-iCDGI8c4yg+xmjUg2VsygdAUSIIB4x5Rht/P68OXy1hPELKXHDkzh87lkuTcdYmemRChDkEpB426MmDjzC0ziA==",
13051
12992
"dev": true,
13052
12993
"license": "MIT",
12994
12994
+
"peer": true,
13053
12995
"dependencies": {
13054
12996
"@blazediff/core": "1.9.1",
13055
12997
"@vitest/mocker": "4.1.5",
···
13073
13015
"integrity": "sha512-CWy0lBQJq97nionyJJdnaU4961IXTl43a7UCu5nHy51IoKxAt6PVIJLo+76rVl7KOOgcWHNkG4kbJu/pW7knvA==",
13074
13016
"dev": true,
13075
13017
"license": "MIT",
13018
13018
+
"peer": true,
13076
13019
"dependencies": {
13077
13020
"@vitest/browser": "4.1.5",
13078
13021
"@vitest/mocker": "4.1.5",
···
13151
13094
"integrity": "sha512-38C0/Ddb7HcRG0Z4/DUem8x57d2p9jYgp18mkaYswEOQBGsI1CG4f/hjm0ZCeaJfWhSZ4k7jgs29V1Zom7Ki9A==",
13152
13095
"dev": true,
13153
13096
"license": "MIT",
13097
13097
+
"peer": true,
13154
13098
"dependencies": {
13155
13099
"@bcoe/v8-coverage": "^1.0.2",
13156
13100
"@vitest/utils": "4.1.5",
···
13213
13157
"integrity": "sha512-2D+o7Pr82IEO46YPpoA/YU0neeyr6FTerQb5Ro7BUnBuv6NQtT/kmVnczngiMEBhzgqz2UZYl5gArejsyERDSQ==",
13214
13158
"dev": true,
13215
13159
"license": "MIT",
13160
13160
+
"peer": true,
13216
13161
"dependencies": {
13217
13162
"@vitest/utils": "4.1.5",
13218
13163
"pathe": "^2.0.3"
···
13504
13449
"version": "8.15.0",
13505
13450
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
13506
13451
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
13452
13452
+
"peer": true,
13507
13453
"bin": {
13508
13454
"acorn": "bin/acorn"
13509
13455
},
···
13531
13477
"version": "1.7.1",
13532
13478
"resolved": "https://registry.npmjs.org/aframe/-/aframe-1.7.1.tgz",
13533
13479
"integrity": "sha512-dcc7PWI5z8pyJ0s2W0mUd8d83339frgMXhUvWr1yxkdgg6zSExkuQwsSJjiNn7XWKMUUqKYDvV/WzQQRA+OBXA==",
13534
13534
-
"peer": true,
13535
13480
"dependencies": {
13536
13481
"buffer": "^6.0.3",
13537
13482
"debug": "^4.3.4",
···
13579
13524
"name": "super-three",
13580
13525
"version": "0.173.5",
13581
13526
"resolved": "https://registry.npmjs.org/super-three/-/super-three-0.173.5.tgz",
13582
13582
-
"integrity": "sha512-ecjojbhUg/5QrixwqF4s6gvtJap9XQz7TcnFUX/J8Yosgb2eE2ZUqsyqr/JczFG//6hwIaZPeAa9M5DNaM1dmQ==",
13583
13583
-
"peer": true
13527
13527
+
"integrity": "sha512-ecjojbhUg/5QrixwqF4s6gvtJap9XQz7TcnFUX/J8Yosgb2eE2ZUqsyqr/JczFG//6hwIaZPeAa9M5DNaM1dmQ=="
13584
13528
},
13585
13529
"node_modules/agent-base": {
13586
13530
"version": "7.1.4",
···
13611
13555
"node_modules/an-array": {
13612
13556
"version": "1.0.0",
13613
13557
"resolved": "https://registry.npmjs.org/an-array/-/an-array-1.0.0.tgz",
13614
13614
-
"integrity": "sha512-M175GYI7RmsYu24Ok383yZQa3eveDfNnmhTe3OQ3bm70bEovz2gWenH+ST/n32M8lrwLWk74hcPds5CDRPe2wg==",
13615
13615
-
"peer": true
13558
13558
+
"integrity": "sha512-M175GYI7RmsYu24Ok383yZQa3eveDfNnmhTe3OQ3bm70bEovz2gWenH+ST/n32M8lrwLWk74hcPds5CDRPe2wg=="
13616
13559
},
13617
13560
"node_modules/ansi-escapes": {
13618
13561
"version": "4.3.2",
···
13798
13741
"version": "1.0.1",
13799
13742
"resolved": "https://registry.npmjs.org/array-shuffle/-/array-shuffle-1.0.1.tgz",
13800
13743
"integrity": "sha512-PBqgo1Y2XWSksBzq3GFPEb798ZrW2snAcmr4drbVeF/6MT/5aBlkGJEvu5A/CzXHf4EjbHOj/ZowatjlIiVidA==",
13801
13801
-
"peer": true,
13802
13744
"engines": {
13803
13745
"node": ">=0.10.0"
13804
13746
}
···
13929
13871
"node_modules/as-number": {
13930
13872
"version": "1.0.0",
13931
13873
"resolved": "https://registry.npmjs.org/as-number/-/as-number-1.0.0.tgz",
13932
13932
-
"integrity": "sha512-HkI/zLo2AbSRO4fqVkmyf3hms0bJDs3iboHqTrNuwTiCRvdYXM7HFhfhB6Dk51anV2LM/IMB83mtK9mHw4FlAg==",
13933
13933
-
"peer": true
13874
13874
+
"integrity": "sha512-HkI/zLo2AbSRO4fqVkmyf3hms0bJDs3iboHqTrNuwTiCRvdYXM7HFhfhB6Dk51anV2LM/IMB83mtK9mHw4FlAg=="
13934
13875
},
13935
13876
"node_modules/asap": {
13936
13877
"version": "2.0.6",
···
14597
14538
"url": "https://github.com/sponsors/ai"
14598
14539
}
14599
14540
],
14541
14541
+
"peer": true,
14600
14542
"dependencies": {
14601
14543
"baseline-browser-mapping": "^2.8.19",
14602
14544
"caniuse-lite": "^1.0.30001751",
···
14668
14610
"version": "0.0.1",
14669
14611
"resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz",
14670
14612
"integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==",
14671
14671
-
"peer": true,
14672
14613
"engines": {
14673
14614
"node": ">=0.4.0"
14674
14615
}
···
14978
14919
"version": "2.7.0",
14979
14920
"resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz",
14980
14921
"integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==",
14981
14981
-
"peer": true,
14982
14922
"dependencies": {
14983
14923
"follow-redirects": "^1.15.6"
14984
14924
}
···
15418
15358
"version": "1.0.3",
15419
15359
"resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
15420
15360
"integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
15421
15421
-
"peer": true,
15422
15361
"dependencies": {
15423
15362
"mimic-response": "^1.0.0"
15424
15363
},
···
15430
15369
"version": "1.0.1",
15431
15370
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
15432
15371
"integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
15433
15433
-
"peer": true,
15434
15372
"engines": {
15435
15373
"node": ">=4"
15436
15374
}
···
16164
16102
"version": "3.0.0",
16165
16103
"resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
16166
16104
"integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
16105
16105
+
"peer": true,
16167
16106
"engines": {
16168
16107
"node": ">=12"
16169
16108
}
···
16324
16263
"node_modules/dayjs": {
16325
16264
"version": "1.11.18",
16326
16265
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.18.tgz",
16327
16327
-
"integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA=="
16266
16266
+
"integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==",
16267
16267
+
"peer": true
16328
16268
},
16329
16269
"node_modules/debug": {
16330
16270
"version": "4.4.3",
···
16405
16345
"version": "2.0.0",
16406
16346
"resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz",
16407
16347
"integrity": "sha512-2QhG3Kxulu4XIF3WL5C5x0sc/S17JLgm1SfvDfIRsR/5m7ZGmcejII7fZ2RyWhN0UWIJm0TNM/eKow6LAn3evQ==",
16408
16408
-
"peer": true,
16409
16348
"dependencies": {
16410
16349
"is-obj": "^1.0.0"
16411
16350
},
···
16819
16758
"node_modules/dom-walk": {
16820
16759
"version": "0.1.2",
16821
16760
"resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
16822
16822
-
"integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==",
16823
16823
-
"peer": true
16761
16761
+
"integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
16824
16762
},
16825
16763
"node_modules/domelementtype": {
16826
16764
"version": "2.3.0",
···
17530
17468
"version": "2.0.0",
17531
17469
"resolved": "https://registry.npmjs.org/dtype/-/dtype-2.0.0.tgz",
17532
17470
"integrity": "sha512-s2YVcLKdFGS0hpFqJaTwscsyt0E8nNFdmo73Ocd81xNPj4URI4rj6D60A+vFMIw7BXWlb4yRkEwfBqcZzPGiZg==",
17533
17533
-
"peer": true,
17534
17471
"engines": {
17535
17472
"node": ">= 0.8.0"
17536
17473
}
···
17551
17488
"node_modules/duplexer3": {
17552
17489
"version": "0.1.5",
17553
17490
"resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz",
17554
17554
-
"integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==",
17555
17555
-
"peer": true
17491
17491
+
"integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA=="
17556
17492
},
17557
17493
"node_modules/eastasianwidth": {
17558
17494
"version": "0.2.0",
···
17578
17514
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
17579
17515
"integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
17580
17516
"dev": true,
17517
17517
+
"peer": true,
17581
17518
"dependencies": {
17582
17519
"jake": "^10.8.5"
17583
17520
},
···
17597
17534
"node_modules/embla-carousel": {
17598
17535
"version": "8.6.0",
17599
17536
"resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz",
17600
17600
-
"integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA=="
17537
17537
+
"integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==",
17538
17538
+
"peer": true
17601
17539
},
17602
17540
"node_modules/embla-carousel-react": {
17603
17541
"version": "8.6.0",
17604
17542
"resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-8.6.0.tgz",
17605
17543
"integrity": "sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA==",
17544
17544
+
"peer": true,
17606
17545
"dependencies": {
17607
17546
"embla-carousel": "8.6.0",
17608
17547
"embla-carousel-reactive-utils": "8.6.0"
···
17701
17640
"integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
17702
17641
"dev": true,
17703
17642
"optional": true,
17704
17704
-
"peer": true,
17705
17643
"dependencies": {
17706
17644
"prr": "~1.0.1"
17707
17645
},
···
18008
17946
"integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==",
18009
17947
"dev": true,
18010
17948
"license": "MIT",
17949
17949
+
"peer": true,
18011
17950
"dependencies": {
18012
17951
"@eslint-community/eslint-utils": "^4.8.0",
18013
17952
"@eslint-community/regexpp": "^4.12.1",
···
18107
18046
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz",
18108
18047
"integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==",
18109
18048
"dev": true,
18049
18049
+
"peer": true,
18110
18050
"bin": {
18111
18051
"eslint-config-prettier": "bin/cli.js"
18112
18052
},
···
18202
18142
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz",
18203
18143
"integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==",
18204
18144
"dev": true,
18145
18145
+
"peer": true,
18205
18146
"dependencies": {
18206
18147
"@rtsao/scc": "^1.1.0",
18207
18148
"array-includes": "^3.1.9",
···
19227
19168
"url": "https://github.com/sponsors/RubenVerborgh"
19228
19169
}
19229
19170
],
19230
19230
-
"peer": true,
19231
19171
"engines": {
19232
19172
"node": ">=4.0"
19233
19173
},
···
19617
19557
"version": "4.4.0",
19618
19558
"resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
19619
19559
"integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
19620
19620
-
"peer": true,
19621
19560
"dependencies": {
19622
19561
"min-document": "^2.19.0",
19623
19562
"process": "^0.11.10"
···
19759
19698
"integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==",
19760
19699
"dev": true,
19761
19700
"license": "MIT",
19701
19701
+
"peer": true,
19762
19702
"dependencies": {
19763
19703
"minimist": "^1.2.5",
19764
19704
"neo-async": "^2.6.2",
···
20231
20171
"integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
20232
20172
"dev": true,
20233
20173
"optional": true,
20234
20234
-
"peer": true,
20235
20174
"bin": {
20236
20175
"image-size": "bin/image-size.js"
20237
20176
},
···
20540
20479
"node_modules/is-buffer": {
20541
20480
"version": "1.1.6",
20542
20481
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
20543
20543
-
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
20544
20544
-
"peer": true
20482
20482
+
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
20545
20483
},
20546
20484
"node_modules/is-bun-module": {
20547
20485
"version": "2.0.0",
···
20673
20611
"node_modules/is-function": {
20674
20612
"version": "1.0.2",
20675
20613
"resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz",
20676
20676
-
"integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==",
20677
20677
-
"peer": true
20614
20614
+
"integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ=="
20678
20615
},
20679
20616
"node_modules/is-generator-fn": {
20680
20617
"version": "2.1.0",
···
20803
20740
"version": "1.0.1",
20804
20741
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
20805
20742
"integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==",
20806
20806
-
"peer": true,
20807
20743
"engines": {
20808
20744
"node": ">=0.10.0"
20809
20745
}
···
21165
21101
"integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
21166
21102
"dev": true,
21167
21103
"license": "MIT",
21104
21104
+
"peer": true,
21168
21105
"dependencies": {
21169
21106
"@jest/core": "^29.7.0",
21170
21107
"@jest/types": "^29.6.3",
···
21875
21812
"integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==",
21876
21813
"dev": true,
21877
21814
"license": "MIT",
21815
21815
+
"peer": true,
21878
21816
"dependencies": {
21879
21817
"cssstyle": "^4.2.1",
21880
21818
"data-urls": "^5.0.0",
···
22108
22046
"version": "1.3.4",
22109
22047
"resolved": "https://registry.npmjs.org/layout-bmfont-text/-/layout-bmfont-text-1.3.4.tgz",
22110
22048
"integrity": "sha512-mceomHZ8W7pSKQhTdLvOe1Im4n37u8xa5Gr0J3KPCHRMO/9o7+goWIOzZcUUd+Xgzy3+22bvoIQ0OaN3LRtgaw==",
22111
22111
-
"peer": true,
22112
22049
"dependencies": {
22113
22050
"as-number": "^1.0.0",
22114
22051
"word-wrapper": "^1.0.7",
···
22195
22132
"integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
22196
22133
"dev": true,
22197
22134
"optional": true,
22198
22198
-
"peer": true,
22199
22135
"dependencies": {
22200
22136
"pify": "^4.0.1",
22201
22137
"semver": "^5.6.0"
···
22210
22146
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
22211
22147
"dev": true,
22212
22148
"optional": true,
22213
22213
-
"peer": true,
22214
22149
"bin": {
22215
22150
"mime": "cli.js"
22216
22151
},
···
22224
22159
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
22225
22160
"dev": true,
22226
22161
"optional": true,
22227
22227
-
"peer": true,
22228
22162
"bin": {
22229
22163
"semver": "bin/semver"
22230
22164
}
···
22235
22169
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
22236
22170
"dev": true,
22237
22171
"optional": true,
22238
22238
-
"peer": true,
22239
22172
"engines": {
22240
22173
"node": ">=0.10.0"
22241
22174
}
···
22596
22529
"version": "1.4.2",
22597
22530
"resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.2.tgz",
22598
22531
"integrity": "sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==",
22599
22599
-
"peer": true,
22600
22532
"dependencies": {
22601
22533
"buffer-equal": "0.0.1",
22602
22534
"mime": "^1.3.4",
···
22612
22544
"version": "1.6.0",
22613
22545
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
22614
22546
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
22615
22615
-
"peer": true,
22616
22547
"bin": {
22617
22548
"mime": "cli.js"
22618
22549
},
···
22640
22571
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
22641
22572
"integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
22642
22573
"dev": true,
22643
22643
-
"license": "MIT"
22574
22574
+
"license": "MIT",
22575
22575
+
"peer": true
22644
22576
},
22645
22577
"node_modules/lodash-es": {
22646
22578
"version": "4.17.23",
···
22845
22777
"version": "0.0.1",
22846
22778
"resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz",
22847
22779
"integrity": "sha512-pJpcfLPnIF/Sk3taPW21G/RQsEEirGaFpCW3oXRwH9dnFHPHNGjNyvh++rdmC2fNqEaTw2MhYJraoJWAHx8kEg==",
22848
22848
-
"peer": true,
22849
22780
"dependencies": {
22850
22781
"once": "~1.3.0"
22851
22782
}
···
22854
22785
"version": "1.3.3",
22855
22786
"resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
22856
22787
"integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==",
22857
22857
-
"peer": true,
22858
22788
"dependencies": {
22859
22789
"wrappy": "1"
22860
22790
}
···
23747
23677
"version": "2.19.2",
23748
23678
"resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.2.tgz",
23749
23679
"integrity": "sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==",
23750
23750
-
"peer": true,
23751
23680
"dependencies": {
23752
23681
"dom-walk": "^0.1.0"
23753
23682
}
···
23978
23907
"integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==",
23979
23908
"dev": true,
23980
23909
"optional": true,
23981
23981
-
"peer": true,
23982
23910
"dependencies": {
23983
23911
"iconv-lite": "^0.6.3",
23984
23912
"sax": "^1.2.4"
···
24007
23935
"node_modules/new-array": {
24008
23936
"version": "1.0.0",
24009
23937
"resolved": "https://registry.npmjs.org/new-array/-/new-array-1.0.0.tgz",
24010
24010
-
"integrity": "sha512-K5AyFYbuHZ4e/ti52y7k18q8UHsS78FlRd85w2Fmsd6AkuLipDihPflKC0p3PN5i8II7+uHxo+CtkLiJDfmS5A==",
24011
24011
-
"peer": true
23938
23938
+
"integrity": "sha512-K5AyFYbuHZ4e/ti52y7k18q8UHsS78FlRd85w2Fmsd6AkuLipDihPflKC0p3PN5i8II7+uHxo+CtkLiJDfmS5A=="
24012
23939
},
24013
23940
"node_modules/next": {
24014
23941
"version": "15.5.14",
···
24016
23943
"integrity": "sha512-M6S+4JyRjmKic2Ssm7jHUPkE6YUJ6lv4507jprsSZLulubz0ihO2E+S4zmQK3JZ2ov81JrugukKU4Tz0ivgqqQ==",
24017
23944
"license": "MIT",
24018
23945
"optional": true,
24019
24019
-
"peer": true,
24020
23946
"dependencies": {
24021
23947
"@next/env": "15.5.14",
24022
23948
"@swc/helpers": "0.5.15",
···
24083
24009
}
24084
24010
],
24085
24011
"optional": true,
24086
24086
-
"peer": true,
24087
24012
"dependencies": {
24088
24013
"nanoid": "^3.3.6",
24089
24014
"picocolors": "^1.0.0",
···
24130
24055
"version": "3.0.0",
24131
24056
"resolved": "https://registry.npmjs.org/nice-color-palettes/-/nice-color-palettes-3.0.0.tgz",
24132
24057
"integrity": "sha512-lL4AjabAAFi313tjrtmgm/bxCRzp4l3vCshojfV/ij3IPdtnRqv6Chcw+SqJUhbe7g3o3BecaqCJYUNLswGBhQ==",
24133
24133
-
"peer": true,
24134
24058
"dependencies": {
24135
24059
"got": "^9.2.2",
24136
24060
"map-limit": "0.0.1",
···
24145
24069
"version": "0.14.0",
24146
24070
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
24147
24071
"integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
24148
24148
-
"peer": true,
24149
24072
"engines": {
24150
24073
"node": ">=6"
24151
24074
}
···
24154
24077
"version": "1.1.2",
24155
24078
"resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
24156
24079
"integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
24157
24157
-
"peer": true,
24158
24080
"dependencies": {
24159
24081
"defer-to-connect": "^1.0.1"
24160
24082
},
···
24166
24088
"version": "6.1.0",
24167
24089
"resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
24168
24090
"integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
24169
24169
-
"peer": true,
24170
24091
"dependencies": {
24171
24092
"clone-response": "^1.0.2",
24172
24093
"get-stream": "^5.1.0",
···
24184
24105
"version": "5.2.0",
24185
24106
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
24186
24107
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
24187
24187
-
"peer": true,
24188
24108
"dependencies": {
24189
24109
"pump": "^3.0.0"
24190
24110
},
···
24199
24119
"version": "2.0.0",
24200
24120
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
24201
24121
"integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
24202
24202
-
"peer": true,
24203
24122
"engines": {
24204
24123
"node": ">=8"
24205
24124
}
···
24208
24127
"version": "3.3.0",
24209
24128
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
24210
24129
"integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
24211
24211
-
"peer": true,
24212
24130
"dependencies": {
24213
24131
"mimic-response": "^1.0.0"
24214
24132
},
···
24219
24137
"node_modules/nice-color-palettes/node_modules/defer-to-connect": {
24220
24138
"version": "1.1.3",
24221
24139
"resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
24222
24222
-
"integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
24223
24223
-
"peer": true
24140
24140
+
"integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ=="
24224
24141
},
24225
24142
"node_modules/nice-color-palettes/node_modules/get-stream": {
24226
24143
"version": "4.1.0",
24227
24144
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
24228
24145
"integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
24229
24229
-
"peer": true,
24230
24146
"dependencies": {
24231
24147
"pump": "^3.0.0"
24232
24148
},
···
24238
24154
"version": "9.6.0",
24239
24155
"resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
24240
24156
"integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
24241
24241
-
"peer": true,
24242
24157
"dependencies": {
24243
24158
"@sindresorhus/is": "^0.14.0",
24244
24159
"@szmarczak/http-timer": "^1.1.2",
···
24259
24174
"node_modules/nice-color-palettes/node_modules/json-buffer": {
24260
24175
"version": "3.0.0",
24261
24176
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
24262
24262
-
"integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==",
24263
24263
-
"peer": true
24177
24177
+
"integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ=="
24264
24178
},
24265
24179
"node_modules/nice-color-palettes/node_modules/keyv": {
24266
24180
"version": "3.1.0",
24267
24181
"resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
24268
24182
"integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
24269
24269
-
"peer": true,
24270
24183
"dependencies": {
24271
24184
"json-buffer": "3.0.0"
24272
24185
}
···
24275
24188
"version": "1.0.1",
24276
24189
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
24277
24190
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
24278
24278
-
"peer": true,
24279
24191
"engines": {
24280
24192
"node": ">=0.10.0"
24281
24193
}
···
24284
24196
"version": "1.0.1",
24285
24197
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
24286
24198
"integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
24287
24287
-
"peer": true,
24288
24199
"engines": {
24289
24200
"node": ">=4"
24290
24201
}
···
24293
24204
"version": "4.5.1",
24294
24205
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
24295
24206
"integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
24296
24296
-
"peer": true,
24297
24207
"engines": {
24298
24208
"node": ">=8"
24299
24209
}
···
24302
24212
"version": "1.1.0",
24303
24213
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
24304
24214
"integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
24305
24305
-
"peer": true,
24306
24215
"engines": {
24307
24216
"node": ">=6"
24308
24217
}
···
24311
24220
"version": "1.0.2",
24312
24221
"resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
24313
24222
"integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==",
24314
24314
-
"peer": true,
24315
24223
"dependencies": {
24316
24224
"lowercase-keys": "^1.0.0"
24317
24225
}
···
24948
24856
"node_modules/parse-bmfont-ascii": {
24949
24857
"version": "1.0.6",
24950
24858
"resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz",
24951
24951
-
"integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==",
24952
24952
-
"peer": true
24859
24859
+
"integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA=="
24953
24860
},
24954
24861
"node_modules/parse-bmfont-binary": {
24955
24862
"version": "1.0.6",
24956
24863
"resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz",
24957
24957
-
"integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==",
24958
24958
-
"peer": true
24864
24864
+
"integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA=="
24959
24865
},
24960
24866
"node_modules/parse-bmfont-xml": {
24961
24867
"version": "1.1.6",
24962
24868
"resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz",
24963
24869
"integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==",
24964
24964
-
"peer": true,
24965
24870
"dependencies": {
24966
24871
"xml-parse-from-string": "^1.0.0",
24967
24872
"xml2js": "^0.5.0"
···
24993
24898
"node_modules/parse-headers": {
24994
24899
"version": "2.0.6",
24995
24900
"resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.6.tgz",
24996
24996
-
"integrity": "sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==",
24997
24997
-
"peer": true
24901
24901
+
"integrity": "sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A=="
24998
24902
},
24999
24903
"node_modules/parse-json": {
25000
24904
"version": "5.2.0",
···
25175
25079
"resolved": "https://registry.npmjs.org/pg/-/pg-8.16.3.tgz",
25176
25080
"integrity": "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==",
25177
25081
"dev": true,
25082
25082
+
"peer": true,
25178
25083
"dependencies": {
25179
25084
"pg-connection-string": "^2.9.1",
25180
25085
"pg-pool": "^3.10.1",
···
25261
25166
"resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz",
25262
25167
"integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==",
25263
25168
"deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
25264
25264
-
"peer": true,
25265
25169
"dependencies": {
25266
25170
"centra": "^2.7.0"
25267
25171
},
···
25293
25197
"integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
25294
25198
"dev": true,
25295
25199
"optional": true,
25296
25296
-
"peer": true,
25297
25200
"engines": {
25298
25201
"node": ">=6"
25299
25202
}
···
25981
25884
"integrity": "sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==",
25982
25885
"devOptional": true,
25983
25886
"license": "Apache-2.0",
25887
25887
+
"peer": true,
25984
25888
"dependencies": {
25985
25889
"playwright-core": "1.59.1"
25986
25890
},
···
26071
25975
}
26072
25976
],
26073
25977
"license": "MIT",
25978
25978
+
"peer": true,
26074
25979
"dependencies": {
26075
25980
"nanoid": "^3.3.11",
26076
25981
"picocolors": "^1.1.1",
···
26245
26150
"version": "3.4.7",
26246
26151
"resolved": "https://registry.npmjs.org/postgres/-/postgres-3.4.7.tgz",
26247
26152
"integrity": "sha512-Jtc2612XINuBjIl/QTWsV5UvE8UHuNblcO3vVADSrKsrc6RqGX6lOW1cEo3CM2v0XG4Nat8nI+YM7/f26VxXLw==",
26153
26153
+
"peer": true,
26248
26154
"engines": {
26249
26155
"node": ">=12"
26250
26156
},
···
26293
26199
"resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.351.4.tgz",
26294
26200
"integrity": "sha512-vLSYHMN31FGs1cTJ/SCW0aCLiV6K6ZW63Q1K3B16iWRBVTwz/kg6sJZi6Z/oFeKOuy9I5K/LbVLDBCaTTlcESA==",
26295
26201
"dev": true,
26202
26202
+
"peer": true,
26296
26203
"dependencies": {
26297
26204
"@opentelemetry/api": "^1.9.0",
26298
26205
"@opentelemetry/api-logs": "^0.208.0",
···
26386
26293
"version": "2.0.0",
26387
26294
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
26388
26295
"integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==",
26389
26389
-
"peer": true,
26390
26296
"engines": {
26391
26297
"node": ">=4"
26392
26298
}
···
26396
26302
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz",
26397
26303
"integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
26398
26304
"dev": true,
26305
26305
+
"peer": true,
26399
26306
"bin": {
26400
26307
"prettier": "bin/prettier.cjs"
26401
26308
},
···
26588
26495
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
26589
26496
"integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
26590
26497
"dev": true,
26591
26591
-
"optional": true,
26592
26592
-
"peer": true
26498
26498
+
"optional": true
26593
26499
},
26594
26500
"node_modules/pstree.remy": {
26595
26501
"version": "1.1.8",
···
26649
26555
"version": "2.0.1",
26650
26556
"resolved": "https://registry.npmjs.org/quad-indices/-/quad-indices-2.0.1.tgz",
26651
26557
"integrity": "sha512-6jtmCsEbGAh5npThXrBaubbTjPcF0rMbn57XCJVI7LkW8PUT56V+uIrRCCWCn85PSgJC9v8Pm5tnJDwmOBewvA==",
26652
26652
-
"peer": true,
26653
26558
"dependencies": {
26654
26559
"an-array": "^1.0.0",
26655
26560
"dtype": "^2.0.0",
···
26769
26674
"version": "19.1.0",
26770
26675
"resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
26771
26676
"integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==",
26677
26677
+
"peer": true,
26772
26678
"engines": {
26773
26679
"node": ">=0.10.0"
26774
26680
}
···
26825
26731
"version": "19.1.0",
26826
26732
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
26827
26733
"integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==",
26734
26734
+
"peer": true,
26828
26735
"dependencies": {
26829
26736
"scheduler": "^0.26.0"
26830
26737
},
···
27561
27468
"integrity": "sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==",
27562
27469
"dev": true,
27563
27470
"license": "MIT",
27471
27471
+
"peer": true,
27564
27472
"dependencies": {
27565
27473
"@types/estree": "1.0.8"
27566
27474
},
···
27764
27672
"resolved": "https://registry.npmjs.org/sass/-/sass-1.93.2.tgz",
27765
27673
"integrity": "sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==",
27766
27674
"devOptional": true,
27675
27675
+
"peer": true,
27767
27676
"dependencies": {
27768
27677
"chokidar": "^4.0.0",
27769
27678
"immutable": "^5.0.2",
···
28353
28262
"integrity": "sha512-vbSz7g/1rGMC1uAULqMZjALkIuLu2QABqfhRYhyr/11kzyesi+vAmwyJLukZP1FfecxGOgMwOh6GS0YsGpHAvQ==",
28354
28263
"dev": true,
28355
28264
"license": "MIT",
28265
28265
+
"peer": true,
28356
28266
"dependencies": {
28357
28267
"@storybook/global": "^5.0.0",
28358
28268
"@storybook/icons": "^2.0.1",
···
29363
29273
"node_modules/super-animejs": {
29364
29274
"version": "3.1.0",
29365
29275
"resolved": "https://registry.npmjs.org/super-animejs/-/super-animejs-3.1.0.tgz",
29366
29366
-
"integrity": "sha512-6MFAFJDRuvwkovxQZPruuyHinTa4rgj4hNLOndjcYYhZLckoXtVRY9rJPuq8p6c/tgZJrFYEAYAfJ2/hhNtUCA==",
29367
29367
-
"peer": true
29276
29276
+
"integrity": "sha512-6MFAFJDRuvwkovxQZPruuyHinTa4rgj4hNLOndjcYYhZLckoXtVRY9rJPuq8p6c/tgZJrFYEAYAfJ2/hhNtUCA=="
29368
29277
},
29369
29278
"node_modules/superagent": {
29370
29279
"version": "10.2.3",
···
29428
29337
"resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.2.tgz",
29429
29338
"integrity": "sha512-My2tytF2e2NnHSpn2M7/3VdXT4JdTglYVUuSuK/mXL2XtulPYbeBfl8Dm1QiaKRn0zoULRnL+EtfZHHP0k4H3A==",
29430
29339
"devOptional": true,
29340
29340
+
"peer": true,
29431
29341
"dependencies": {
29432
29342
"@ampproject/remapping": "^2.2.1",
29433
29343
"@jridgewell/sourcemap-codec": "^1.4.15",
···
29678
29588
"node_modules/three": {
29679
29589
"version": "0.183.2",
29680
29590
"resolved": "https://registry.npmjs.org/three/-/three-0.183.2.tgz",
29681
29681
-
"integrity": "sha512-di3BsL2FEQ1PA7Hcvn4fyJOlxRRgFYBpMTcyOgkwJIaDOdJMebEFPA+t98EvjuljDx4hNulAGwF6KIjtwI5jgQ=="
29591
29591
+
"integrity": "sha512-di3BsL2FEQ1PA7Hcvn4fyJOlxRRgFYBpMTcyOgkwJIaDOdJMebEFPA+t98EvjuljDx4hNulAGwF6KIjtwI5jgQ==",
29592
29592
+
"peer": true
29682
29593
},
29683
29594
"node_modules/three-bmfont-text": {
29684
29595
"version": "3.0.0",
29685
29596
"resolved": "git+ssh://git@github.com/dmarcos/three-bmfont-text.git#eed4878795be9b3e38cf6aec6b903f56acd1f695",
29686
29597
"integrity": "sha512-JcaccaRCcK/A4c0igPQ9RCw91cil7pLhogDVmrThEvP20B/vbFaaNlmn3frF7pWeo3lATUiNrxVfgxm9qfr9GA==",
29687
29687
-
"peer": true,
29688
29598
"dependencies": {
29689
29599
"array-shuffle": "^1.0.1",
29690
29600
"layout-bmfont-text": "^1.2.0",
···
29848
29758
"version": "1.0.0",
29849
29759
"resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
29850
29760
"integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
29851
29851
-
"peer": true,
29852
29761
"engines": {
29853
29762
"node": ">=6"
29854
29763
}
···
30866
30775
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
30867
30776
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
30868
30777
"dev": true,
30778
30778
+
"peer": true,
30869
30779
"bin": {
30870
30780
"tsc": "bin/tsc",
30871
30781
"tsserver": "bin/tsserver"
···
31193
31103
"version": "3.0.0",
31194
31104
"resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
31195
31105
"integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==",
31196
31196
-
"peer": true,
31197
31106
"dependencies": {
31198
31107
"prepend-http": "^2.0.0"
31199
31108
},
···
31348
31257
"integrity": "sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw==",
31349
31258
"dev": true,
31350
31259
"license": "MIT",
31260
31260
+
"peer": true,
31351
31261
"dependencies": {
31352
31262
"lightningcss": "^1.32.0",
31353
31263
"picomatch": "^4.0.4",
···
31426
31336
"integrity": "sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg==",
31427
31337
"dev": true,
31428
31338
"license": "MIT",
31339
31339
+
"peer": true,
31429
31340
"dependencies": {
31430
31341
"@vitest/expect": "4.1.5",
31431
31342
"@vitest/mocker": "4.1.5",
···
31552
31463
"resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz",
31553
31464
"integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
31554
31465
"devOptional": true,
31466
31466
+
"peer": true,
31555
31467
"dependencies": {
31556
31468
"@vue/compiler-dom": "3.3.4",
31557
31469
"@vue/compiler-sfc": "3.3.4",
···
31796
31708
"node_modules/word-wrapper": {
31797
31709
"version": "1.0.7",
31798
31710
"resolved": "https://registry.npmjs.org/word-wrapper/-/word-wrapper-1.0.7.tgz",
31799
31799
-
"integrity": "sha512-VOPBFCm9b6FyYKQYfn9AVn2dQvdR/YOVFV6IBRA1TBMJWKffvhEX1af6FMGrttILs2Q9ikCRhLqkbY2weW6dOQ==",
31800
31800
-
"peer": true
31711
31711
+
"integrity": "sha512-VOPBFCm9b6FyYKQYfn9AVn2dQvdR/YOVFV6IBRA1TBMJWKffvhEX1af6FMGrttILs2Q9ikCRhLqkbY2weW6dOQ=="
31801
31712
},
31802
31713
"node_modules/wordwrap": {
31803
31714
"version": "1.0.0",
···
31984
31895
"version": "2.6.0",
31985
31896
"resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz",
31986
31897
"integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==",
31987
31987
-
"peer": true,
31988
31898
"dependencies": {
31989
31899
"global": "~4.4.0",
31990
31900
"is-function": "^1.0.1",
···
32004
31914
"node_modules/xml-parse-from-string": {
32005
31915
"version": "1.0.1",
32006
31916
"resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz",
32007
32007
-
"integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==",
32008
32008
-
"peer": true
31917
31917
+
"integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g=="
32009
31918
},
32010
31919
"node_modules/xml2js": {
32011
31920
"version": "0.5.0",
32012
31921
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
32013
31922
"integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
32014
32014
-
"peer": true,
32015
31923
"dependencies": {
32016
31924
"sax": ">=0.6.0",
32017
31925
"xmlbuilder": "~11.0.0"
···
32024
31932
"version": "11.0.1",
32025
31933
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
32026
31934
"integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
32027
32027
-
"peer": true,
32028
31935
"engines": {
32029
31936
"node": ">=4.0"
32030
31937
}
···
32196
32103
"version": "3.25.76",
32197
32104
"resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
32198
32105
"integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
32106
32106
+
"peer": true,
32199
32107
"funding": {
32200
32108
"url": "https://github.com/sponsors/colinhacks"
32201
32109
}
···
32392
32300
"resolved": "https://registry.npmjs.org/@mantine/core/-/core-9.0.0.tgz",
32393
32301
"integrity": "sha512-GUUXlf+4uDpRu5iZ1PFy1NmgG7ttI+1I6VTw3v/b7N1jwOUhARwL1moGjPMjo3Eie3tHdVOCiVMYAvhlQ1GI5Q==",
32394
32302
"license": "MIT",
32303
32303
+
"peer": true,
32395
32304
"dependencies": {
32396
32305
"@floating-ui/react": "^0.27.19",
32397
32306
"clsx": "^2.1.1",
···
32455
32364
"resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-9.0.0.tgz",
32456
32365
"integrity": "sha512-TKcz+k0JH/jtblBfwOw/vXBX2EpJO66psJ5ZVmdDhwc6vbHDsvY6oYN8ynt9TfRn/eHZXsEmLPNj+wuGtWy4BA==",
32457
32366
"license": "MIT",
32367
32367
+
"peer": true,
32458
32368
"peerDependencies": {
32459
32369
"react": "^19.2.0"
32460
32370
}
···
33047
32957
"resolved": "https://registry.npmjs.org/react/-/react-19.2.5.tgz",
33048
32958
"integrity": "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==",
33049
32959
"license": "MIT",
32960
32960
+
"peer": true,
33050
32961
"engines": {
33051
32962
"node": ">=0.10.0"
33052
32963
}
···
33056
32967
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.5.tgz",
33057
32968
"integrity": "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==",
33058
32969
"license": "MIT",
32970
32970
+
"peer": true,
33059
32971
"dependencies": {
33060
32972
"scheduler": "^0.27.0"
33061
32973
},
+59
-46
src/webapp/features/cards/components/urlCardActions/UrlCardActions.tsx
View file
Reviewed
···
6
6
type User,
7
7
CollectionAccessType,
8
8
} from '@/api-client';
9
9
-
import { ActionIcon, Button, CopyButton, Group, Menu } from '@mantine/core';
9
9
+
import { ActionIcon, Button, Collapse, CopyButton, Group, Menu } from '@mantine/core';
10
10
import { Fragment, useState } from 'react';
11
11
import { FiPlus } from 'react-icons/fi';
12
12
import { BsThreeDots, BsTrash2Fill } from 'react-icons/bs';
···
14
14
import RemoveCardFromLibraryModal from '../removeCardFromLibraryModal/RemoveCardFromLibraryModal';
15
15
import AddCardToModal from '@/features/cards/components/addCardToModal/AddCardToModal';
16
16
import { MdIosShare, MdOutlineStickyNote2 } from 'react-icons/md';
17
17
-
import NoteCardModal from '@/features/notes/components/noteCardModal/NoteCardModal';
17
17
+
import NoteCardInline from '@/features/notes/components/noteCardInline/NoteCardInline';
18
18
import { useAuth } from '@/hooks/useAuth';
19
19
+
import { useRouter } from 'next/navigation';
19
20
import { IoMdCheckmark } from 'react-icons/io';
20
21
import { notifications } from '@mantine/notifications';
21
22
import { BiCopy } from 'react-icons/bi';
···
65
66
66
67
const canRemoveFromLibrary = isAuthor && props.urlIsInLibrary;
67
68
68
68
-
const [showNoteModal, setShowNoteModal] = useState(false);
69
69
+
const [showNote, setShowNote] = useState(false);
69
70
const [showRemoveFromCollectionModal, setShowRemoveFromCollectionModal] =
70
71
useState(false);
71
72
const [showRemoveFromLibaryModal, setShowRemoveFromLibraryModal] =
···
74
75
const [showAddConnectionModal, setShowAddConnectionModal] = useState(false);
75
76
76
77
const { trigger } = useWebHaptics();
77
77
-
78
78
-
if (!isAuthenticated) {
79
79
-
return null;
80
80
-
}
78
78
+
const router = useRouter();
81
79
82
80
return (
83
81
<Fragment>
82
82
+
{props.note && (
83
83
+
<Collapse expanded={showNote}>
84
84
+
<NoteCardInline
85
85
+
note={props.note}
86
86
+
cardContent={props.cardContent}
87
87
+
cardAuthor={props.cardAuthor}
88
88
+
isOwner={isAuthenticated && isAuthor}
89
89
+
onClose={() => setShowNote(false)}
90
90
+
/>
91
91
+
</Collapse>
92
92
+
)}
84
93
<Group justify="space-between">
85
94
<Group gap={'xs'}>
86
95
<Button
···
99
108
}
100
109
onClick={(e) => {
101
110
e.stopPropagation();
111
111
+
if (!isAuthenticated) {
112
112
+
router.push('/login');
113
113
+
return;
114
114
+
}
102
115
trigger();
103
116
setShowAddToModal(true);
104
117
}}
···
124
137
}
125
138
onClick={(e) => {
126
139
e.stopPropagation();
140
140
+
if (!isAuthenticated) {
141
141
+
router.push('/login');
142
142
+
return;
143
143
+
}
127
144
trigger();
128
145
setShowAddConnectionModal(true);
129
146
}}
···
142
159
radius={'xl'}
143
160
onClick={(e) => {
144
161
e.stopPropagation();
145
145
-
setShowNoteModal(true);
162
162
+
setShowNote((prev) => !prev);
146
163
}}
147
164
>
148
165
<MdOutlineStickyNote2 />
···
228
245
</Menu>
229
246
</Group>
230
247
231
231
-
<AddCardToModal
232
232
-
isOpen={showAddToModal}
233
233
-
onClose={() => setShowAddToModal(false)}
234
234
-
url={props.cardContent.url}
235
235
-
cardContent={props.cardContent}
236
236
-
cardId={props.id}
237
237
-
note={props.note?.text}
238
238
-
isInYourLibrary={props.urlIsInLibrary}
239
239
-
urlLibraryCount={props.urlLibraryCount}
240
240
-
viaCardId={props.viaCardId}
241
241
-
analyticsContext={props.analyticsContext}
242
242
-
/>
243
243
-
244
244
-
<AddConnectionModal
245
245
-
isOpen={showAddConnectionModal}
246
246
-
onClose={() => setShowAddConnectionModal(false)}
247
247
-
sourceUrl={props.cardContent.url}
248
248
-
targetUrl={props.semblePageUrl}
249
249
-
/>
248
248
+
{isAuthenticated && (
249
249
+
<>
250
250
+
<AddCardToModal
251
251
+
isOpen={showAddToModal}
252
252
+
onClose={() => setShowAddToModal(false)}
253
253
+
url={props.cardContent.url}
254
254
+
cardContent={props.cardContent}
255
255
+
cardId={props.id}
256
256
+
note={props.note?.text}
257
257
+
isInYourLibrary={props.urlIsInLibrary}
258
258
+
urlLibraryCount={props.urlLibraryCount}
259
259
+
viaCardId={props.viaCardId}
260
260
+
analyticsContext={props.analyticsContext}
261
261
+
/>
250
262
251
251
-
<NoteCardModal
252
252
-
isOpen={showNoteModal}
253
253
-
onClose={() => setShowNoteModal(false)}
254
254
-
note={props.note}
255
255
-
cardContent={props.cardContent}
256
256
-
cardAuthor={props.cardAuthor}
257
257
-
/>
263
263
+
<AddConnectionModal
264
264
+
isOpen={showAddConnectionModal}
265
265
+
onClose={() => setShowAddConnectionModal(false)}
266
266
+
sourceUrl={props.cardContent.url}
267
267
+
targetUrl={props.semblePageUrl}
268
268
+
/>
258
269
259
259
-
{props.currentCollection && (
260
260
-
<RemoveCardFromCollectionModal
261
261
-
isOpen={showRemoveFromCollectionModal}
262
262
-
onClose={() => setShowRemoveFromCollectionModal(false)}
263
263
-
cardId={props.id}
264
264
-
collectionId={props.currentCollection.id}
265
265
-
/>
270
270
+
{props.currentCollection && (
271
271
+
<RemoveCardFromCollectionModal
272
272
+
isOpen={showRemoveFromCollectionModal}
273
273
+
onClose={() => setShowRemoveFromCollectionModal(false)}
274
274
+
cardId={props.id}
275
275
+
collectionId={props.currentCollection.id}
276
276
+
/>
277
277
+
)}
278
278
+
<RemoveCardFromLibraryModal
279
279
+
isOpen={showRemoveFromLibaryModal}
280
280
+
onClose={() => setShowRemoveFromLibraryModal(false)}
281
281
+
cardId={props.id}
282
282
+
/>
283
283
+
</>
266
284
)}
267
267
-
<RemoveCardFromLibraryModal
268
268
-
isOpen={showRemoveFromLibaryModal}
269
269
-
onClose={() => setShowRemoveFromLibraryModal(false)}
270
270
-
cardId={props.id}
271
271
-
/>
272
285
</Fragment>
273
286
);
274
287
}
+9
src/webapp/features/notes/components/noteCardInline/NoteCardInline.module.css
View file
Reviewed
···
1
1
+
.root {
2
2
+
@mixin light {
3
3
+
background-color: var(--mantine-color-gray-1);
4
4
+
}
5
5
+
6
6
+
@mixin dark {
7
7
+
background-color: var(--mantine-color-dark-4);
8
8
+
}
9
9
+
}
+288
src/webapp/features/notes/components/noteCardInline/NoteCardInline.tsx
View file
Reviewed
···
1
1
+
'use client';
2
2
+
3
3
+
import {
4
4
+
ActionIcon,
5
5
+
Anchor,
6
6
+
Button,
7
7
+
Card,
8
8
+
Flex,
9
9
+
Group,
10
10
+
Input,
11
11
+
Menu,
12
12
+
Stack,
13
13
+
Text,
14
14
+
Textarea,
15
15
+
VisuallyHidden,
16
16
+
} from '@mantine/core';
17
17
+
import { IoEyeOffOutline } from 'react-icons/io5';
18
18
+
import { BsThreeDots, BsTrash2Fill } from 'react-icons/bs';
19
19
+
import { MdOutlineEdit } from 'react-icons/md';
20
20
+
import { notifications } from '@mantine/notifications';
21
21
+
import type { UrlCard, User } from '@/api-client';
22
22
+
import { useState } from 'react';
23
23
+
import { BsExclamation } from 'react-icons/bs';
24
24
+
import { LinkAvatar } from '@/components/link/MantineLink';
25
25
+
import { isBotAccount } from '@/features/platforms/bluesky/lib/utils/account';
26
26
+
import BotLabel from '@/features/profile/components/botLabel/BotLabel';
27
27
+
import useUpdateNote from '../../lib/mutations/useUpdateNote';
28
28
+
import useRemoveCardFromLibrary from '@/features/cards/lib/mutations/useRemoveCardFromLibrary';
29
29
+
import styles from './NoteCardInline.module.css';
30
30
+
31
31
+
interface Props {
32
32
+
note: UrlCard['note'];
33
33
+
cardContent: UrlCard['cardContent'];
34
34
+
cardAuthor?: User;
35
35
+
isOwner: boolean;
36
36
+
onClose: () => void;
37
37
+
}
38
38
+
39
39
+
export default function NoteCardInline(props: Props) {
40
40
+
const [noteText, setNoteText] = useState(props.note?.text ?? '');
41
41
+
const [editMode, setEditMode] = useState(false);
42
42
+
const [showDeleteWarning, setShowDeleteWarning] = useState(false);
43
43
+
const MAX_NOTE_LENGTH = 500;
44
44
+
45
45
+
const removeNote = useRemoveCardFromLibrary();
46
46
+
const updateNote = useUpdateNote();
47
47
+
48
48
+
const handleDeleteNote = () => {
49
49
+
if (!props.isOwner || !props.note) return;
50
50
+
51
51
+
removeNote.mutate(props.note.id, {
52
52
+
onError: () => {
53
53
+
notifications.show({
54
54
+
message: 'Could not delete note',
55
55
+
position: 'top-center',
56
56
+
color: 'red',
57
57
+
title: 'Error',
58
58
+
loading: false,
59
59
+
autoClose: false,
60
60
+
withCloseButton: true,
61
61
+
icon: <BsExclamation />,
62
62
+
});
63
63
+
},
64
64
+
onSettled: () => {
65
65
+
props.onClose();
66
66
+
},
67
67
+
});
68
68
+
};
69
69
+
70
70
+
const handleUpdateNote = () => {
71
71
+
if (!props.note || !noteText) {
72
72
+
props.onClose();
73
73
+
return;
74
74
+
}
75
75
+
76
76
+
if (props.note.text === noteText) {
77
77
+
setEditMode(false);
78
78
+
return;
79
79
+
}
80
80
+
81
81
+
updateNote.mutate(
82
82
+
{ cardId: props.note.id, note: noteText },
83
83
+
{
84
84
+
onError: () => {
85
85
+
notifications.show({
86
86
+
message: 'Could not update note',
87
87
+
position: 'top-center',
88
88
+
color: 'red',
89
89
+
title: 'Error',
90
90
+
loading: false,
91
91
+
autoClose: false,
92
92
+
withCloseButton: true,
93
93
+
icon: <BsExclamation />,
94
94
+
});
95
95
+
},
96
96
+
onSettled: () => {
97
97
+
setEditMode(false);
98
98
+
},
99
99
+
},
100
100
+
);
101
101
+
};
102
102
+
103
103
+
if (editMode) {
104
104
+
return (
105
105
+
<Card
106
106
+
className={styles.root}
107
107
+
radius="md"
108
108
+
p="sm"
109
109
+
onClick={(e) => e.stopPropagation()}
110
110
+
>
111
111
+
<Stack gap={'xs'}>
112
112
+
<Stack gap={0}>
113
113
+
<Flex justify="space-between">
114
114
+
<Input.Label size="md" htmlFor="note-inline">
115
115
+
Your note
116
116
+
</Input.Label>
117
117
+
<Text c={'gray'} aria-hidden>
118
118
+
{noteText.length} / {MAX_NOTE_LENGTH}
119
119
+
</Text>
120
120
+
</Flex>
121
121
+
<Textarea
122
122
+
id="note-inline"
123
123
+
placeholder="Add a note about this card"
124
124
+
variant="filled"
125
125
+
size="md"
126
126
+
autosize
127
127
+
minRows={3}
128
128
+
maxRows={8}
129
129
+
maxLength={MAX_NOTE_LENGTH}
130
130
+
value={noteText}
131
131
+
onChange={(e) => setNoteText(e.currentTarget.value)}
132
132
+
/>
133
133
+
<VisuallyHidden id="note-inline-char-remaining" aria-live="polite">
134
134
+
{`${MAX_NOTE_LENGTH - noteText.length} characters remaining`}
135
135
+
</VisuallyHidden>
136
136
+
</Stack>
137
137
+
<Group gap={'xs'} grow>
138
138
+
<Button
139
139
+
variant="light"
140
140
+
color="gray"
141
141
+
onClick={() => {
142
142
+
setEditMode(false);
143
143
+
setNoteText(props.note?.text ?? '');
144
144
+
}}
145
145
+
>
146
146
+
Cancel
147
147
+
</Button>
148
148
+
<Button
149
149
+
onClick={handleUpdateNote}
150
150
+
loading={updateNote.isPending}
151
151
+
disabled={noteText.trimEnd() === ''}
152
152
+
>
153
153
+
Save
154
154
+
</Button>
155
155
+
</Group>
156
156
+
</Stack>
157
157
+
</Card>
158
158
+
);
159
159
+
}
160
160
+
161
161
+
return (
162
162
+
<Card
163
163
+
className={styles.root}
164
164
+
radius="md"
165
165
+
p="sm"
166
166
+
onClick={(e) => e.stopPropagation()}
167
167
+
>
168
168
+
<Stack gap={'xs'}>
169
169
+
<Group justify="space-between" wrap="nowrap">
170
170
+
{props.cardAuthor ? (
171
171
+
<Group gap={'5'}>
172
172
+
<LinkAvatar
173
173
+
href={`/profile/${props.cardAuthor.handle}`}
174
174
+
src={props.cardAuthor.avatarUrl?.replace(
175
175
+
'avatar',
176
176
+
'avatar_thumbnail',
177
177
+
)}
178
178
+
alt={`${props.cardAuthor.handle}'s avatar`}
179
179
+
size={'xs'}
180
180
+
radius={'sm'}
181
181
+
/>
182
182
+
<Anchor
183
183
+
href={`/profile/${props.cardAuthor.handle}`}
184
184
+
fz={'xs'}
185
185
+
fw={600}
186
186
+
c={'bright'}
187
187
+
underline="never"
188
188
+
onClick={(e) => e.stopPropagation()}
189
189
+
>
190
190
+
{props.cardAuthor.name || `@${props.cardAuthor.handle}`}
191
191
+
</Anchor>
192
192
+
{isBotAccount(props.cardAuthor) && <BotLabel />}
193
193
+
</Group>
194
194
+
) : (
195
195
+
<span />
196
196
+
)}
197
197
+
<Group gap={'xs'}>
198
198
+
{props.isOwner && (
199
199
+
<Menu shadow="sm" position="bottom-end">
200
200
+
<Menu.Target>
201
201
+
<ActionIcon
202
202
+
variant="light"
203
203
+
color="gray"
204
204
+
size="md"
205
205
+
radius="xl"
206
206
+
onClick={(e) => e.stopPropagation()}
207
207
+
>
208
208
+
<BsThreeDots size={18} />
209
209
+
</ActionIcon>
210
210
+
</Menu.Target>
211
211
+
<Menu.Dropdown onClick={(e) => e.stopPropagation()}>
212
212
+
<Menu.Item
213
213
+
leftSection={<MdOutlineEdit size={14} />}
214
214
+
onClick={() => setEditMode(true)}
215
215
+
>
216
216
+
Edit note
217
217
+
</Menu.Item>
218
218
+
<Menu.Item
219
219
+
color="red"
220
220
+
leftSection={<BsTrash2Fill size={14} />}
221
221
+
onClick={() => setShowDeleteWarning(true)}
222
222
+
>
223
223
+
Delete note
224
224
+
</Menu.Item>
225
225
+
</Menu.Dropdown>
226
226
+
</Menu>
227
227
+
)}
228
228
+
<ActionIcon
229
229
+
variant="light"
230
230
+
color="gray"
231
231
+
size="md"
232
232
+
radius="xl"
233
233
+
onClick={(e) => {
234
234
+
e.stopPropagation();
235
235
+
props.onClose();
236
236
+
}}
237
237
+
>
238
238
+
<IoEyeOffOutline size={18} />
239
239
+
</ActionIcon>
240
240
+
</Group>
241
241
+
</Group>
242
242
+
243
243
+
{props.note && (
244
244
+
<Text
245
245
+
fw={500}
246
246
+
fz={'sm'}
247
247
+
fs={'italic'}
248
248
+
c={'gray'}
249
249
+
style={{ cursor: 'pointer' }}
250
250
+
onClick={(e) => {
251
251
+
e.stopPropagation();
252
252
+
props.onClose();
253
253
+
}}
254
254
+
>
255
255
+
{props.note.text}
256
256
+
</Text>
257
257
+
)}
258
258
+
259
259
+
{showDeleteWarning && (
260
260
+
<Group justify="space-between" gap={'xs'}>
261
261
+
<Text fz="sm">Delete note?</Text>
262
262
+
<Group gap={'xs'}>
263
263
+
<Button
264
264
+
color="red"
265
265
+
size="xs"
266
266
+
onClick={handleDeleteNote}
267
267
+
loading={removeNote.isPending}
268
268
+
>
269
269
+
Delete
270
270
+
</Button>
271
271
+
<Button
272
272
+
variant="light"
273
273
+
color="gray"
274
274
+
size="xs"
275
275
+
onClick={(e) => {
276
276
+
e.stopPropagation();
277
277
+
setShowDeleteWarning(false);
278
278
+
}}
279
279
+
>
280
280
+
Cancel
281
281
+
</Button>
282
282
+
</Group>
283
283
+
</Group>
284
284
+
)}
285
285
+
</Stack>
286
286
+
</Card>
287
287
+
);
288
288
+
}