From dad9464ed16d219a6860b8d4ce1e72f2c23c32d4 Mon Sep 17 00:00:00 2001 From: SenadiF <155451608+SenadiF@users.noreply.github.com> Date: Tue, 14 Oct 2025 09:49:45 +0530 Subject: [PATCH 01/62] Added materialized views Refactored views and created materialized views for better performance and organization. --- Views.txt | 101 +++++++++++++++++++++++++++--------------------------- 1 file changed, 51 insertions(+), 50 deletions(-) diff --git a/Views.txt b/Views.txt index 0c3a86f..fa5b265 100644 --- a/Views.txt +++ b/Views.txt @@ -1,7 +1,4 @@ ---Customer & saving accounts owned by them - - -CREATE OR REPLACE VIEW custome_owned_accounts AS +CREATE OR REPLACE VIEW customer_owned_accounts AS SELECT c.customer_id, c.name AS customer_name, @@ -15,22 +12,7 @@ JOIN AccountHolder ah ON c.customer_id = ah.customer_id JOIN SavingsAccount sa ON ah.saving_account_id = sa.saving_account_id JOIN SavingsAccount_Plans sp ON sa.s_plan_id = sp.s_plan_id; --- Joint Accounts with its holders - -CREATE OR REPLACE VIEW joint_accounts_holders AS -SELECT - sa.saving_account_id, - sa.balance, - sa.status AS account_status, - string_agg(c.name, ', ') AS joint_customers -FROM SavingsAccount sa -JOIN AccountHolder ah ON sa.saving_account_id = ah.saving_account_id -JOIN Customer c ON ah.customer_id = c.customer_id -GROUP BY sa.saving_account_id, sa.balance, sa.status -HAVING COUNT(ah.customer_id) > 1; - ---vw_account_transactions – transactions per account - +-- Account transactions CREATE OR REPLACE VIEW vw_account_transactions AS SELECT sa.saving_account_id, @@ -44,24 +26,7 @@ FROM Transactions t JOIN AccountHolder ah ON t.holder_id = ah.holder_id JOIN SavingsAccount sa ON ah.saving_account_id = sa.saving_account_id; - ---vw_agent_transactions – total transactions per agent (employee) - -CREATE OR REPLACE VIEW vw_agent_transactions AS -SELECT - e.employee_id, - e.name AS agent_name, - COUNT(t.transaction_id) AS total_transactions, - SUM(t.amount) AS total_value -FROM Employee e -JOIN Customer c ON e.employee_id = c.employee_id -JOIN AccountHolder ah ON c.customer_id = ah.customer_id -JOIN Transactions t ON ah.holder_id = t.holder_id -GROUP BY e.employee_id, e.name; - - ---vw_active_fds – list of active FDs - +-- Active Fixed Deposits CREATE OR REPLACE VIEW vw_active_fds AS SELECT fd.fixed_deposit_id, @@ -76,34 +41,70 @@ SELECT FROM FixedDeposit fd WHERE fd.status = TRUE; ---vw_monthly_interest_summary – monthly interest per account type +-- Joint Accounts & Holders +CREATE MATERIALIZED VIEW joint_accounts_holders_mv AS +SELECT + sa.saving_account_id, + sa.balance, + sa.status AS account_status, + string_agg(c.name, ', ') AS joint_customers +FROM SavingsAccount sa +JOIN AccountHolder ah ON sa.saving_account_id = ah.saving_account_id +JOIN Customer c ON ah.customer_id = c.customer_id +GROUP BY sa.saving_account_id, sa.balance, sa.status +HAVING COUNT(ah.customer_id) > 1 +WITH DATA; + -CREATE OR REPLACE VIEW vw_monthly_interest_summary AS + +-- Agent Transaction Summary +CREATE MATERIALIZED VIEW vw_agent_transactions_mv AS +SELECT + e.employee_id, + e.name AS agent_name, + COUNT(t.transaction_id) AS total_transactions, + SUM(t.amount) AS total_value +FROM Employee e +JOIN Customer c ON e.employee_id = c.employee_id +JOIN AccountHolder ah ON c.customer_id = ah.customer_id +JOIN Transactions t ON ah.holder_id = t.holder_id +GROUP BY e.employee_id, e.name +WITH DATA; + + + +-- Monthly Interest Summary +CREATE MATERIALIZED VIEW vw_monthly_interest_summary_mv AS SELECT sp.plan_name, sa.saving_account_id, + DATE_TRUNC('month', t.timestamp) AS month, SUM(t.amount) AS monthly_interest FROM Transactions t JOIN AccountHolder ah ON t.holder_id = ah.holder_id JOIN SavingsAccount sa ON ah.saving_account_id = sa.saving_account_id JOIN SavingsAccount_Plans sp ON sa.s_plan_id = sp.s_plan_id -WHERE t.type = 'FD Interest Credit' -GROUP BY sp.plan_name, sa.saving_account_id; +WHERE t.type = 'Interest' +GROUP BY sp.plan_name, sa.saving_account_id, DATE_TRUNC('month', t.timestamp) +WITH DATA; ---vw_customer_activity – total deposits, withdrawals, and net balance -CREATE OR REPLACE VIEW vw_customer_activity AS + + +-- Customer Activity Summary +CREATE MATERIALIZED VIEW vw_customer_activity_mv AS SELECT c.customer_id, c.name AS customer_name, - SUM(CASE WHEN t.type = 'deposit' THEN t.amount ELSE 0 END) AS total_deposits, - SUM(CASE WHEN t.type = 'withdrawal' THEN t.amount ELSE 0 END) AS total_withdrawals, - SUM(CASE WHEN t.type = 'deposit' THEN t.amount - WHEN t.type = 'withdrawal' THEN -t.amount + SUM(CASE WHEN t.type = 'Deposit' THEN t.amount ELSE 0 END) AS total_deposits, + SUM(CASE WHEN t.type = 'Withdrawal' THEN t.amount ELSE 0 END) AS total_withdrawals, + SUM(CASE WHEN t.type = 'Deposit' THEN t.amount + WHEN t.type = 'Withdrawal' THEN -t.amount ELSE 0 END) AS net_change FROM Customer c JOIN AccountHolder ah ON c.customer_id = ah.customer_id JOIN Transactions t ON ah.holder_id = t.holder_id -GROUP BY c.customer_id, c.name; - +GROUP BY c.customer_id, c.name +WITH DATA; +CREATE INDEX idx_customer_activity_mv_id ON vw_customer_activity_mv(customer_id); From d4112fe00a910f6f720ca816a03770778800cce8 Mon Sep 17 00:00:00 2001 From: Haren Daishika Date: Tue, 14 Oct 2025 13:04:02 +0530 Subject: [PATCH 02/62] Add SavingsAccountWithCustomerRead schema and update search_saving_accounts endpoint --- .../__pycache__/savingAccount.cpython-310.pyc | Bin 4477 -> 4586 bytes Backend/__pycache__/schemas.cpython-310.pyc | Bin 8619 -> 9158 bytes Backend/savingAccount.py | 74 +++++++++--------- Backend/schemas.py | 14 ++++ Backend/transaction.py | 43 ++++++++++ Views.txt | 16 ++++ 6 files changed, 110 insertions(+), 37 deletions(-) create mode 100644 Backend/transaction.py diff --git a/Backend/__pycache__/savingAccount.cpython-310.pyc b/Backend/__pycache__/savingAccount.cpython-310.pyc index 0b45386581d6fd526a2c15ca9c3eab4fd6332ade..0101c8c1e66f9e81d094530864bacf89782bb936 100644 GIT binary patch delta 1772 zcmaJ>O>7fK6rQ)cUa!~dwew37rO^^fejox;+5$>x8xblv5TtOhx)QQBo=I%jwcXh@ zCh5AaFvms+?WL%ylw7JFdgDgVoO|nGrS@JVjy<$eOW&*=Hx#M6+Hc>y@4Yu~-n^N= zW?!5z>$#jx@VWEyW#xy-$L2J=czpVJ$5U+;2qjc@B`!G}#qFR{Rf&&Q%j#P}Lg&JS!gc{9E5`Q&FQ=Mk1u_rx%p01t2 zkhwv~j0j21klZ8uHZu7EgW5@wu!V$mksUh17W(XP!hVkI$bjt-I^3g0j-eW8VY+*m zWd^g<=_nn0NJ4#$bfHKjLdO-Nkgg1*NN$m3;y-C&V&eT2zasLtkPq~oAAz*71$Xly z>}L;-p+oJZ9$7HPVW95oieP>`t>VIR=L0Pr7B&r z>fG{^-Y7Y}-axI@^s!m2pu+l`KOkG!IiEKE^z3gqHD{age?6izxw#eL?znExcwoz?L~o4c&-T`SS7+%Ce%5%;|;L z?4Kg9w|+h?Rwa%TpF!B2@7E=Ip0ZMW3{_FX99xNH%x!nvT3ufo)U<>u>#}vy=R?AC z>~#`1G2xC!Uzt|)i@7o@4(K9qRs5t_I&+S{hhqQS3h6?0F@LRN32_!-F~`NZ=aPW8 z1)M~PRj1KlHOl9OWcq^O##fdQJVfC|bhO)@|Nlu^<^Uq(VhQw`rkEFfXP!q4WChNh-4 z{ZjgyuVLKv#i{7)!ud-)EwV^&Iey?Ys!2(B231_#fU!oMz}du=@vImsPBW-*aX<20 z^r~?Dwx|%lm{4xj4`PK@%Rv(V$U2i1CyUiS@anYbvJdeb5MOkV0TYO_y<-Wu37*9 delta 1726 zcmZux&2Jk;6rWkI*K5aK+xcozsxoO>iYZMSl2Qp#l#)aggesIEMYWL3#4}E|?1!0I zCvs%t3ipCggwo}PDkTy^aPA*~_!GG90Z?xsapHhD@bPB7Ngat@?N4vs@Aux!yf-_) z&HjDC@(YC=g2(yg_w7HX4y<$d>A{tm9!3nYl%u&u)rf7~$+%|KbhFj0o2%wxU)mXQ z^VNK88&1Kss#a`gAg)*~#y+GbwTuzZ_EB||kKP|+Ij*yjeU0aMzK;Q| zK5l62!#q#10v~4<*Bb^aveLtJA6F;hkTRd-`ZO92gOE{v25^jx$I2--v5qQ}zpAZO zaAd7<>a5uHV7VovFDj{U0WXCiuH)~X{E5F!;l1!MeH+_Po~D1&a3=i0{N|;L5L(S` z3hLFjYr@|Z=afTlI@F6&Fpe-6GvE?4;X(Edm&tQE6OV2eYn zm9W{E?E!1v>>aNivFw2Eqz=;^Juo`ZzatGJ7-wL|8CGKDhp3ZTL4CY|G{i=Aq@#Wc zqYbo<=8=573(HpTJ@__&Uk5%g+uvi6}I1!q%Q1$3!Bd6as-}xev8zpM;f*RZnD{aEp}fe zlJ3~vR*lx{e#;ALHcR~6Z90CN^JgAeQzv6+9MGU86M1rqY|aMr-QMC}0IPs0ea~qV z$*HJslZG!yGL0R1%kZbc>5Yq9g}(oJWNhdMfoZ z&q>xn_U~ZrUCVY#-LrfC_MjNn(3yP9pfnEiMDH>9e+4M^YcbWy=YY zwTQED*7sWLtM9HZzkgh?&@a3l&KTn#kc~U5YpZ1b*1Q-4ofuc*33B`H3K^;)xkWBX zF$G*?CACWSwl@}Qj|<2KO7$y>=fixFyeuxOj04q44+g3$iYdkMGVVrrxwu5)f3^Tr zMT@k#>*5uaYw#m0Ycc$+c&B$>nMA<^KqW8KZ6GuS7Zl6_LVPkq)$UHj3_!E zI^~%aRRnP(rW{)akwjx!JKEZ*ay5}B{NK5IGr4Gbfxnx4nw;g97r+IjpR1<06l!(G_l7y3l(bO)+-zPVSt0=braw&h6Xb{Sj})<8dkU zv;RC?PKKX*yIJPL*@P`PqL|msP!QL&P;8#U*R-kz0n`nq(goC+#`t_gOBX*nldLFrvq+`ew2pSO*xb!VXs#9N zskkcAu7Ey@n&X}1Am}rRe2>H(fZ1$69=^)%%Jvo|c9E1X*AfXMDh|RgC|iw`2oEBm zz&+&e18}r@OQ~Gr570llME4(QRlNi_kjg@I6qR)|zSP|6Ojm}j2;Cj+C{x)U>g}?g zj$DS~&hM@<)>R?y6Ox)t+Nl*TYE{`OL`}vXiv6DP-c`zeMw#9yGa7{<7GZp~shaNH zr6(MH7dxv|_ytekd$<%ky>L>lLYeJ~ui^Nn=`fvJEU#K^meXtld$NV~QhBMGC>ASgS-CYaacM|g$ZzP%L{}!>Gc?1z+>?3toOi$8`*!2~wbX7hX-4!rI_}&b z%f3qGY5enrtI?kN_1Q>iqWvs7ZP8shvN!0CT=HzL@kx#B6 zxuhp$XGB#k=Sq5B$(Im}1Li~3zBeNOoHdPGbI-dAN{ZU=9tAUEQ-*kG*_{)H0`IC843ibu;i-8l+3s?adfI&b_rW4*^Re#^9?b!;*Zj+%4 zXi{BH}YNl&VLUUS41qsvZ>ih^|5wISH zU+EvCjUaqoi9?XVaO*N-`_k!ut?ct$L$Qm3@Ui7U;F*9b|0B^JN-ns_#3#><`GSuFUQVJ<1Wc!mPEzp`LJyqdu$f7$9nGOH| diff --git a/Backend/savingAccount.py b/Backend/savingAccount.py index c7dff0c..675fbeb 100644 --- a/Backend/savingAccount.py +++ b/Backend/savingAccount.py @@ -1,6 +1,6 @@ # Change account status function from psycopg2.extras import RealDictCursor -from schemas import SavingsAccountCreate, SavingsAccountRead, AccountStatusRequest +from schemas import SavingsAccountCreate, SavingsAccountRead, AccountStatusRequest, SavingsAccountWithCustomerRead from schemas import AccountHolderCreate from fastapi import HTTPException, APIRouter, Depends from database import get_db @@ -94,58 +94,58 @@ def create_saving_account(account: SavingsAccountCreate, customer_id: str, conn= status_code=500, detail=f"Database error: {str(e)}") -@router.post("/saving-account/search", response_model=list[SavingsAccountRead]) -def search_saving_accounts(query: dict, conn=Depends(get_db), current_user=Depends): +@router.post("/saving-account/search", response_model=list[SavingsAccountWithCustomerRead]) +def search_saving_accounts(query: dict, conn=Depends(get_db), current_user=Depends(get_current_user)): """ - Search savings accounts by various criteria. - - You can filter by: - - saving_account_id - - employee_id - - s_plan_id - - status - - branch_id - - Agents can only search for accounts assigned to themselves. - Branch managers can search all accounts in their branch. - Admins can search all accounts. - Provide any combination of fields in the request body to filter results. + Search savings accounts by NIC, customer_id, or saving_account_id using the savings_account_with_customer view. + Agents see only their customers' accounts. + Managers see only accounts in their branch. + Admins see all accounts. """ try: with conn.cursor(cursor_factory=RealDictCursor) as cursor: - base_query = "SELECT saving_account_id, open_date, balance, employee_id, s_plan_id, status, branch_id FROM SavingsAccount WHERE 1=1" + user_type = current_user.get('type').lower() + employee_id = current_user.get('employee_id') + + base_query = """ + SELECT saving_account_id, open_date, balance, employee_id, s_plan_id, status, branch_id, + customer_id, customer_name, customer_nic + FROM savings_account_with_customer + WHERE 1=1 + """ params = [] - user_type = current_user.get('type').lower() - # If agent, restrict to their own accounts + # Agent: only accounts for their customers if user_type == 'agent': base_query += " AND employee_id = %s" - params.append(current_user.get('employee_id')) - # If branch manager, restrict to their branch + params.append(employee_id) + + # Manager: only accounts in their branch elif user_type == 'branch_manager': + cursor.execute( + "SELECT branch_id FROM Employee WHERE employee_id = %s", (employee_id,)) + branch_row = cursor.fetchone() + if not branch_row or not branch_row['branch_id']: + raise HTTPException( + status_code=400, detail="Manager does not have a branch assigned") + branch_id = branch_row['branch_id'] base_query += " AND branch_id = %s" - params.append(current_user.get('branch_id')) - - # Add filters based on provided query fields + params.append(branch_id) + + # Filters + if 'nic' in query: + base_query += " AND customer_nic = %s" + params.append(query['nic']) + if 'customer_id' in query: + base_query += " AND customer_id = %s" + params.append(query['customer_id']) if 'saving_account_id' in query: base_query += " AND saving_account_id = %s" params.append(query['saving_account_id']) - if 'employee_id' in query: - base_query += " AND employee_id = %s" - params.append(query['employee_id']) - if 's_plan_id' in query: - base_query += " AND s_plan_id = %s" - params.append(query['s_plan_id']) - if 'status' in query: - base_query += " AND status = %s" - params.append(query['status']) - if 'branch_id' in query: - base_query += " AND branch_id = %s" - params.append(query['branch_id']) cursor.execute(base_query, tuple(params)) rows = cursor.fetchall() - return [SavingsAccountRead(**row) for row in rows] + return [SavingsAccountWithCustomerRead(**row) for row in rows] except Exception as e: conn.rollback() diff --git a/Backend/schemas.py b/Backend/schemas.py index 548ca56..1847cb8 100644 --- a/Backend/schemas.py +++ b/Backend/schemas.py @@ -220,3 +220,17 @@ class CustomerStatusRequest(BaseModel): """Secure status update request model for customer status operations""" customer_id: str = Field(max_length=10) status: bool + + +class SavingsAccountWithCustomerRead(BaseModel): + saving_account_id: str = Field(max_length=10) + open_date: datetime + balance: Decimal = Field(decimal_places=2) + employee_id: str = Field(max_length=10) + s_plan_id: str = Field(max_length=5) + status: bool + branch_id: Optional[str] = Field( + default=None, max_length=7) # <-- Make optional + customer_id: str = Field(max_length=10) + customer_name: str = Field(max_length=50) + customer_nic: str = Field(max_length=12) diff --git a/Backend/transaction.py b/Backend/transaction.py new file mode 100644 index 0000000..17cf69a --- /dev/null +++ b/Backend/transaction.py @@ -0,0 +1,43 @@ +from psycopg2.extras import RealDictCursor +from fastapi import APIRouter, Depends, HTTPException +from schemas import TransactionsCreate, TransactionsRead, Trantype +from database import get_db +from auth import get_current_user +from datetime import date +from pydantic import BaseModel + +router = APIRouter() + + +@router.post("/transaction", response_model=TransactionsRead) +def create_transaction(transaction: TransactionsCreate, conn=Depends(get_db), current_user=Depends(get_current_user)) -> TransactionsRead: + """ + Create a new account transaction atomically. + """ + try: + with conn.cursor(cursor_factory=RealDictCursor) as cursor: + # Insert the transaction record + cursor.execute(""" + INSERT INTO Transactions (holder_id, type, amount, timestamp, ref_number, description) + VALUES (%s, %s, %s, COALESCE(%s, NOW()), %s, %s) + RETURNING transaction_id, holder_id, type, amount, timestamp, ref_number, description + """, ( + transaction.holder_id, + transaction.type.value, + transaction.amount, + transaction.timestamp, + transaction.ref_number, + transaction.description + )) + + result = cursor.fetchone() + if not result: + raise HTTPException( + status_code=500, detail="Failed to create transaction") + + conn.commit() + return TransactionsRead(**result) + except Exception as e: + conn.rollback() + raise HTTPException( + status_code=500, detail=f"Database error: {str(e)}") diff --git a/Views.txt b/Views.txt index 0c3a86f..b1606bf 100644 --- a/Views.txt +++ b/Views.txt @@ -106,4 +106,20 @@ JOIN AccountHolder ah ON c.customer_id = ah.customer_id JOIN Transactions t ON ah.holder_id = t.holder_id GROUP BY c.customer_id, c.name; +--search saving accounts get details +CREATE OR REPLACE VIEW savings_account_with_customer AS +SELECT + sa.saving_account_id, + sa.open_date, + sa.balance, + sa.employee_id, + sa.s_plan_id, + sa.status, + sa.branch_id, + c.customer_id, + c.name AS customer_name, + c.nic AS customer_nic +FROM SavingsAccount sa +JOIN AccountHolder ah ON sa.saving_account_id = ah.saving_account_id +JOIN Customer c ON ah.customer_id = c.customer_id; From 4874ece99d89c309e69c55bcf001535f7b963773 Mon Sep 17 00:00:00 2001 From: Haren Daishika Date: Tue, 14 Oct 2025 15:12:18 +0530 Subject: [PATCH 03/62] Add transaction handling and schema updates for improved transaction management --- Backend/__pycache__/main.cpython-310.pyc | Bin 1230 -> 1278 bytes Backend/__pycache__/schemas.cpython-310.pyc | Bin 9158 -> 9171 bytes .../__pycache__/transaction.cpython-310.pyc | Bin 0 -> 2399 bytes Backend/main.py | 4 +- Backend/schemas.py | 2 +- Backend/transaction.py | 33 ++++++++-- Table Queries.txt | 58 ++++++++++++++++-- Views.txt | 15 +++-- 8 files changed, 97 insertions(+), 15 deletions(-) create mode 100644 Backend/__pycache__/transaction.cpython-310.pyc diff --git a/Backend/__pycache__/main.cpython-310.pyc b/Backend/__pycache__/main.cpython-310.pyc index 55f4ad9685b57e744f4285376029481cd332f0f9..8ad53c3250b0486d7018c65e1b534890fbed9317 100644 GIT binary patch delta 177 zcmX@d`Hzz?pO=@50SLVQz0J^MoyaG{C^J#}l{tTkXo^@mV+vm{Gb2N)NS0WtV2XH( z1VUtic#7mg#uTX(=@y1&#wdvtreFq5nax&=W{fgby!s_YiFw6|$t9WjdBssYAqd{& ue5P}Z3X|=a=S*TzmE=ZJ7bS$mnJmjv&S*1vDvK!>8xtEN+kXxgK1Kk;Z!!7+ delta 128 zcmeyzd5)7WpO=@50SF`>z0EkxGLcV)k!zy%D^7@8TQBvP1y88oFf`!Jd@PM*(nmQikUF7q7O#N_1s(!3In{G623q9{=)H$DT* XpTwd!*`Fn!(QNX57E=}u7CuG*2%jY5 diff --git a/Backend/__pycache__/schemas.cpython-310.pyc b/Backend/__pycache__/schemas.cpython-310.pyc index d1fd03757d9d44d3a8fa5833d0191a407e6e2fdd..a41af156ff93f6353538d9455dbed1dc63651e70 100644 GIT binary patch delta 331 zcmX@+e%YNjpO=@50SJ1;-eqKLPew+%xoa|&k) zPYQ1@QxxCiK&eE=Ta!0SDKqjun236kUiOR_LZfFaPRg3X1pDU6JTldsA7%NGG5+jBI5<@uG5&^BGGgTPmpo$wZ|)q9E56fm~Gt Sva<+eOi?LNmH6aL=4o>aCJZX1SF<`m8po)q3*rYPRY zky43_QImH|DKqj-PT&%qJWrB;GPAS<`z_|oypp1v$pJhPlkKI&**F+w7>m*;2g=J% zu9OaB%$=;jEi0S{wB;}m7qb8fE(RXPqP)q0Lb97BWV{)r^MPU~L6SURNft&4Fa#Qt z4^}i=)}0aPvd41%@`XSZ7ePt|ph|_HiX|AO7>f#lwq5|LR8lY$F9s^O4N}PgR|&MW z7;Ip>!U9INQlNNI8OYg;C6nEh)PZE4(j8HdON&4*DgxP61TvY}TbY{I@{*04`mWmz*iB_?crh)^9iXu|SZ6h@wvK=Cfh1u+kn@#q^%*-~m z<)A{4I2DjMp;D5CTXv9bWmBB) z=Yo7IpTdS;2#T#@3Y&f@m}||Yu;rJ7`PMu}EOUZd3vA)w0=1b-8v>j3?F_ z>#>lEqPE|6I)?qzsJCk`GCm|-2S|-3HL7GXO75TlYZj)$l)A>$sm!4%z6L)_ zbZ+buem?gCVI<3R!9zpyXZ#J`MH-@I9qH&KgV8Q(ptq5Db_5lyo{wPe0=)rrIp6;k zqhkxB!Q2o(Ur046?ep@&&^p0S(KBsihnA16&#fbTgen&X@8$@MQNa+0gzShot{cUn zBva`mj*J4&b$q|Sk_xEwL&ZRWcDhh>5$_LvNC`^YWHf5`Yt<&%b9^Us*)j>duyeW* z&O0)+cyvbmPJL^G>_Hmzt$UPwpAqT@nYCnjam@%+RZd!FQ{jxl&^Jrr@b>$x6$JERNp z;wGs&p;C9`$$iS5BQkh%g=~1C7sSCN7=*LWVvn;xiA7y9SR_F#B-vvmaJ&#KhK#NZ zzBqRd71y2Zwbf>gG}7pa)lsTuxEi(7u+N4=sTsv=CI_?3$@~nHlZSB5m|Wj%)ap&L zzS-O&s>@7z5m`Eo_cBqfXPG#GsxR1i0fSHny=6j~aJe^XW;3ckT)n?jYmlX@Vi{69 zn$@k<`?W^3mLfN|c9$v@MX1aO*K5t4`sVuP-RXLUa$7#Dga7f1vu-DhgFVL2`FPHX z_m?WKD|etu7$q_yZrXmQ?QIUqYmRjGpqCQHdBks$Ur=Q+F-PAJ*PtUN7JI~8X!A+- zG-8R}WzyY`LdFfnqN@OM)kl-uq`VwIF-H+iEXsP3@MK~`2{CBTGBKd$V^Db->m)xF zYj7Y60#9;Fsmz{UD2dG@-`{iG!z3dluh_hlns=ixObXLi1;3;S*7!4S<)ML0K2~)H zh}f42X8a;>rOV$RS8uj=;EoaP#_Gm)y}cE(HSRrR?KLJ2Wz=im_2j*Hk8JbkfVon% zH$0a|*Ka%FA@qyujlPg9Xe-y?B5Y6fsFhwnSr~=BGledIW$_6tno+_gHg)}9+t9Iw zb!@&WXcqy}@I`FCEb9ea#sv&qS`N5OQ#VZDQjhizNEIehcBX)rek>>>>>> 05f5a8e7c8a9675f59b98e16722168f7ea1b4e0c CREATE INDEX idx_customer_activity_mv_id ON vw_customer_activity_mv(customer_id); + +CREATE OR REPLACE VIEW holder_balance_min AS +SELECT + ah.holder_id, + sa.saving_account_id, + sa.balance, + sp.min_balance +FROM AccountHolder ah +JOIN SavingsAccount sa ON ah.saving_account_id = sa.saving_account_id +JOIN SavingsAccount_Plans sp ON sa.s_plan_id = sp.s_plan_id; \ No newline at end of file From adaa76383c7a7096dcd0789b0b4dfe731aa487c4 Mon Sep 17 00:00:00 2001 From: Haren Daishika Date: Tue, 14 Oct 2025 15:59:04 +0530 Subject: [PATCH 04/62] deleted frontend folder --- Frontend/.gitignore | 24 - Frontend/README.md | 69 - Frontend/eslint.config.js | 23 - Frontend/index.html | 16 - Frontend/package-lock.json | 3519 -------------------------- Frontend/package.json | 36 - Frontend/public/embedded-finance.jpg | Bin 117667 -> 0 bytes Frontend/public/vite.svg | 1 - Frontend/src/App.css | 0 Frontend/src/App.tsx | 18 - Frontend/src/Pages/login.tsx | 219 -- Frontend/src/assets/react.svg | 1 - Frontend/src/config.ts | 1 - Frontend/src/index.css | 0 Frontend/src/main.tsx | 10 - Frontend/src/vite-env.d.ts | 1 - Frontend/tsconfig.app.json | 27 - Frontend/tsconfig.json | 7 - Frontend/tsconfig.node.json | 25 - Frontend/vite.config.ts | 7 - 20 files changed, 4004 deletions(-) delete mode 100644 Frontend/.gitignore delete mode 100644 Frontend/README.md delete mode 100644 Frontend/eslint.config.js delete mode 100644 Frontend/index.html delete mode 100644 Frontend/package-lock.json delete mode 100644 Frontend/package.json delete mode 100644 Frontend/public/embedded-finance.jpg delete mode 100644 Frontend/public/vite.svg delete mode 100644 Frontend/src/App.css delete mode 100644 Frontend/src/App.tsx delete mode 100644 Frontend/src/Pages/login.tsx delete mode 100644 Frontend/src/assets/react.svg delete mode 100644 Frontend/src/config.ts delete mode 100644 Frontend/src/index.css delete mode 100644 Frontend/src/main.tsx delete mode 100644 Frontend/src/vite-env.d.ts delete mode 100644 Frontend/tsconfig.app.json delete mode 100644 Frontend/tsconfig.json delete mode 100644 Frontend/tsconfig.node.json delete mode 100644 Frontend/vite.config.ts diff --git a/Frontend/.gitignore b/Frontend/.gitignore deleted file mode 100644 index a547bf3..0000000 --- a/Frontend/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/Frontend/README.md b/Frontend/README.md deleted file mode 100644 index 7959ce4..0000000 --- a/Frontend/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# React + TypeScript + Vite - -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. - -Currently, two official plugins are available: - -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh - -## Expanding the ESLint configuration - -If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: - -```js -export default tseslint.config([ - globalIgnores(['dist']), - { - files: ['**/*.{ts,tsx}'], - extends: [ - // Other configs... - - // Remove tseslint.configs.recommended and replace with this - ...tseslint.configs.recommendedTypeChecked, - // Alternatively, use this for stricter rules - ...tseslint.configs.strictTypeChecked, - // Optionally, add this for stylistic rules - ...tseslint.configs.stylisticTypeChecked, - - // Other configs... - ], - languageOptions: { - parserOptions: { - project: ['./tsconfig.node.json', './tsconfig.app.json'], - tsconfigRootDir: import.meta.dirname, - }, - // other options... - }, - }, -]) -``` - -You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: - -```js -// eslint.config.js -import reactX from 'eslint-plugin-react-x' -import reactDom from 'eslint-plugin-react-dom' - -export default tseslint.config([ - globalIgnores(['dist']), - { - files: ['**/*.{ts,tsx}'], - extends: [ - // Other configs... - // Enable lint rules for React - reactX.configs['recommended-typescript'], - // Enable lint rules for React DOM - reactDom.configs.recommended, - ], - languageOptions: { - parserOptions: { - project: ['./tsconfig.node.json', './tsconfig.app.json'], - tsconfigRootDir: import.meta.dirname, - }, - // other options... - }, - }, -]) -``` diff --git a/Frontend/eslint.config.js b/Frontend/eslint.config.js deleted file mode 100644 index d94e7de..0000000 --- a/Frontend/eslint.config.js +++ /dev/null @@ -1,23 +0,0 @@ -import js from '@eslint/js' -import globals from 'globals' -import reactHooks from 'eslint-plugin-react-hooks' -import reactRefresh from 'eslint-plugin-react-refresh' -import tseslint from 'typescript-eslint' -import { globalIgnores } from 'eslint/config' - -export default tseslint.config([ - globalIgnores(['dist']), - { - files: ['**/*.{ts,tsx}'], - extends: [ - js.configs.recommended, - tseslint.configs.recommended, - reactHooks.configs['recommended-latest'], - reactRefresh.configs.vite, - ], - languageOptions: { - ecmaVersion: 2020, - globals: globals.browser, - }, - }, -]) diff --git a/Frontend/index.html b/Frontend/index.html deleted file mode 100644 index b159f12..0000000 --- a/Frontend/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - B-Trust Bank - - - -
- - - - \ No newline at end of file diff --git a/Frontend/package-lock.json b/Frontend/package-lock.json deleted file mode 100644 index c80441f..0000000 --- a/Frontend/package-lock.json +++ /dev/null @@ -1,3519 +0,0 @@ -{ - "name": "frontend", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "frontend", - "version": "0.0.0", - "dependencies": { - "@fortawesome/fontawesome-svg-core": "^7.0.1", - "@fortawesome/free-solid-svg-icons": "^7.0.1", - "@fortawesome/react-fontawesome": "^3.0.2", - "@types/react-router-dom": "^5.3.3", - "jwt-decode": "^4.0.0", - "react": "^19.1.1", - "react-dom": "^19.1.1", - "react-router": "^7.9.1", - "react-router-dom": "^7.9.1" - }, - "devDependencies": { - "@eslint/js": "^9.33.0", - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.0", - "eslint": "^9.33.0", - "eslint-plugin-react-hooks": "^5.2.0", - "eslint-plugin-react-refresh": "^0.4.20", - "globals": "^16.3.0", - "typescript": "~5.8.3", - "typescript-eslint": "^8.39.1", - "vite": "^7.1.2" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", - "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", - "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.4", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.4", - "@babel/types": "^7.28.4", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", - "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.3", - "@babel/types": "^7.28.2", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", - "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.28.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", - "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", - "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.4" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", - "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", - "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", - "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.4", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", - "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz", - "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz", - "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz", - "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz", - "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz", - "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz", - "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz", - "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz", - "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz", - "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz", - "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz", - "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz", - "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz", - "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz", - "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz", - "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz", - "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz", - "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz", - "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz", - "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz", - "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz", - "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz", - "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz", - "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz", - "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz", - "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz", - "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", - "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.6", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", - "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", - "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "9.35.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.35.0.tgz", - "integrity": "sha512-30iXE9whjlILfWobBkNerJo+TXYsgVM5ERQwMcMKCHckHflCmf7wXDAHlARoWnh0s1U72WqlbeyE7iAcCzuCPw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", - "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.15.2", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@fortawesome/fontawesome-common-types": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-7.0.1.tgz", - "integrity": "sha512-0VpNtO5cNe1/HQWMkl4OdncYK/mv9hnBte0Ew0n6DMzmo3Q3WzDFABHm6LeNTipt5zAyhQ6Ugjiu8aLaEjh1gg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@fortawesome/fontawesome-svg-core": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-7.0.1.tgz", - "integrity": "sha512-x0cR55ILVqFpUioSMf6ebpRCMXMcheGN743P05W2RB5uCNpJUqWIqW66Lap8PfL/lngvjTbZj0BNSUweIr/fHQ==", - "license": "MIT", - "dependencies": { - "@fortawesome/fontawesome-common-types": "7.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@fortawesome/free-solid-svg-icons": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-7.0.1.tgz", - "integrity": "sha512-esKuSrl1WMOTMDLNt38i16VfLe/gRZt2ZAJ3Yw7slfs7sj583MKqNFqO57zmhknk1Sya6f9Wys89aCzIJkcqlg==", - "license": "(CC-BY-4.0 AND MIT)", - "dependencies": { - "@fortawesome/fontawesome-common-types": "7.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@fortawesome/react-fontawesome": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-3.0.2.tgz", - "integrity": "sha512-cmp/nT0pPC7HUALF8uc3+D5ECwEBWxYQbOIHwtGUWEu72sWtZc26k5onr920HWOViF0nYaC+Qzz6Ln56SQcaVg==", - "license": "MIT", - "engines": { - "node": ">=20" - }, - "peerDependencies": { - "@fortawesome/fontawesome-svg-core": "~6 || ~7", - "react": "^18.0.0 || ^19.0.0" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.30", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", - "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.34", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.34.tgz", - "integrity": "sha512-LyAREkZHP5pMom7c24meKmJCdhf2hEyvam2q0unr3or9ydwDL+DJ8chTF6Av/RFPb3rH8UFBdMzO5MxTZW97oA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.1.tgz", - "integrity": "sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.1.tgz", - "integrity": "sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.1.tgz", - "integrity": "sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.1.tgz", - "integrity": "sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.1.tgz", - "integrity": "sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.1.tgz", - "integrity": "sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.1.tgz", - "integrity": "sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.1.tgz", - "integrity": "sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.1.tgz", - "integrity": "sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.1.tgz", - "integrity": "sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.1.tgz", - "integrity": "sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.1.tgz", - "integrity": "sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.1.tgz", - "integrity": "sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.1.tgz", - "integrity": "sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.1.tgz", - "integrity": "sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.1.tgz", - "integrity": "sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.1.tgz", - "integrity": "sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.1.tgz", - "integrity": "sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.1.tgz", - "integrity": "sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.1.tgz", - "integrity": "sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.1.tgz", - "integrity": "sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.2" - } - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/history": { - "version": "4.7.11", - "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", - "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/react": { - "version": "19.1.12", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.12.tgz", - "integrity": "sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w==", - "license": "MIT", - "dependencies": { - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "19.1.9", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.9.tgz", - "integrity": "sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@types/react": "^19.0.0" - } - }, - "node_modules/@types/react-router": { - "version": "5.1.20", - "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", - "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", - "license": "MIT", - "dependencies": { - "@types/history": "^4.7.11", - "@types/react": "*" - } - }, - "node_modules/@types/react-router-dom": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", - "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", - "license": "MIT", - "dependencies": { - "@types/history": "^4.7.11", - "@types/react": "*", - "@types/react-router": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.43.0.tgz", - "integrity": "sha512-8tg+gt7ENL7KewsKMKDHXR1vm8tt9eMxjJBYINf6swonlWgkYn5NwyIgXpbbDxTNU5DgpDFfj95prcTq2clIQQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.43.0", - "@typescript-eslint/type-utils": "8.43.0", - "@typescript-eslint/utils": "8.43.0", - "@typescript-eslint/visitor-keys": "8.43.0", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.43.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.43.0.tgz", - "integrity": "sha512-B7RIQiTsCBBmY+yW4+ILd6mF5h1FUwJsVvpqkrgpszYifetQ2Ke+Z4u6aZh0CblkUGIdR59iYVyXqqZGkZ3aBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.43.0", - "@typescript-eslint/types": "8.43.0", - "@typescript-eslint/typescript-estree": "8.43.0", - "@typescript-eslint/visitor-keys": "8.43.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.43.0.tgz", - "integrity": "sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.43.0", - "@typescript-eslint/types": "^8.43.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.43.0.tgz", - "integrity": "sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.43.0", - "@typescript-eslint/visitor-keys": "8.43.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.43.0.tgz", - "integrity": "sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.43.0.tgz", - "integrity": "sha512-qaH1uLBpBuBBuRf8c1mLJ6swOfzCXryhKND04Igr4pckzSEW9JX5Aw9AgW00kwfjWJF0kk0ps9ExKTfvXfw4Qg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.43.0", - "@typescript-eslint/typescript-estree": "8.43.0", - "@typescript-eslint/utils": "8.43.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.43.0.tgz", - "integrity": "sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.43.0.tgz", - "integrity": "sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.43.0", - "@typescript-eslint/tsconfig-utils": "8.43.0", - "@typescript-eslint/types": "8.43.0", - "@typescript-eslint/visitor-keys": "8.43.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.43.0.tgz", - "integrity": "sha512-S1/tEmkUeeswxd0GGcnwuVQPFWo8NzZTOMxCvw8BX7OMxnNae+i8Tm7REQen/SwUIPoPqfKn7EaZ+YLpiB3k9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.43.0", - "@typescript-eslint/types": "8.43.0", - "@typescript-eslint/typescript-estree": "8.43.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.43.0.tgz", - "integrity": "sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.43.0", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@vitejs/plugin-react": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.0.2.tgz", - "integrity": "sha512-tmyFgixPZCx2+e6VO9TNITWcCQl8+Nl/E8YbAyPVv85QCc7/A3JrdfG2A8gIzvVhWuzMOVrFW1aReaNxrI6tbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.28.3", - "@babel/plugin-transform-react-jsx-self": "^7.27.1", - "@babel/plugin-transform-react-jsx-source": "^7.27.1", - "@rolldown/pluginutils": "1.0.0-beta.34", - "@types/babel__core": "^7.20.5", - "react-refresh": "^0.17.0" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.25.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.4.tgz", - "integrity": "sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001737", - "electron-to-chromium": "^1.5.211", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001741", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001741.tgz", - "integrity": "sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cookie": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", - "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.215", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.215.tgz", - "integrity": "sha512-TIvGp57UpeNetj/wV/xpFNpWGb0b/ROw372lHPx5Aafx02gjTBtWnEEcaSX3W2dLM3OSdGGyHX/cHl01JQsLaQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/esbuild": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz", - "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.9", - "@esbuild/android-arm": "0.25.9", - "@esbuild/android-arm64": "0.25.9", - "@esbuild/android-x64": "0.25.9", - "@esbuild/darwin-arm64": "0.25.9", - "@esbuild/darwin-x64": "0.25.9", - "@esbuild/freebsd-arm64": "0.25.9", - "@esbuild/freebsd-x64": "0.25.9", - "@esbuild/linux-arm": "0.25.9", - "@esbuild/linux-arm64": "0.25.9", - "@esbuild/linux-ia32": "0.25.9", - "@esbuild/linux-loong64": "0.25.9", - "@esbuild/linux-mips64el": "0.25.9", - "@esbuild/linux-ppc64": "0.25.9", - "@esbuild/linux-riscv64": "0.25.9", - "@esbuild/linux-s390x": "0.25.9", - "@esbuild/linux-x64": "0.25.9", - "@esbuild/netbsd-arm64": "0.25.9", - "@esbuild/netbsd-x64": "0.25.9", - "@esbuild/openbsd-arm64": "0.25.9", - "@esbuild/openbsd-x64": "0.25.9", - "@esbuild/openharmony-arm64": "0.25.9", - "@esbuild/sunos-x64": "0.25.9", - "@esbuild/win32-arm64": "0.25.9", - "@esbuild/win32-ia32": "0.25.9", - "@esbuild/win32-x64": "0.25.9" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "9.35.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.35.0.tgz", - "integrity": "sha512-QePbBFMJFjgmlE+cXAlbHZbHpdFVS2E/6vzCy7aKlebddvl1vadiC4JFV5u/wqTkNUwEV8WrQi257jf5f06hrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.0", - "@eslint/config-helpers": "^0.3.1", - "@eslint/core": "^0.15.2", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.35.0", - "@eslint/plugin-kit": "^0.3.5", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", - "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.20", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz", - "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "eslint": ">=8.40" - } - }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "16.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", - "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jwt-decode": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", - "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.20.tgz", - "integrity": "sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA==", - "dev": true, - "license": "MIT" - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/react": { - "version": "19.1.1", - "resolved": "https://registry.npmjs.org/react/-/react-19.1.1.tgz", - "integrity": "sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "19.1.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.1.tgz", - "integrity": "sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==", - "license": "MIT", - "dependencies": { - "scheduler": "^0.26.0" - }, - "peerDependencies": { - "react": "^19.1.1" - } - }, - "node_modules/react-refresh": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", - "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-router": { - "version": "7.9.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.9.1.tgz", - "integrity": "sha512-pfAByjcTpX55mqSDGwGnY9vDCpxqBLASg0BMNAuMmpSGESo/TaOUG6BllhAtAkCGx8Rnohik/XtaqiYUJtgW2g==", - "license": "MIT", - "dependencies": { - "cookie": "^1.0.1", - "set-cookie-parser": "^2.6.0" - }, - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "react": ">=18", - "react-dom": ">=18" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - } - } - }, - "node_modules/react-router-dom": { - "version": "7.9.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.9.1.tgz", - "integrity": "sha512-U9WBQssBE9B1vmRjo9qTM7YRzfZ3lUxESIZnsf4VjR/lXYz9MHjvOxHzr/aUm4efpktbVOrF09rL/y4VHa8RMw==", - "license": "MIT", - "dependencies": { - "react-router": "7.9.1" - }, - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "react": ">=18", - "react-dom": ">=18" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rollup": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz", - "integrity": "sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.50.1", - "@rollup/rollup-android-arm64": "4.50.1", - "@rollup/rollup-darwin-arm64": "4.50.1", - "@rollup/rollup-darwin-x64": "4.50.1", - "@rollup/rollup-freebsd-arm64": "4.50.1", - "@rollup/rollup-freebsd-x64": "4.50.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.50.1", - "@rollup/rollup-linux-arm-musleabihf": "4.50.1", - "@rollup/rollup-linux-arm64-gnu": "4.50.1", - "@rollup/rollup-linux-arm64-musl": "4.50.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.50.1", - "@rollup/rollup-linux-ppc64-gnu": "4.50.1", - "@rollup/rollup-linux-riscv64-gnu": "4.50.1", - "@rollup/rollup-linux-riscv64-musl": "4.50.1", - "@rollup/rollup-linux-s390x-gnu": "4.50.1", - "@rollup/rollup-linux-x64-gnu": "4.50.1", - "@rollup/rollup-linux-x64-musl": "4.50.1", - "@rollup/rollup-openharmony-arm64": "4.50.1", - "@rollup/rollup-win32-arm64-msvc": "4.50.1", - "@rollup/rollup-win32-ia32-msvc": "4.50.1", - "@rollup/rollup-win32-x64-msvc": "4.50.1", - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", - "license": "MIT" - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/set-cookie-parser": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", - "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", - "license": "MIT" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-eslint": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.43.0.tgz", - "integrity": "sha512-FyRGJKUGvcFekRRcBKFBlAhnp4Ng8rhe8tuvvkR9OiU0gfd4vyvTRQHEckO6VDlH57jbeUQem2IpqPq9kLJH+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.43.0", - "@typescript-eslint/parser": "8.43.0", - "@typescript-eslint/typescript-estree": "8.43.0", - "@typescript-eslint/utils": "8.43.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/vite": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.5.tgz", - "integrity": "sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.5.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", - "tinyglobby": "^0.2.15" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "lightningcss": "^1.21.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/Frontend/package.json b/Frontend/package.json deleted file mode 100644 index f82b4d6..0000000 --- a/Frontend/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "frontend", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "tsc -b && vite build", - "lint": "eslint .", - "preview": "vite preview" - }, - "dependencies": { - "@fortawesome/fontawesome-svg-core": "^7.0.1", - "@fortawesome/free-solid-svg-icons": "^7.0.1", - "@fortawesome/react-fontawesome": "^3.0.2", - "@types/react-router-dom": "^5.3.3", - "jwt-decode": "^4.0.0", - "react": "^19.1.1", - "react-dom": "^19.1.1", - "react-router": "^7.9.1", - "react-router-dom": "^7.9.1" - }, - "devDependencies": { - "@eslint/js": "^9.33.0", - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.0", - "eslint": "^9.33.0", - "eslint-plugin-react-hooks": "^5.2.0", - "eslint-plugin-react-refresh": "^0.4.20", - "globals": "^16.3.0", - "typescript": "~5.8.3", - "typescript-eslint": "^8.39.1", - "vite": "^7.1.2" - } -} diff --git a/Frontend/public/embedded-finance.jpg b/Frontend/public/embedded-finance.jpg deleted file mode 100644 index 6c1c844e0b3a9e1569b932836a7cea00d2f2f886..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117667 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

?Ro$sbgOd~Kth}u$ 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 X5Orm_lhnec@u@HANFz=8d+h%Jkh`j1 diff --git a/Frontend/public/vite.svg b/Frontend/public/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/Frontend/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Frontend/src/App.css b/Frontend/src/App.css deleted file mode 100644 index e69de29..0000000 diff --git a/Frontend/src/App.tsx b/Frontend/src/App.tsx deleted file mode 100644 index b2648c2..0000000 --- a/Frontend/src/App.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import './App.css'; -import { BrowserRouter as Router, Route, Routes } from 'react-router-dom'; -import Login from './Pages/login'; - -function App() { - - - return ( - - - } /> - - - ) -} - - -export default App; diff --git a/Frontend/src/Pages/login.tsx b/Frontend/src/Pages/login.tsx deleted file mode 100644 index e4be866..0000000 --- a/Frontend/src/Pages/login.tsx +++ /dev/null @@ -1,219 +0,0 @@ -import React from 'react' -import { useNavigate } from 'react-router-dom'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { faUser } from '@fortawesome/free-solid-svg-icons'; -import { jwtDecode } from 'jwt-decode'; -import { API_URL } from '../config'; - -const Login = () => { - const navigate = useNavigate(); - const [username, setUsername] = React.useState(''); - const [password, setPassword] = React.useState(''); - const [error, setError] = React.useState(''); - - const handleSubmit = async (e: React.FormEvent) => { - e.preventDefault(); - setError(''); - try { - const response = await fetch(`${API_URL}/auth/token`, { - method: 'POST', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded', - }, - body: new URLSearchParams({ - username, - password, - }), - }); - - if (!response.ok) { - setError('Login failed. Please check your credentials.'); - return; - } - - const data = await response.json(); - const token = data.access_token; - localStorage.setItem('token', token); - - - const decoded: any = jwtDecode(token); - - if (decoded.type === 'admin') { - navigate('/admin/dashboard'); - } else if (decoded.type === 'agent') { - navigate('/agent/dashboard'); - } else { - navigate('/dashboard'); - } - } catch (err) { - setError('Login failed. Please try again.'); - } - } - return ( - <> -

- -

Login

-
-
- - ) => setUsername(e.target.value)} - /> -
-
- - ) => setPassword(e.target.value)} - /> -
- - {error &&
{error}
} -
-
- - - ) -} - -export default Login diff --git a/Frontend/src/assets/react.svg b/Frontend/src/assets/react.svg deleted file mode 100644 index 6c87de9..0000000 --- a/Frontend/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Frontend/src/config.ts b/Frontend/src/config.ts deleted file mode 100644 index 4689fe4..0000000 --- a/Frontend/src/config.ts +++ /dev/null @@ -1 +0,0 @@ -export const API_URL = "http://127.0.0.1:8000"; \ No newline at end of file diff --git a/Frontend/src/index.css b/Frontend/src/index.css deleted file mode 100644 index e69de29..0000000 diff --git a/Frontend/src/main.tsx b/Frontend/src/main.tsx deleted file mode 100644 index bef5202..0000000 --- a/Frontend/src/main.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { StrictMode } from 'react' -import { createRoot } from 'react-dom/client' -import './index.css' -import App from './App.tsx' - -createRoot(document.getElementById('root')!).render( - - - , -) diff --git a/Frontend/src/vite-env.d.ts b/Frontend/src/vite-env.d.ts deleted file mode 100644 index 11f02fe..0000000 --- a/Frontend/src/vite-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/Frontend/tsconfig.app.json b/Frontend/tsconfig.app.json deleted file mode 100644 index 227a6c6..0000000 --- a/Frontend/tsconfig.app.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "compilerOptions": { - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", - "target": "ES2022", - "useDefineForClassFields": true, - "lib": ["ES2022", "DOM", "DOM.Iterable"], - "module": "ESNext", - "skipLibCheck": true, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "verbatimModuleSyntax": true, - "moduleDetection": "force", - "noEmit": true, - "jsx": "react-jsx", - - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "erasableSyntaxOnly": true, - "noFallthroughCasesInSwitch": true, - "noUncheckedSideEffectImports": true - }, - "include": ["src"] -} diff --git a/Frontend/tsconfig.json b/Frontend/tsconfig.json deleted file mode 100644 index 1ffef60..0000000 --- a/Frontend/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "files": [], - "references": [ - { "path": "./tsconfig.app.json" }, - { "path": "./tsconfig.node.json" } - ] -} diff --git a/Frontend/tsconfig.node.json b/Frontend/tsconfig.node.json deleted file mode 100644 index f85a399..0000000 --- a/Frontend/tsconfig.node.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "compilerOptions": { - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", - "target": "ES2023", - "lib": ["ES2023"], - "module": "ESNext", - "skipLibCheck": true, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "verbatimModuleSyntax": true, - "moduleDetection": "force", - "noEmit": true, - - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "erasableSyntaxOnly": true, - "noFallthroughCasesInSwitch": true, - "noUncheckedSideEffectImports": true - }, - "include": ["vite.config.ts"] -} diff --git a/Frontend/vite.config.ts b/Frontend/vite.config.ts deleted file mode 100644 index 8b0f57b..0000000 --- a/Frontend/vite.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' - -// https://vite.dev/config/ -export default defineConfig({ - plugins: [react()], -}) From aa5932752775bf156a20929761e723b3737797b8 Mon Sep 17 00:00:00 2001 From: SenadiF Date: Tue, 14 Oct 2025 16:27:40 +0530 Subject: [PATCH 05/62] feat(ui): add new components including Skeleton, Slider, Sonner, Switch, Table, Tabs, Textarea, Toggle Group, Toggle, Tooltip, and utility hooks - Implemented Skeleton component for loading states. - Added Slider component with customizable min, max, and value props. - Introduced Sonner component for toast notifications with theme support. - Created Switch component for toggle functionality. - Developed Table component with subcomponents for headers, body, footer, rows, and cells. - Added Tabs component with triggers and content management. - Implemented Textarea component with styling and accessibility features. - Created Toggle Group and Toggle components for grouped toggle functionality. - Developed Tooltip component with customizable content and triggers. - Added useIsMobile hook for responsive design handling. - Introduced utility function for class name merging. --- Frontend/README.md | 16 +- Frontend/eslint.config.js | 4 +- Frontend/index.html | 25 +- Frontend/package-lock.json | 3970 ++++++++++++++--- Frontend/package.json | 68 +- Frontend/public/embedded-finance.jpg | Bin 117667 -> 0 bytes Frontend/src/App.css | 42 + Frontend/src/App.tsx | 99 +- Frontend/src/Pages/login.tsx | 190 - Frontend/src/components/AdminDashboard.tsx | 489 ++ Frontend/src/components/AgentDashboard.tsx | 1246 ++++++ Frontend/src/components/LoginPage.tsx | 112 + Frontend/src/components/ManagerDashboard.tsx | 356 ++ .../components/figma/ImageWithFallback.tsx | 27 + Frontend/src/components/ui/accordion.tsx | 66 + Frontend/src/components/ui/alert-dialog.tsx | 157 + Frontend/src/components/ui/alert.tsx | 66 + Frontend/src/components/ui/aspect-ratio.tsx | 11 + Frontend/src/components/ui/avatar.tsx | 53 + Frontend/src/components/ui/badge.tsx | 46 + Frontend/src/components/ui/breadcrumb.tsx | 109 + Frontend/src/components/ui/button.tsx | 58 + Frontend/src/components/ui/calendar.tsx | 75 + Frontend/src/components/ui/card.tsx | 92 + Frontend/src/components/ui/carousel.tsx | 241 + Frontend/src/components/ui/chart.tsx | 353 ++ Frontend/src/components/ui/checkbox.tsx | 32 + Frontend/src/components/ui/collapsible.tsx | 33 + Frontend/src/components/ui/command.tsx | 177 + Frontend/src/components/ui/context-menu.tsx | 252 ++ Frontend/src/components/ui/dialog.tsx | 135 + Frontend/src/components/ui/drawer.tsx | 132 + Frontend/src/components/ui/dropdown-menu.tsx | 257 ++ Frontend/src/components/ui/form.tsx | 168 + Frontend/src/components/ui/hover-card.tsx | 44 + Frontend/src/components/ui/input-otp.tsx | 77 + Frontend/src/components/ui/input.tsx | 21 + Frontend/src/components/ui/label.tsx | 24 + Frontend/src/components/ui/menubar.tsx | 276 ++ .../src/components/ui/navigation-menu.tsx | 168 + Frontend/src/components/ui/pagination.tsx | 127 + Frontend/src/components/ui/popover.tsx | 48 + Frontend/src/components/ui/progress.tsx | 31 + Frontend/src/components/ui/radio-group.tsx | 45 + Frontend/src/components/ui/resizable.tsx | 56 + Frontend/src/components/ui/scroll-area.tsx | 58 + Frontend/src/components/ui/select.tsx | 189 + Frontend/src/components/ui/separator.tsx | 28 + Frontend/src/components/ui/sheet.tsx | 139 + Frontend/src/components/ui/sidebar.tsx | 726 +++ Frontend/src/components/ui/skeleton.tsx | 13 + Frontend/src/components/ui/slider.tsx | 63 + Frontend/src/components/ui/sonner.tsx | 25 + Frontend/src/components/ui/switch.tsx | 31 + Frontend/src/components/ui/table.tsx | 116 + Frontend/src/components/ui/tabs.tsx | 66 + Frontend/src/components/ui/textarea.tsx | 18 + Frontend/src/components/ui/toggle-group.tsx | 73 + Frontend/src/components/ui/toggle.tsx | 47 + Frontend/src/components/ui/tooltip.tsx | 61 + Frontend/src/components/ui/use-mobile.ts | 21 + Frontend/src/components/ui/utils.ts | 6 + Frontend/src/index.css | 190 + Frontend/src/vite-env.d.ts | 1 - Frontend/tsconfig.app.json | 5 +- Frontend/tsconfig.node.json | 1 + Frontend/vite.config.ts | 9 +- 67 files changed, 11025 insertions(+), 935 deletions(-) delete mode 100644 Frontend/public/embedded-finance.jpg delete mode 100644 Frontend/src/Pages/login.tsx create mode 100644 Frontend/src/components/AdminDashboard.tsx create mode 100644 Frontend/src/components/AgentDashboard.tsx create mode 100644 Frontend/src/components/LoginPage.tsx create mode 100644 Frontend/src/components/ManagerDashboard.tsx create mode 100644 Frontend/src/components/figma/ImageWithFallback.tsx create mode 100644 Frontend/src/components/ui/accordion.tsx create mode 100644 Frontend/src/components/ui/alert-dialog.tsx create mode 100644 Frontend/src/components/ui/alert.tsx create mode 100644 Frontend/src/components/ui/aspect-ratio.tsx create mode 100644 Frontend/src/components/ui/avatar.tsx create mode 100644 Frontend/src/components/ui/badge.tsx create mode 100644 Frontend/src/components/ui/breadcrumb.tsx create mode 100644 Frontend/src/components/ui/button.tsx create mode 100644 Frontend/src/components/ui/calendar.tsx create mode 100644 Frontend/src/components/ui/card.tsx create mode 100644 Frontend/src/components/ui/carousel.tsx create mode 100644 Frontend/src/components/ui/chart.tsx create mode 100644 Frontend/src/components/ui/checkbox.tsx create mode 100644 Frontend/src/components/ui/collapsible.tsx create mode 100644 Frontend/src/components/ui/command.tsx create mode 100644 Frontend/src/components/ui/context-menu.tsx create mode 100644 Frontend/src/components/ui/dialog.tsx create mode 100644 Frontend/src/components/ui/drawer.tsx create mode 100644 Frontend/src/components/ui/dropdown-menu.tsx create mode 100644 Frontend/src/components/ui/form.tsx create mode 100644 Frontend/src/components/ui/hover-card.tsx create mode 100644 Frontend/src/components/ui/input-otp.tsx create mode 100644 Frontend/src/components/ui/input.tsx create mode 100644 Frontend/src/components/ui/label.tsx create mode 100644 Frontend/src/components/ui/menubar.tsx create mode 100644 Frontend/src/components/ui/navigation-menu.tsx create mode 100644 Frontend/src/components/ui/pagination.tsx create mode 100644 Frontend/src/components/ui/popover.tsx create mode 100644 Frontend/src/components/ui/progress.tsx create mode 100644 Frontend/src/components/ui/radio-group.tsx create mode 100644 Frontend/src/components/ui/resizable.tsx create mode 100644 Frontend/src/components/ui/scroll-area.tsx create mode 100644 Frontend/src/components/ui/select.tsx create mode 100644 Frontend/src/components/ui/separator.tsx create mode 100644 Frontend/src/components/ui/sheet.tsx create mode 100644 Frontend/src/components/ui/sidebar.tsx create mode 100644 Frontend/src/components/ui/skeleton.tsx create mode 100644 Frontend/src/components/ui/slider.tsx create mode 100644 Frontend/src/components/ui/sonner.tsx create mode 100644 Frontend/src/components/ui/switch.tsx create mode 100644 Frontend/src/components/ui/table.tsx create mode 100644 Frontend/src/components/ui/tabs.tsx create mode 100644 Frontend/src/components/ui/textarea.tsx create mode 100644 Frontend/src/components/ui/toggle-group.tsx create mode 100644 Frontend/src/components/ui/toggle.tsx create mode 100644 Frontend/src/components/ui/tooltip.tsx create mode 100644 Frontend/src/components/ui/use-mobile.ts create mode 100644 Frontend/src/components/ui/utils.ts delete mode 100644 Frontend/src/vite-env.d.ts diff --git a/Frontend/README.md b/Frontend/README.md index 7959ce4..d2e7761 100644 --- a/Frontend/README.md +++ b/Frontend/README.md @@ -4,15 +4,19 @@ This template provides a minimal setup to get React working in Vite with HMR and Currently, two official plugins are available: -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh +## React Compiler + +The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). + ## Expanding the ESLint configuration If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: ```js -export default tseslint.config([ +export default defineConfig([ globalIgnores(['dist']), { files: ['**/*.{ts,tsx}'], @@ -20,11 +24,11 @@ export default tseslint.config([ // Other configs... // Remove tseslint.configs.recommended and replace with this - ...tseslint.configs.recommendedTypeChecked, + tseslint.configs.recommendedTypeChecked, // Alternatively, use this for stricter rules - ...tseslint.configs.strictTypeChecked, + tseslint.configs.strictTypeChecked, // Optionally, add this for stylistic rules - ...tseslint.configs.stylisticTypeChecked, + tseslint.configs.stylisticTypeChecked, // Other configs... ], @@ -46,7 +50,7 @@ You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-re import reactX from 'eslint-plugin-react-x' import reactDom from 'eslint-plugin-react-dom' -export default tseslint.config([ +export default defineConfig([ globalIgnores(['dist']), { files: ['**/*.{ts,tsx}'], diff --git a/Frontend/eslint.config.js b/Frontend/eslint.config.js index d94e7de..b19330b 100644 --- a/Frontend/eslint.config.js +++ b/Frontend/eslint.config.js @@ -3,9 +3,9 @@ import globals from 'globals' import reactHooks from 'eslint-plugin-react-hooks' import reactRefresh from 'eslint-plugin-react-refresh' import tseslint from 'typescript-eslint' -import { globalIgnores } from 'eslint/config' +import { defineConfig, globalIgnores } from 'eslint/config' -export default tseslint.config([ +export default defineConfig([ globalIgnores(['dist']), { files: ['**/*.{ts,tsx}'], diff --git a/Frontend/index.html b/Frontend/index.html index b159f12..072a57e 100644 --- a/Frontend/index.html +++ b/Frontend/index.html @@ -1,16 +1,13 @@ - - - - - - B-Trust Bank - - - -
- - - - \ No newline at end of file + + + + + frontend + + +
+ + + diff --git a/Frontend/package-lock.json b/Frontend/package-lock.json index 4885108..6c3a8b9 100644 --- a/Frontend/package-lock.json +++ b/Frontend/package-lock.json @@ -8,27 +8,63 @@ "name": "frontend", "version": "0.0.0", "dependencies": { - "@fortawesome/fontawesome-svg-core": "^7.0.1", - "@fortawesome/free-solid-svg-icons": "^7.0.1", - "@fortawesome/react-fontawesome": "^3.0.2", - "@types/react-router-dom": "^5.3.3", + "@radix-ui/react-accordion": "^1.2.12", + "@radix-ui/react-alert-dialog": "^1.1.15", + "@radix-ui/react-aspect-ratio": "^1.1.7", + "@radix-ui/react-avatar": "^1.1.10", + "@radix-ui/react-checkbox": "^1.3.3", + "@radix-ui/react-context-menu": "^2.2.16", + "@radix-ui/react-dialog": "^1.1.15", + "@radix-ui/react-dropdown-menu": "^2.1.16", + "@radix-ui/react-hover-card": "^1.1.15", + "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-menubar": "^1.1.16", + "@radix-ui/react-navigation-menu": "^1.2.14", + "@radix-ui/react-popover": "^1.1.15", + "@radix-ui/react-progress": "^1.1.7", + "@radix-ui/react-radio-group": "^1.3.8", + "@radix-ui/react-scroll-area": "^1.2.10", + "@radix-ui/react-select": "^2.2.6", + "@radix-ui/react-separator": "^1.1.7", + "@radix-ui/react-slider": "^1.3.6", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-switch": "^1.2.6", + "@radix-ui/react-tabs": "^1.1.13", + "@radix-ui/react-toggle": "^1.1.10", + "@radix-ui/react-toggle-group": "^1.1.11", + "@radix-ui/react-tooltip": "^1.2.8", + "@tailwindcss/vite": "^4.1.14", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "^1.1.1", + "embla-carousel-react": "^8.6.0", + "input-otp": "^1.4.2", + "lucide-react": "^0.545.0", + "next-themes": "^0.4.6", "react": "^19.1.1", + "react-day-picker": "^9.11.1", "react-dom": "^19.1.1", - "react-router": "^7.9.1", - "react-router-dom": "^7.9.1" + "react-hook-form": "^7.65.0", + "react-resizable-panels": "^3.0.6", + "recharts": "^3.2.1", + "sonner": "^2.0.7", + "tailwind-merge": "^3.3.1", + "tailwindcss": "^4.1.14", + "vaul": "^1.1.2" }, "devDependencies": { - "@eslint/js": "^9.33.0", - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.0", - "eslint": "^9.33.0", + "@eslint/js": "^9.36.0", + "@types/node": "^24.6.0", + "@types/react": "^19.1.16", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.4", + "eslint": "^9.36.0", "eslint-plugin-react-hooks": "^5.2.0", - "eslint-plugin-react-refresh": "^0.4.20", - "globals": "^16.3.0", - "typescript": "~5.8.3", - "typescript-eslint": "^8.39.1", - "vite": "^7.1.2" + "eslint-plugin-react-refresh": "^0.4.22", + "globals": "^16.4.0", + "typescript": "~5.9.3", + "typescript-eslint": "^8.45.0", + "vite": "^7.1.7" } }, "node_modules/@babel/code-frame": { @@ -313,14 +349,19 @@ "node": ">=6.9.0" } }, + "node_modules/@date-fns/tz": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@date-fns/tz/-/tz-1.4.1.tgz", + "integrity": "sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==", + "license": "MIT" + }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz", - "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.10.tgz", + "integrity": "sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==", "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -331,13 +372,12 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz", - "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.10.tgz", + "integrity": "sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==", "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -348,13 +388,12 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz", - "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.10.tgz", + "integrity": "sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -365,13 +404,12 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz", - "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.10.tgz", + "integrity": "sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -382,13 +420,12 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz", - "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.10.tgz", + "integrity": "sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -399,13 +436,12 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz", - "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.10.tgz", + "integrity": "sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -416,13 +452,12 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz", - "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.10.tgz", + "integrity": "sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -433,13 +468,12 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz", - "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.10.tgz", + "integrity": "sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -450,13 +484,12 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz", - "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.10.tgz", + "integrity": "sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==", "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -467,13 +500,12 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz", - "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.10.tgz", + "integrity": "sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -484,13 +516,12 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz", - "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.10.tgz", + "integrity": "sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==", "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -501,13 +532,12 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz", - "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.10.tgz", + "integrity": "sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==", "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -518,13 +548,12 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz", - "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.10.tgz", + "integrity": "sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==", "cpu": [ "mips64el" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -535,13 +564,12 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz", - "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.10.tgz", + "integrity": "sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==", "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -552,13 +580,12 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz", - "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.10.tgz", + "integrity": "sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==", "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -569,13 +596,12 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz", - "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.10.tgz", + "integrity": "sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==", "cpu": [ "s390x" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -586,13 +612,12 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz", - "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.10.tgz", + "integrity": "sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -603,13 +628,12 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz", - "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.10.tgz", + "integrity": "sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -620,13 +644,12 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz", - "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.10.tgz", + "integrity": "sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -637,13 +660,12 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz", - "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.10.tgz", + "integrity": "sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -654,13 +676,12 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz", - "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.10.tgz", + "integrity": "sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -671,13 +692,12 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz", - "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.10.tgz", + "integrity": "sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -688,13 +708,12 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz", - "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.10.tgz", + "integrity": "sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -705,13 +724,12 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz", - "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.10.tgz", + "integrity": "sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -722,13 +740,12 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz", - "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.10.tgz", + "integrity": "sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==", "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -739,13 +756,12 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz", - "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.10.tgz", + "integrity": "sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -813,19 +829,22 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", - "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.0.tgz", + "integrity": "sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.16.0" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/core": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", - "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", + "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -873,9 +892,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.35.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.35.0.tgz", - "integrity": "sha512-30iXE9whjlILfWobBkNerJo+TXYsgVM5ERQwMcMKCHckHflCmf7wXDAHlARoWnh0s1U72WqlbeyE7iAcCzuCPw==", + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.37.0.tgz", + "integrity": "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==", "dev": true, "license": "MIT", "engines": { @@ -896,65 +915,57 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", - "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", + "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.15.2", + "@eslint/core": "^0.16.0", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@fortawesome/fontawesome-common-types": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-7.0.1.tgz", - "integrity": "sha512-0VpNtO5cNe1/HQWMkl4OdncYK/mv9hnBte0Ew0n6DMzmo3Q3WzDFABHm6LeNTipt5zAyhQ6Ugjiu8aLaEjh1gg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@fortawesome/fontawesome-svg-core": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-7.0.1.tgz", - "integrity": "sha512-x0cR55ILVqFpUioSMf6ebpRCMXMcheGN743P05W2RB5uCNpJUqWIqW66Lap8PfL/lngvjTbZj0BNSUweIr/fHQ==", + "node_modules/@floating-ui/core": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", + "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", "license": "MIT", "dependencies": { - "@fortawesome/fontawesome-common-types": "7.0.1" - }, - "engines": { - "node": ">=6" + "@floating-ui/utils": "^0.2.10" } }, - "node_modules/@fortawesome/free-solid-svg-icons": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-7.0.1.tgz", - "integrity": "sha512-esKuSrl1WMOTMDLNt38i16VfLe/gRZt2ZAJ3Yw7slfs7sj583MKqNFqO57zmhknk1Sya6f9Wys89aCzIJkcqlg==", - "license": "(CC-BY-4.0 AND MIT)", + "node_modules/@floating-ui/dom": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", + "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", + "license": "MIT", "dependencies": { - "@fortawesome/fontawesome-common-types": "7.0.1" - }, - "engines": { - "node": ">=6" + "@floating-ui/core": "^1.7.3", + "@floating-ui/utils": "^0.2.10" } }, - "node_modules/@fortawesome/react-fontawesome": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-3.0.2.tgz", - "integrity": "sha512-cmp/nT0pPC7HUALF8uc3+D5ECwEBWxYQbOIHwtGUWEu72sWtZc26k5onr920HWOViF0nYaC+Qzz6Ln56SQcaVg==", + "node_modules/@floating-ui/react-dom": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz", + "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==", "license": "MIT", - "engines": { - "node": ">=20" + "dependencies": { + "@floating-ui/dom": "^1.7.4" }, "peerDependencies": { - "@fortawesome/fontawesome-svg-core": "~6 || ~7", - "react": "^18.0.0 || ^19.0.0" + "react": ">=16.8.0", + "react-dom": ">=16.8.0" } }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "license": "MIT" + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -1007,11 +1018,22 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", @@ -1022,7 +1044,6 @@ "version": "2.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -1033,7 +1054,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -1043,14 +1063,12 @@ "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.30", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", - "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", - "dev": true, + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -1095,161 +1113,1496 @@ "node": ">= 8" } }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.34", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.34.tgz", - "integrity": "sha512-LyAREkZHP5pMom7c24meKmJCdhf2hEyvam2q0unr3or9ydwDL+DJ8chTF6Av/RFPb3rH8UFBdMzO5MxTZW97oA==", - "dev": true, + "node_modules/@radix-ui/number": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", "license": "MIT" }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.1.tgz", - "integrity": "sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] + "node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.1.tgz", - "integrity": "sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@radix-ui/react-accordion": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.12.tgz", + "integrity": "sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==", "license": "MIT", - "optional": true, - "os": [ - "android" - ] + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collapsible": "1.1.12", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.1.tgz", - "integrity": "sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@radix-ui/react-alert-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.15.tgz", + "integrity": "sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dialog": "1.1.15", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.1.tgz", - "integrity": "sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.1.tgz", - "integrity": "sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@radix-ui/react-aspect-ratio": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.7.tgz", + "integrity": "sha512-Yq6lvO9HQyPwev1onK1daHCHqXVLzPhSVjmsNjCa2Zcxy2f7uJD2itDtxknv6FzAKCwD1qQkeVDmX/cev13n/g==", "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.1.tgz", - "integrity": "sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@radix-ui/react-avatar": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.10.tgz", + "integrity": "sha512-V8piFfWapM5OmNCXTzVQY+E1rDa53zY+MQ4Y7356v4fFz6vqCyUtIz2rUD44ZEdwg78/jKmMJHj07+C/Z/rcog==", "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] + "dependencies": { + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-is-hydrated": "0.1.0", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.1.tgz", - "integrity": "sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==", - "cpu": [ - "arm" - ], - "dev": true, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz", + "integrity": "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.1.tgz", - "integrity": "sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==", - "cpu": [ - "arm" - ], - "dev": true, + "node_modules/@radix-ui/react-collapsible": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.12.tgz", + "integrity": "sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.1.tgz", - "integrity": "sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.1.tgz", - "integrity": "sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.1.tgz", - "integrity": "sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==", - "cpu": [ + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu": { + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.2.16.tgz", + "integrity": "sha512-O8morBEW+HsVG28gYDZPTrT9UUovQUlJue5YO836tiTJhuIWBm/zQHc7j388sHWtdH/xUZurK9olD2+pcqx5ww==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", + "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.16.tgz", + "integrity": "sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-hover-card": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-hover-card/-/react-hover-card-1.1.15.tgz", + "integrity": "sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.7.tgz", + "integrity": "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.16.tgz", + "integrity": "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menubar": { + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menubar/-/react-menubar-1.1.16.tgz", + "integrity": "sha512-EB1FktTz5xRRi2Er974AUQZWg2yVBb1yjip38/lgwtCVRd3a+maUoGHN/xs9Yv8SY8QwbSEb+YrxGadVWbEutA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.14.tgz", + "integrity": "sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.15.tgz", + "integrity": "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.7.tgz", + "integrity": "sha512-vPdg/tF6YC/ynuBIJlk1mm7Le0VgW6ub6J2UWnTQ7/D23KXcPI1qy+0vBkgKgd38RCMJavBXpB83HPNFMTb0Fg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.3.8.tgz", + "integrity": "sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.10.tgz", + "integrity": "sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz", + "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-separator": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.7.tgz", + "integrity": "sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slider": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.3.6.tgz", + "integrity": "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.2.6.tgz", + "integrity": "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz", + "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz", + "integrity": "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz", + "integrity": "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-toggle": "1.1.10", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz", + "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-is-hydrated": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.0.tgz", + "integrity": "sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", + "license": "MIT" + }, + "node_modules/@reduxjs/toolkit": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.9.0.tgz", + "integrity": "sha512-fSfQlSRu9Z5yBkvsNhYF2rPS8cGXn/TZVrlwN1948QyZ8xMZ0JvP50S2acZNaf+o63u6aEeMjipFyksjIcWrog==", + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@standard-schema/utils": "^0.3.0", + "immer": "^10.0.3", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.1.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.38.tgz", + "integrity": "sha512-N/ICGKleNhA5nc9XXQG/kkKHJ7S55u0x0XUJbbkmdCnFuoRkM1Il12q9q0eX19+M7KKUEPw/daUPIRnxhcxAIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.4.tgz", + "integrity": "sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.4.tgz", + "integrity": "sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.4.tgz", + "integrity": "sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.4.tgz", + "integrity": "sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.4.tgz", + "integrity": "sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.4.tgz", + "integrity": "sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.4.tgz", + "integrity": "sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.4.tgz", + "integrity": "sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.4.tgz", + "integrity": "sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.4.tgz", + "integrity": "sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.4.tgz", + "integrity": "sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==", + "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1257,13 +2610,12 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.1.tgz", - "integrity": "sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.4.tgz", + "integrity": "sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==", "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1271,13 +2623,12 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.1.tgz", - "integrity": "sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.4.tgz", + "integrity": "sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==", "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1285,116 +2636,395 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.1.tgz", - "integrity": "sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.4.tgz", + "integrity": "sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==", "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.4.tgz", + "integrity": "sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.4.tgz", + "integrity": "sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.4.tgz", + "integrity": "sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.4.tgz", + "integrity": "sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.4.tgz", + "integrity": "sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.4.tgz", + "integrity": "sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.4.tgz", + "integrity": "sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.4.tgz", + "integrity": "sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "license": "MIT" + }, + "node_modules/@standard-schema/utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", + "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", + "license": "MIT" + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.14.tgz", + "integrity": "sha512-hpz+8vFk3Ic2xssIA3e01R6jkmsAhvkQdXlEbRTk6S10xDAtiQiM3FyvZVGsucefq764euO/b8WUW9ysLdThHw==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "enhanced-resolve": "^5.18.3", + "jiti": "^2.6.0", + "lightningcss": "1.30.1", + "magic-string": "^0.30.19", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.14" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.14.tgz", + "integrity": "sha512-23yx+VUbBwCg2x5XWdB8+1lkPajzLmALEfMb51zZUBYaYVPDQvBSD/WYDqiVyBIo2BZFa3yw1Rpy3G2Jp+K0dw==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.5.1" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.14", + "@tailwindcss/oxide-darwin-arm64": "4.1.14", + "@tailwindcss/oxide-darwin-x64": "4.1.14", + "@tailwindcss/oxide-freebsd-x64": "4.1.14", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.14", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.14", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.14", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.14", + "@tailwindcss/oxide-linux-x64-musl": "4.1.14", + "@tailwindcss/oxide-wasm32-wasi": "4.1.14", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.14", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.14" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.14.tgz", + "integrity": "sha512-a94ifZrGwMvbdeAxWoSuGcIl6/DOP5cdxagid7xJv6bwFp3oebp7y2ImYsnZBMTwjn5Ev5xESvS3FFYUGgPODQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.14.tgz", + "integrity": "sha512-HkFP/CqfSh09xCnrPJA7jud7hij5ahKyWomrC3oiO2U9i0UjP17o9pJbxUN0IJ471GTQQmzwhp0DEcpbp4MZTA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.14.tgz", + "integrity": "sha512-eVNaWmCgdLf5iv6Qd3s7JI5SEFBFRtfm6W0mphJYXgvnDEAZ5sZzqmI06bK6xo0IErDHdTA5/t7d4eTfWbWOFw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.14.tgz", + "integrity": "sha512-QWLoRXNikEuqtNb0dhQN6wsSVVjX6dmUFzuuiL09ZeXju25dsei2uIPl71y2Ic6QbNBsB4scwBoFnlBfabHkEw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.14.tgz", + "integrity": "sha512-VB4gjQni9+F0VCASU+L8zSIyjrLLsy03sjcR3bM0V2g4SNamo0FakZFKyUQ96ZVwGK4CaJsc9zd/obQy74o0Fw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.14.tgz", + "integrity": "sha512-qaEy0dIZ6d9vyLnmeg24yzA8XuEAD9WjpM5nIM1sUgQ/Zv7cVkharPDQcmm/t/TvXoKo/0knI3me3AGfdx6w1w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.1.tgz", - "integrity": "sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==", + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.14.tgz", + "integrity": "sha512-ISZjT44s59O8xKsPEIesiIydMG/sCXoMBCqsphDm/WcbnuWLxxb+GcvSIIA5NjUw6F8Tex7s5/LM2yDy8RqYBQ==", "cpu": [ - "s390x" + "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.1.tgz", - "integrity": "sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==", + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.14.tgz", + "integrity": "sha512-02c6JhLPJj10L2caH4U0zF8Hji4dOeahmuMl23stk0MU1wfd1OraE7rOloidSF8W5JTHkFdVo/O7uRUJJnUAJg==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.1.tgz", - "integrity": "sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==", + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.14.tgz", + "integrity": "sha512-TNGeLiN1XS66kQhxHG/7wMeQDOoL0S33x9BgmydbrWAb9Qw0KYdd8o1ifx4HOGDWhVmJ+Ul+JQ7lyknQFilO3Q==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.1.tgz", - "integrity": "sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==", + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.14.tgz", + "integrity": "sha512-uZYAsaW/jS/IYkd6EWPJKW/NlPNSkWkBlaeVBi/WsFQNP05/bzkebUL8FH1pdsqx4f2fH/bWFcUABOM9nfiJkQ==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], "cpu": [ - "arm64" + "wasm32" ], - "dev": true, "license": "MIT", "optional": true, - "os": [ - "openharmony" - ] + "dependencies": { + "@emnapi/core": "^1.5.0", + "@emnapi/runtime": "^1.5.0", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.0.5", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.0.0" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.1.tgz", - "integrity": "sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==", + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.14.tgz", + "integrity": "sha512-Az0RnnkcvRqsuoLH2Z4n3JfAef0wElgzHD5Aky/e+0tBUxUhIeIqFBTMNQvmMRSP15fWwmvjBxZ3Q8RhsDnxAA==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.1.tgz", - "integrity": "sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==", - "cpu": [ - "ia32" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "engines": { + "node": ">= 10" + } }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.1.tgz", - "integrity": "sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==", + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.14.tgz", + "integrity": "sha512-ttblVGHgf68kEE4om1n/n44I0yGPkCPbLsqzjvybhpwa6mKKtgFfAzy6btc3HRmuW7nHe0OOrSeNP9sQmmH9XA==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.14.tgz", + "integrity": "sha512-BoFUoU0XqgCUS1UXWhmDJroKKhNXeDzD7/XwabjkDIAbMnc4ULn5e2FuEuBbhZ6ENZoSYzKlzvZ44Yr6EUDUSA==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.1.14", + "@tailwindcss/oxide": "4.1.14", + "tailwindcss": "4.1.14" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7" + } }, "node_modules/@types/babel__core": { "version": "7.20.5", @@ -1441,17 +3071,73 @@ "@babel/types": "^7.28.2" } }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/history": { - "version": "4.7.11", - "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", - "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", "license": "MIT" }, "node_modules/@types/json-schema": { @@ -1461,58 +3147,54 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/node": { + "version": "24.7.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.7.2.tgz", + "integrity": "sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.14.0" + } + }, "node_modules/@types/react": { - "version": "19.1.12", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.12.tgz", - "integrity": "sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w==", + "version": "19.2.2", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.2.tgz", + "integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==", + "devOptional": true, "license": "MIT", "dependencies": { "csstype": "^3.0.2" } }, "node_modules/@types/react-dom": { - "version": "19.1.9", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.9.tgz", - "integrity": "sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ==", - "dev": true, + "version": "19.2.2", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.2.tgz", + "integrity": "sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==", + "devOptional": true, "license": "MIT", "peerDependencies": { - "@types/react": "^19.0.0" - } - }, - "node_modules/@types/react-router": { - "version": "5.1.20", - "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", - "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", - "license": "MIT", - "dependencies": { - "@types/history": "^4.7.11", - "@types/react": "*" + "@types/react": "^19.2.0" } }, - "node_modules/@types/react-router-dom": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", - "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", - "license": "MIT", - "dependencies": { - "@types/history": "^4.7.11", - "@types/react": "*", - "@types/react-router": "*" - } + "node_modules/@types/use-sync-external-store": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", + "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==", + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.43.0.tgz", - "integrity": "sha512-8tg+gt7ENL7KewsKMKDHXR1vm8tt9eMxjJBYINf6swonlWgkYn5NwyIgXpbbDxTNU5DgpDFfj95prcTq2clIQQ==", + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.1.tgz", + "integrity": "sha512-rUsLh8PXmBjdiPY+Emjz9NX2yHvhS11v0SR6xNJkm5GM1MO9ea/1GoDKlHHZGrOJclL/cZ2i/vRUYVtjRhrHVQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.43.0", - "@typescript-eslint/type-utils": "8.43.0", - "@typescript-eslint/utils": "8.43.0", - "@typescript-eslint/visitor-keys": "8.43.0", + "@typescript-eslint/scope-manager": "8.46.1", + "@typescript-eslint/type-utils": "8.46.1", + "@typescript-eslint/utils": "8.46.1", + "@typescript-eslint/visitor-keys": "8.46.1", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", @@ -1526,7 +3208,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.43.0", + "@typescript-eslint/parser": "^8.46.1", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } @@ -1542,16 +3224,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.43.0.tgz", - "integrity": "sha512-B7RIQiTsCBBmY+yW4+ILd6mF5h1FUwJsVvpqkrgpszYifetQ2Ke+Z4u6aZh0CblkUGIdR59iYVyXqqZGkZ3aBw==", + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.1.tgz", + "integrity": "sha512-6JSSaBZmsKvEkbRUkf7Zj7dru/8ZCrJxAqArcLaVMee5907JdtEbKGsZ7zNiIm/UAkpGUkaSMZEXShnN2D1HZA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.43.0", - "@typescript-eslint/types": "8.43.0", - "@typescript-eslint/typescript-estree": "8.43.0", - "@typescript-eslint/visitor-keys": "8.43.0", + "@typescript-eslint/scope-manager": "8.46.1", + "@typescript-eslint/types": "8.46.1", + "@typescript-eslint/typescript-estree": "8.46.1", + "@typescript-eslint/visitor-keys": "8.46.1", "debug": "^4.3.4" }, "engines": { @@ -1567,14 +3249,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.43.0.tgz", - "integrity": "sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==", + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.1.tgz", + "integrity": "sha512-FOIaFVMHzRskXr5J4Jp8lFVV0gz5ngv3RHmn+E4HYxSJ3DgDzU7fVI1/M7Ijh1zf6S7HIoaIOtln1H5y8V+9Zg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.43.0", - "@typescript-eslint/types": "^8.43.0", + "@typescript-eslint/tsconfig-utils": "^8.46.1", + "@typescript-eslint/types": "^8.46.1", "debug": "^4.3.4" }, "engines": { @@ -1589,14 +3271,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.43.0.tgz", - "integrity": "sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==", + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.1.tgz", + "integrity": "sha512-weL9Gg3/5F0pVQKiF8eOXFZp8emqWzZsOJuWRUNtHT+UNV2xSJegmpCNQHy37aEQIbToTq7RHKhWvOsmbM680A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.43.0", - "@typescript-eslint/visitor-keys": "8.43.0" + "@typescript-eslint/types": "8.46.1", + "@typescript-eslint/visitor-keys": "8.46.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1607,9 +3289,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.43.0.tgz", - "integrity": "sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==", + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.1.tgz", + "integrity": "sha512-X88+J/CwFvlJB+mK09VFqx5FE4H5cXD+H/Bdza2aEWkSb8hnWIQorNcscRl4IEo1Cz9VI/+/r/jnGWkbWPx54g==", "dev": true, "license": "MIT", "engines": { @@ -1624,15 +3306,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.43.0.tgz", - "integrity": "sha512-qaH1uLBpBuBBuRf8c1mLJ6swOfzCXryhKND04Igr4pckzSEW9JX5Aw9AgW00kwfjWJF0kk0ps9ExKTfvXfw4Qg==", + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.1.tgz", + "integrity": "sha512-+BlmiHIiqufBxkVnOtFwjah/vrkF4MtKKvpXrKSPLCkCtAp8H01/VV43sfqA98Od7nJpDcFnkwgyfQbOG0AMvw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.43.0", - "@typescript-eslint/typescript-estree": "8.43.0", - "@typescript-eslint/utils": "8.43.0", + "@typescript-eslint/types": "8.46.1", + "@typescript-eslint/typescript-estree": "8.46.1", + "@typescript-eslint/utils": "8.46.1", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -1649,9 +3331,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.43.0.tgz", - "integrity": "sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==", + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.1.tgz", + "integrity": "sha512-C+soprGBHwWBdkDpbaRC4paGBrkIXxVlNohadL5o0kfhsXqOC6GYH2S/Obmig+I0HTDl8wMaRySwrfrXVP8/pQ==", "dev": true, "license": "MIT", "engines": { @@ -1663,16 +3345,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.43.0.tgz", - "integrity": "sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==", + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.1.tgz", + "integrity": "sha512-uIifjT4s8cQKFQ8ZBXXyoUODtRoAd7F7+G8MKmtzj17+1UbdzFl52AzRyZRyKqPHhgzvXunnSckVu36flGy8cg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.43.0", - "@typescript-eslint/tsconfig-utils": "8.43.0", - "@typescript-eslint/types": "8.43.0", - "@typescript-eslint/visitor-keys": "8.43.0", + "@typescript-eslint/project-service": "8.46.1", + "@typescript-eslint/tsconfig-utils": "8.46.1", + "@typescript-eslint/types": "8.46.1", + "@typescript-eslint/visitor-keys": "8.46.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -1718,9 +3400,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { @@ -1731,16 +3413,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.43.0.tgz", - "integrity": "sha512-S1/tEmkUeeswxd0GGcnwuVQPFWo8NzZTOMxCvw8BX7OMxnNae+i8Tm7REQen/SwUIPoPqfKn7EaZ+YLpiB3k9g==", + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.1.tgz", + "integrity": "sha512-vkYUy6LdZS7q1v/Gxb2Zs7zziuXN0wxqsetJdeZdRe/f5dwJFglmuvZBfTUivCtjH725C1jWCDfpadadD95EDQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.43.0", - "@typescript-eslint/types": "8.43.0", - "@typescript-eslint/typescript-estree": "8.43.0" + "@typescript-eslint/scope-manager": "8.46.1", + "@typescript-eslint/types": "8.46.1", + "@typescript-eslint/typescript-estree": "8.46.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1755,13 +3437,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.43.0.tgz", - "integrity": "sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==", + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.1.tgz", + "integrity": "sha512-ptkmIf2iDkNUjdeu2bQqhFPV1m6qTnFFjg7PPDjxKWaMaP0Z6I9l30Jr3g5QqbZGdw8YdYvLp+XnqnWWZOg/NA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.43.0", + "@typescript-eslint/types": "8.46.1", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -1773,16 +3455,16 @@ } }, "node_modules/@vitejs/plugin-react": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.0.2.tgz", - "integrity": "sha512-tmyFgixPZCx2+e6VO9TNITWcCQl8+Nl/E8YbAyPVv85QCc7/A3JrdfG2A8gIzvVhWuzMOVrFW1aReaNxrI6tbw==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.0.4.tgz", + "integrity": "sha512-La0KD0vGkVkSk6K+piWDKRUyg8Rl5iAIKRMH0vMJI0Eg47bq1eOxmoObAaQG37WMW9MSyk7Cs8EIWwJC1PtzKA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.28.3", + "@babel/core": "^7.28.4", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", - "@rolldown/pluginutils": "1.0.0-beta.34", + "@rolldown/pluginutils": "1.0.0-beta.38", "@types/babel__core": "^7.20.5", "react-refresh": "^0.17.0" }, @@ -1856,6 +3538,18 @@ "dev": true, "license": "Python-2.0" }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1863,6 +3557,16 @@ "dev": true, "license": "MIT" }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.16", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.16.tgz", + "integrity": "sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -1888,9 +3592,9 @@ } }, "node_modules/browserslist": { - "version": "4.25.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.4.tgz", - "integrity": "sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==", + "version": "4.26.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz", + "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==", "dev": true, "funding": [ { @@ -1908,9 +3612,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001737", - "electron-to-chromium": "^1.5.211", - "node-releases": "^2.0.19", + "baseline-browser-mapping": "^2.8.9", + "caniuse-lite": "^1.0.30001746", + "electron-to-chromium": "^1.5.227", + "node-releases": "^2.0.21", "update-browserslist-db": "^1.1.3" }, "bin": { @@ -1931,9 +3636,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001741", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001741.tgz", - "integrity": "sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==", + "version": "1.0.30001750", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001750.tgz", + "integrity": "sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==", "dev": true, "funding": [ { @@ -1958,84 +3663,259 @@ "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cmdk": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.1.1.tgz", + "integrity": "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "^1.1.1", + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-id": "^1.1.0", + "@radix-ui/react-primitive": "^2.0.2" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "react-dom": "^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=12" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", "dependencies": { - "color-name": "~1.1.4" + "d3-array": "2 - 3" }, "engines": { - "node": ">=7.0.0" + "node": ">=12" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } }, - "node_modules/cookie": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", - "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", - "license": "MIT", + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", "engines": { - "node": ">=18" + "node": ">=12" } }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" } }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "node_modules/date-fns-jalali": { + "version": "4.1.0-0", + "resolved": "https://registry.npmjs.org/date-fns-jalali/-/date-fns-jalali-4.1.0-0.tgz", + "integrity": "sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg==", "license": "MIT" }, "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { @@ -2050,6 +3930,12 @@ } } }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", + "license": "MIT" + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -2057,18 +3943,83 @@ "dev": true, "license": "MIT" }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, "node_modules/electron-to-chromium": { - "version": "1.5.215", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.215.tgz", - "integrity": "sha512-TIvGp57UpeNetj/wV/xpFNpWGb0b/ROw372lHPx5Aafx02gjTBtWnEEcaSX3W2dLM3OSdGGyHX/cHl01JQsLaQ==", + "version": "1.5.235", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.235.tgz", + "integrity": "sha512-i/7ntLFwOdoHY7sgjlTIDo4Sl8EdoTjWIaKinYOVfC6bOp71bmwenyZthWHcasxgHDNWbWxvG9M3Ia116zIaYQ==", "dev": true, "license": "ISC" }, + "node_modules/embla-carousel": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz", + "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==", + "license": "MIT" + }, + "node_modules/embla-carousel-react": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-8.6.0.tgz", + "integrity": "sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA==", + "license": "MIT", + "dependencies": { + "embla-carousel": "8.6.0", + "embla-carousel-reactive-utils": "8.6.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/embla-carousel-reactive-utils": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.6.0.tgz", + "integrity": "sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A==", + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.6.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-toolkit": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.40.0.tgz", + "integrity": "sha512-8o6w0KFmU0CiIl0/Q/BCEOabF2IJaELM1T2PWj6e8KqzHv1gdx+7JtFnDwOx1kJH/isJ5NwlDG1nCr1HrRF94Q==", + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks" + ] + }, "node_modules/esbuild": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz", - "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", - "dev": true, + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.10.tgz", + "integrity": "sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==", "hasInstallScript": true, "license": "MIT", "bin": { @@ -2078,32 +4029,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.9", - "@esbuild/android-arm": "0.25.9", - "@esbuild/android-arm64": "0.25.9", - "@esbuild/android-x64": "0.25.9", - "@esbuild/darwin-arm64": "0.25.9", - "@esbuild/darwin-x64": "0.25.9", - "@esbuild/freebsd-arm64": "0.25.9", - "@esbuild/freebsd-x64": "0.25.9", - "@esbuild/linux-arm": "0.25.9", - "@esbuild/linux-arm64": "0.25.9", - "@esbuild/linux-ia32": "0.25.9", - "@esbuild/linux-loong64": "0.25.9", - "@esbuild/linux-mips64el": "0.25.9", - "@esbuild/linux-ppc64": "0.25.9", - "@esbuild/linux-riscv64": "0.25.9", - "@esbuild/linux-s390x": "0.25.9", - "@esbuild/linux-x64": "0.25.9", - "@esbuild/netbsd-arm64": "0.25.9", - "@esbuild/netbsd-x64": "0.25.9", - "@esbuild/openbsd-arm64": "0.25.9", - "@esbuild/openbsd-x64": "0.25.9", - "@esbuild/openharmony-arm64": "0.25.9", - "@esbuild/sunos-x64": "0.25.9", - "@esbuild/win32-arm64": "0.25.9", - "@esbuild/win32-ia32": "0.25.9", - "@esbuild/win32-x64": "0.25.9" + "@esbuild/aix-ppc64": "0.25.10", + "@esbuild/android-arm": "0.25.10", + "@esbuild/android-arm64": "0.25.10", + "@esbuild/android-x64": "0.25.10", + "@esbuild/darwin-arm64": "0.25.10", + "@esbuild/darwin-x64": "0.25.10", + "@esbuild/freebsd-arm64": "0.25.10", + "@esbuild/freebsd-x64": "0.25.10", + "@esbuild/linux-arm": "0.25.10", + "@esbuild/linux-arm64": "0.25.10", + "@esbuild/linux-ia32": "0.25.10", + "@esbuild/linux-loong64": "0.25.10", + "@esbuild/linux-mips64el": "0.25.10", + "@esbuild/linux-ppc64": "0.25.10", + "@esbuild/linux-riscv64": "0.25.10", + "@esbuild/linux-s390x": "0.25.10", + "@esbuild/linux-x64": "0.25.10", + "@esbuild/netbsd-arm64": "0.25.10", + "@esbuild/netbsd-x64": "0.25.10", + "@esbuild/openbsd-arm64": "0.25.10", + "@esbuild/openbsd-x64": "0.25.10", + "@esbuild/openharmony-arm64": "0.25.10", + "@esbuild/sunos-x64": "0.25.10", + "@esbuild/win32-arm64": "0.25.10", + "@esbuild/win32-ia32": "0.25.10", + "@esbuild/win32-x64": "0.25.10" } }, "node_modules/escalade": { @@ -2130,20 +4081,20 @@ } }, "node_modules/eslint": { - "version": "9.35.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.35.0.tgz", - "integrity": "sha512-QePbBFMJFjgmlE+cXAlbHZbHpdFVS2E/6vzCy7aKlebddvl1vadiC4JFV5u/wqTkNUwEV8WrQi257jf5f06hrg==", + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.37.0.tgz", + "integrity": "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.0", - "@eslint/config-helpers": "^0.3.1", - "@eslint/core": "^0.15.2", + "@eslint/config-helpers": "^0.4.0", + "@eslint/core": "^0.16.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.35.0", - "@eslint/plugin-kit": "^0.3.5", + "@eslint/js": "9.37.0", + "@eslint/plugin-kit": "^0.4.0", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -2204,9 +4155,9 @@ } }, "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.20", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz", - "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==", + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.23.tgz", + "integrity": "sha512-G4j+rv0NmbIR45kni5xJOrYvCtyD3/7LjpVH8MPPcudXDcNu8gv+4ATTDXTtbRR8rTCM5HxECvCSsRmxKnWDsA==", "dev": true, "license": "MIT", "peerDependencies": { @@ -2307,6 +4258,12 @@ "node": ">=0.10.0" } }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2436,7 +4393,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -2457,6 +4413,15 @@ "node": ">=6.9.0" } }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -2483,6 +4448,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -2510,6 +4481,16 @@ "node": ">= 4" } }, + "node_modules/immer": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.3.tgz", + "integrity": "sha512-tmjF/k8QDKydUlm3mZU+tjM6zeq9/fFpPqH9SzWmBnVVKsPBg/V66qsMwb3/Bo90cgUN+ghdVBess+hPsxUyRw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", @@ -2537,6 +4518,25 @@ "node": ">=0.8.19" } }, + "node_modules/input-otp": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/input-otp/-/input-otp-1.4.2.tgz", + "integrity": "sha512-l3jWwYNvrEa6NTCt7BECfCm48GvwuZzkoeG3gBL2w4CHeOXW3eKFmf9UNYkNfYc3mxMrthMnxjIE07MT0zLBQA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2577,6 +4577,15 @@ "dev": true, "license": "ISC" }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2641,31 +4650,259 @@ "json5": "lib/cli.js" }, "engines": { - "node": ">=6" + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 0.8.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, "node_modules/locate-path": { @@ -2701,6 +4938,24 @@ "yallist": "^3.0.2" } }, + "node_modules/lucide-react": { + "version": "0.545.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.545.0.tgz", + "integrity": "sha512-7r1/yUuflQDSt4f1bpn5ZAocyIxcTyVyBBChSVtBKn5M+392cPmI5YJMWOJKk/HUWGm5wg83chlAZtCcGbEZtw==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.19", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", + "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -2738,6 +4993,27 @@ "node": "*" } }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -2749,7 +5025,6 @@ "version": "3.3.11", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "dev": true, "funding": [ { "type": "github", @@ -2771,10 +5046,20 @@ "dev": true, "license": "MIT" }, + "node_modules/next-themes": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", + "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" + } + }, "node_modules/node-releases": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.20.tgz", - "integrity": "sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA==", + "version": "2.0.23", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz", + "integrity": "sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==", "dev": true, "license": "MIT" }, @@ -2865,7 +5150,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, "license": "ISC" }, "node_modules/picomatch": { @@ -2885,7 +5169,6 @@ "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "dev": true, "funding": [ { "type": "opencollective", @@ -2952,24 +5235,91 @@ "license": "MIT" }, "node_modules/react": { - "version": "19.1.1", - "resolved": "https://registry.npmjs.org/react/-/react-19.1.1.tgz", - "integrity": "sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", + "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/react-day-picker": { + "version": "9.11.1", + "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-9.11.1.tgz", + "integrity": "sha512-l3ub6o8NlchqIjPKrRFUCkTUEq6KwemQlfv3XZzzwpUeGwmDJ+0u0Upmt38hJyd7D/vn2dQoOoLV/qAp0o3uUw==", + "license": "MIT", + "dependencies": { + "@date-fns/tz": "^1.4.1", + "date-fns": "^4.1.0", + "date-fns-jalali": "^4.1.0-0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/gpbl" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, "node_modules/react-dom": { - "version": "19.1.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.1.tgz", - "integrity": "sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", + "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.0" + } + }, + "node_modules/react-hook-form": { + "version": "7.65.0", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.65.0.tgz", + "integrity": "sha512-xtOzDz063WcXvGWaHgLNrNzlsdFgtUWcb32E6WFaGTd7kPZG3EeDusjdZfUsPwKCKVXy1ZlntifaHZ4l8pAsmw==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19" + } + }, + "node_modules/react-is": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.0.tgz", + "integrity": "sha512-x3Ax3kNSMIIkyVYhWPyO09bu0uttcAIoecO/um/rKGQ4EltYWVYtyiGkS/3xMynrbVQdS69Jhlv8FXUEZehlzA==", + "license": "MIT", + "peer": true + }, + "node_modules/react-redux": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", + "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", "license": "MIT", "dependencies": { - "scheduler": "^0.26.0" + "@types/use-sync-external-store": "^0.0.6", + "use-sync-external-store": "^1.4.0" }, "peerDependencies": { - "react": "^19.1.1" + "@types/react": "^18.2.25 || ^19", + "react": "^18.0 || ^19", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } } }, "node_modules/react-refresh": { @@ -2982,44 +5332,133 @@ "node": ">=0.10.0" } }, - "node_modules/react-router": { - "version": "7.9.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.9.1.tgz", - "integrity": "sha512-pfAByjcTpX55mqSDGwGnY9vDCpxqBLASg0BMNAuMmpSGESo/TaOUG6BllhAtAkCGx8Rnohik/XtaqiYUJtgW2g==", + "node_modules/react-remove-scroll": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.1.tgz", + "integrity": "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-resizable-panels": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-3.0.6.tgz", + "integrity": "sha512-b3qKHQ3MLqOgSS+FRYKapNkJZf5EQzuf6+RLiq1/IlTHw99YrZ2NJZLk4hQIzTnnIkRg2LUqyVinu6YWWpUYew==", + "license": "MIT", + "peerDependencies": { + "react": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", "license": "MIT", "dependencies": { - "cookie": "^1.0.1", - "set-cookie-parser": "^2.6.0" + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" }, "engines": { - "node": ">=20.0.0" + "node": ">=10" }, "peerDependencies": { - "react": ">=18", - "react-dom": ">=18" + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { - "react-dom": { + "@types/react": { "optional": true } } }, - "node_modules/react-router-dom": { - "version": "7.9.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.9.1.tgz", - "integrity": "sha512-U9WBQssBE9B1vmRjo9qTM7YRzfZ3lUxESIZnsf4VjR/lXYz9MHjvOxHzr/aUm4efpktbVOrF09rL/y4VHa8RMw==", + "node_modules/recharts": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-3.2.1.tgz", + "integrity": "sha512-0JKwHRiFZdmLq/6nmilxEZl3pqb4T+aKkOkOi/ZISRZwfBhVMgInxzlYU9D4KnCH3KINScLy68m/OvMXoYGZUw==", "license": "MIT", "dependencies": { - "react-router": "7.9.1" + "@reduxjs/toolkit": "1.x.x || 2.x.x", + "clsx": "^2.1.1", + "decimal.js-light": "^2.5.1", + "es-toolkit": "^1.39.3", + "eventemitter3": "^5.0.1", + "immer": "^10.1.1", + "react-redux": "8.x.x || 9.x.x", + "reselect": "5.1.1", + "tiny-invariant": "^1.3.3", + "use-sync-external-store": "^1.2.2", + "victory-vendor": "^37.0.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18" }, "peerDependencies": { - "react": ">=18", - "react-dom": ">=18" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-is": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "license": "MIT" + }, + "node_modules/redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "license": "MIT", + "peerDependencies": { + "redux": "^5.0.0" } }, + "node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", + "license": "MIT" + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -3042,10 +5481,9 @@ } }, "node_modules/rollup": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz", - "integrity": "sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==", - "dev": true, + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.4.tgz", + "integrity": "sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==", "license": "MIT", "dependencies": { "@types/estree": "1.0.8" @@ -3058,27 +5496,28 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.50.1", - "@rollup/rollup-android-arm64": "4.50.1", - "@rollup/rollup-darwin-arm64": "4.50.1", - "@rollup/rollup-darwin-x64": "4.50.1", - "@rollup/rollup-freebsd-arm64": "4.50.1", - "@rollup/rollup-freebsd-x64": "4.50.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.50.1", - "@rollup/rollup-linux-arm-musleabihf": "4.50.1", - "@rollup/rollup-linux-arm64-gnu": "4.50.1", - "@rollup/rollup-linux-arm64-musl": "4.50.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.50.1", - "@rollup/rollup-linux-ppc64-gnu": "4.50.1", - "@rollup/rollup-linux-riscv64-gnu": "4.50.1", - "@rollup/rollup-linux-riscv64-musl": "4.50.1", - "@rollup/rollup-linux-s390x-gnu": "4.50.1", - "@rollup/rollup-linux-x64-gnu": "4.50.1", - "@rollup/rollup-linux-x64-musl": "4.50.1", - "@rollup/rollup-openharmony-arm64": "4.50.1", - "@rollup/rollup-win32-arm64-msvc": "4.50.1", - "@rollup/rollup-win32-ia32-msvc": "4.50.1", - "@rollup/rollup-win32-x64-msvc": "4.50.1", + "@rollup/rollup-android-arm-eabi": "4.52.4", + "@rollup/rollup-android-arm64": "4.52.4", + "@rollup/rollup-darwin-arm64": "4.52.4", + "@rollup/rollup-darwin-x64": "4.52.4", + "@rollup/rollup-freebsd-arm64": "4.52.4", + "@rollup/rollup-freebsd-x64": "4.52.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.52.4", + "@rollup/rollup-linux-arm-musleabihf": "4.52.4", + "@rollup/rollup-linux-arm64-gnu": "4.52.4", + "@rollup/rollup-linux-arm64-musl": "4.52.4", + "@rollup/rollup-linux-loong64-gnu": "4.52.4", + "@rollup/rollup-linux-ppc64-gnu": "4.52.4", + "@rollup/rollup-linux-riscv64-gnu": "4.52.4", + "@rollup/rollup-linux-riscv64-musl": "4.52.4", + "@rollup/rollup-linux-s390x-gnu": "4.52.4", + "@rollup/rollup-linux-x64-gnu": "4.52.4", + "@rollup/rollup-linux-x64-musl": "4.52.4", + "@rollup/rollup-openharmony-arm64": "4.52.4", + "@rollup/rollup-win32-arm64-msvc": "4.52.4", + "@rollup/rollup-win32-ia32-msvc": "4.52.4", + "@rollup/rollup-win32-x64-gnu": "4.52.4", + "@rollup/rollup-win32-x64-msvc": "4.52.4", "fsevents": "~2.3.2" } }, @@ -3107,9 +5546,9 @@ } }, "node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "license": "MIT" }, "node_modules/semver": { @@ -3122,12 +5561,6 @@ "semver": "bin/semver.js" } }, - "node_modules/set-cookie-parser": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", - "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", - "license": "MIT" - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -3151,11 +5584,20 @@ "node": ">=8" } }, + "node_modules/sonner": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/sonner/-/sonner-2.0.7.tgz", + "integrity": "sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==", + "license": "MIT", + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -3187,11 +5629,70 @@ "node": ">=8" } }, + "node_modules/tailwind-merge": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.3.1.tgz", + "integrity": "sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.14.tgz", + "integrity": "sha512-b7pCxjGO98LnxVkKjaZSDeNuljC4ueKUddjENJOADtubtdo8llTaJy7HwBMeLNSSo2N5QIAgklslK1+Ir8r6CA==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tar": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.1.tgz", + "integrity": "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==", + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", @@ -3208,7 +5709,6 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, "license": "MIT", "engines": { "node": ">=12.0.0" @@ -3226,7 +5726,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -3261,6 +5760,12 @@ "typescript": ">=4.8.4" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -3275,9 +5780,9 @@ } }, "node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -3289,16 +5794,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.43.0.tgz", - "integrity": "sha512-FyRGJKUGvcFekRRcBKFBlAhnp4Ng8rhe8tuvvkR9OiU0gfd4vyvTRQHEckO6VDlH57jbeUQem2IpqPq9kLJH+w==", + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.46.1.tgz", + "integrity": "sha512-VHgijW803JafdSsDO8I761r3SHrgk4T00IdyQ+/UsthtgPRsBWQLqoSxOolxTpxRKi1kGXK0bSz4CoAc9ObqJA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.43.0", - "@typescript-eslint/parser": "8.43.0", - "@typescript-eslint/typescript-estree": "8.43.0", - "@typescript-eslint/utils": "8.43.0" + "@typescript-eslint/eslint-plugin": "8.46.1", + "@typescript-eslint/parser": "8.46.1", + "@typescript-eslint/typescript-estree": "8.46.1", + "@typescript-eslint/utils": "8.46.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3312,6 +5817,13 @@ "typescript": ">=4.8.4 <6.0.0" } }, + "node_modules/undici-types": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.14.0.tgz", + "integrity": "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==", + "devOptional": true, + "license": "MIT" + }, "node_modules/update-browserslist-db": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", @@ -3353,11 +5865,97 @@ "punycode": "^2.1.0" } }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/vaul": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vaul/-/vaul-1.1.2.tgz", + "integrity": "sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-dialog": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/victory-vendor": { + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.3.6.tgz", + "integrity": "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==", + "license": "MIT AND ISC", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, "node_modules/vite": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.5.tgz", - "integrity": "sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==", - "dev": true, + "version": "7.1.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.9.tgz", + "integrity": "sha512-4nVGliEpxmhCL8DslSAUdxlB6+SMrhB0a1v5ijlh1xB1nEPuy1mxaHxysVucLHuWryAxLWg6a5ei+U4TLn/rFg==", "license": "MIT", "dependencies": { "esbuild": "^0.25.0", @@ -3432,7 +6030,6 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, "license": "MIT", "engines": { "node": ">=12.0.0" @@ -3450,7 +6047,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" diff --git a/Frontend/package.json b/Frontend/package.json index b1445ed..cb175a7 100644 --- a/Frontend/package.json +++ b/Frontend/package.json @@ -10,26 +10,62 @@ "preview": "vite preview" }, "dependencies": { - "@fortawesome/fontawesome-svg-core": "^7.0.1", - "@fortawesome/free-solid-svg-icons": "^7.0.1", - "@fortawesome/react-fontawesome": "^3.0.2", - "@types/react-router-dom": "^5.3.3", + "@radix-ui/react-accordion": "^1.2.12", + "@radix-ui/react-alert-dialog": "^1.1.15", + "@radix-ui/react-aspect-ratio": "^1.1.7", + "@radix-ui/react-avatar": "^1.1.10", + "@radix-ui/react-checkbox": "^1.3.3", + "@radix-ui/react-context-menu": "^2.2.16", + "@radix-ui/react-dialog": "^1.1.15", + "@radix-ui/react-dropdown-menu": "^2.1.16", + "@radix-ui/react-hover-card": "^1.1.15", + "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-menubar": "^1.1.16", + "@radix-ui/react-navigation-menu": "^1.2.14", + "@radix-ui/react-popover": "^1.1.15", + "@radix-ui/react-progress": "^1.1.7", + "@radix-ui/react-radio-group": "^1.3.8", + "@radix-ui/react-scroll-area": "^1.2.10", + "@radix-ui/react-select": "^2.2.6", + "@radix-ui/react-separator": "^1.1.7", + "@radix-ui/react-slider": "^1.3.6", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-switch": "^1.2.6", + "@radix-ui/react-tabs": "^1.1.13", + "@radix-ui/react-toggle": "^1.1.10", + "@radix-ui/react-toggle-group": "^1.1.11", + "@radix-ui/react-tooltip": "^1.2.8", + "@tailwindcss/vite": "^4.1.14", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "^1.1.1", + "embla-carousel-react": "^8.6.0", + "input-otp": "^1.4.2", + "lucide-react": "^0.545.0", + "next-themes": "^0.4.6", "react": "^19.1.1", + "react-day-picker": "^9.11.1", "react-dom": "^19.1.1", - "react-router": "^7.9.1", - "react-router-dom": "^7.9.1" + "react-hook-form": "^7.65.0", + "react-resizable-panels": "^3.0.6", + "recharts": "^3.2.1", + "sonner": "^2.0.7", + "tailwind-merge": "^3.3.1", + "tailwindcss": "^4.1.14", + "vaul": "^1.1.2" }, "devDependencies": { - "@eslint/js": "^9.33.0", - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.0", - "eslint": "^9.33.0", + "@eslint/js": "^9.36.0", + "@types/node": "^24.6.0", + "@types/react": "^19.1.16", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.4", + "eslint": "^9.36.0", "eslint-plugin-react-hooks": "^5.2.0", - "eslint-plugin-react-refresh": "^0.4.20", - "globals": "^16.3.0", - "typescript": "~5.8.3", - "typescript-eslint": "^8.39.1", - "vite": "^7.1.2" + "eslint-plugin-react-refresh": "^0.4.22", + "globals": "^16.4.0", + "typescript": "~5.9.3", + "typescript-eslint": "^8.45.0", + "vite": "^7.1.7" } } diff --git a/Frontend/public/embedded-finance.jpg b/Frontend/public/embedded-finance.jpg deleted file mode 100644 index 6c1c844e0b3a9e1569b932836a7cea00d2f2f886..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117667 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

?Ro$sbgOd~Kth}u$ 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 X5Orm_lhnec@u@HANFz=8d+h%Jkh`j1 diff --git a/Frontend/src/App.css b/Frontend/src/App.css index e69de29..b9d355d 100644 --- a/Frontend/src/App.css +++ b/Frontend/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/Frontend/src/App.tsx b/Frontend/src/App.tsx index b2648c2..bebda66 100644 --- a/Frontend/src/App.tsx +++ b/Frontend/src/App.tsx @@ -1,18 +1,91 @@ -import './App.css'; -import { BrowserRouter as Router, Route, Routes } from 'react-router-dom'; -import Login from './Pages/login'; - -function App() { +import React, { + useState, + createContext, + useContext, +} from "react"; +import { LoginPage } from "./components/LoginPage"; +import { AgentDashboard } from "./components/AgentDashboard"; +import { ManagerDashboard } from "./components/ManagerDashboard"; +import { AdminDashboard } from "./components/AdminDashboard"; +interface User { + id: string; + username: string; + role: "Admin" | "Branch Manager" | "Agent"; + branchId?: string; + employeeId: string; +} - return ( - - - } /> - - - ) +interface AuthContextType { + user: User | null; + login: ( + username: string, + password: string, + role: string, + ) => boolean; + logout: () => void; } +const AuthContext = createContext(null); + +export const useAuth = () => { + const context = useContext(AuthContext); + if (!context) { + throw new Error( + "useAuth must be used within an AuthProvider", + ); + } + return context; +}; + +export default function App() { + const [user, setUser] = useState(null); -export default App; + // Mock authentication - in real app this would call API + const login = ( + username: string, + password: string, + role: string, + ): boolean => { + // Mock validation + if (username && password && role) { + const mockUser: User = { + id: `user_${Date.now()}`, + username, + role: role as "Admin" | "Branch Manager" | "Agent", + branchId: role === "Admin" ? undefined : "branch_001", + employeeId: `emp_${Date.now()}`, + }; + setUser(mockUser); + return true; + } + return false; + }; + + const logout = () => { + setUser(null); + }; + + const renderDashboard = () => { + if (!user) return null; + + switch (user.role) { + case "Agent": + return ; + case "Branch Manager": + return ; + case "Admin": + return ; + default: + return null; + } + }; + + return ( + +

+ {!user ? : renderDashboard()} +
+ + ); +} \ No newline at end of file diff --git a/Frontend/src/Pages/login.tsx b/Frontend/src/Pages/login.tsx deleted file mode 100644 index 1755619..0000000 --- a/Frontend/src/Pages/login.tsx +++ /dev/null @@ -1,190 +0,0 @@ -import React from 'react' -import { useNavigate } from 'react-router-dom'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { faUser } from '@fortawesome/free-solid-svg-icons'; - - -const Login = () => { - const navigate = useNavigate(); - const [username, setUsername] = React.useState(''); - const [password, setPassword] = React.useState(''); - const [error, setError] = React.useState(''); - - const handleSubmit = async (e: React.FormEvent) => { - e.preventDefault(); - setError(''); - try { - - } - catch (err) { - setError('Login failed. Please try again.'); - } - } - return ( - <> -
- -

Login

-
-
- - ) => setUsername(e.target.value)} - /> -
-
- - ) => setPassword(e.target.value)} - /> -
- - {error &&
{error}
} -
-
- - - ) -} - -export default Login diff --git a/Frontend/src/components/AdminDashboard.tsx b/Frontend/src/components/AdminDashboard.tsx new file mode 100644 index 0000000..b1eea25 --- /dev/null +++ b/Frontend/src/components/AdminDashboard.tsx @@ -0,0 +1,489 @@ +import React, { useState } from 'react'; +import { Button } from './ui/button'; +import { Input } from './ui/input'; +import { Label } from './ui/label'; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from './ui/card'; +import { Tabs, TabsContent, TabsList, TabsTrigger } from './ui/tabs'; +import { Badge } from './ui/badge'; +import { useAuth } from '../App'; +import { LogOut, Building, Settings, BarChart3, RefreshCw, Plus, Edit, Trash2, Building2 } from 'lucide-react'; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './ui/select'; + +// Mock data for admin dashboard +const mockBranches = [ + { + id: 'branch_001', + name: 'Downtown Branch', + address: '123 Main St, City Center', + manager: 'John Manager', + employees: 8, + customers: 245, + totalDeposits: 5200000, + status: 'Active' + }, + { + id: 'branch_002', + name: 'Westside Branch', + address: '456 West Ave, Westside', + manager: 'Jane Smith', + employees: 6, + customers: 189, + totalDeposits: 3800000, + status: 'Active' + }, + { + id: 'branch_003', + name: 'Northgate Branch', + address: '789 North Rd, Northgate', + manager: 'Mike Johnson', + employees: 10, + customers: 312, + totalDeposits: 6900000, + status: 'Active' + } +]; + +const mockSavingsPlans = [ + { id: 'plan_001', name: 'Basic Savings', minBalance: 500, interestRate: 3.5, status: 'Active' }, + { id: 'plan_002', name: 'Premium Savings', minBalance: 10000, interestRate: 4.5, status: 'Active' }, + { id: 'plan_003', name: 'Elite Savings', minBalance: 50000, interestRate: 5.5, status: 'Active' } +]; + +const mockFDPlans = [ + { id: 'fd_001', name: '6 Months', duration: 6, rate: 5.5, status: 'Active' }, + { id: 'fd_002', name: '1 Year', duration: 12, rate: 6.5, status: 'Active' }, + { id: 'fd_003', name: '3 Years', duration: 36, rate: 7.5, status: 'Active' } +]; + +const systemStats = { + totalBranches: 3, + totalEmployees: 24, + totalCustomers: 746, + totalDeposits: 15900000, + monthlyInterestPayout: 125000, + activeFDs: 189 +}; + +export function AdminDashboard() { + const { user, logout } = useAuth(); + const [selectedTab, setSelectedTab] = useState('branches'); + + return ( +
+ {/* Header */} +
+
+
+
+ +
+

Admin Dashboard

+

System Administration - {user?.username}

+
+
+ +
+
+
+ +
+ {/* System Overview Cards */} +
+ + +
+ +
+

Total Branches

+

{systemStats.totalBranches}

+
+
+
+
+ + + +
+ +
+

Total Deposits

+

${(systemStats.totalDeposits / 1000000).toFixed(1)}M

+
+
+
+
+ + + +
+ +
+

Monthly Interest

+

${(systemStats.monthlyInterestPayout / 1000).toFixed(0)}K

+
+
+
+
+ + + +
+ +
+

Active FDs

+

{systemStats.activeFDs}

+
+
+
+
+
+ + + + Branch Management + System Settings + Global Reports + Interest Processing + + + {/* Branch Management */} + + + +
+
+ Branch Management + Manage bank branches and assign managers +
+ +
+
+ +
+ {mockBranches.map((branch) => ( +
+
+
+

{branch.name}

+

{branch.address}

+

Manager: {branch.manager}

+
+
+ + {branch.status} + + +
+
+ +
+
+

Employees

+

{branch.employees}

+
+
+

Customers

+

{branch.customers}

+
+
+

Total Deposits

+

${(branch.totalDeposits / 1000000).toFixed(1)}M

+
+
+

Performance

+

Excellent

+
+
+
+ ))} +
+
+
+
+ + {/* System Settings */} + +
+ {/* Savings Account Plans */} + + +
+ Savings Account Plans + +
+
+ +
+ {mockSavingsPlans.map((plan) => ( +
+
+

{plan.name}

+

+ Min: ${plan.minBalance.toLocaleString()} | Rate: {plan.interestRate}% +

+
+
+ + {plan.status} + + +
+
+ ))} +
+
+
+ + {/* Fixed Deposit Plans */} + + +
+ Fixed Deposit Plans + +
+
+ +
+ {mockFDPlans.map((plan) => ( +
+
+

{plan.name}

+

+ Duration: {plan.duration} months | Rate: {plan.rate}% +

+
+
+ + {plan.status} + + +
+
+ ))} +
+
+
+
+
+ + {/* Global Reports */} + +
+ {/* Account Summary */} + + + Account-wise Transaction Summary + + +
+
+
+ Basic Savings Accounts + 245 accounts +
+
+ Total Volume + $2.1M +
+
+
+
+ Premium Savings Accounts + 189 accounts +
+
+ Total Volume + $8.3M +
+
+
+
+ Elite Savings Accounts + 67 accounts +
+
+ Total Volume + $5.5M +
+
+
+
+
+ + {/* FD Interest Payouts */} + + + FD Interest Payouts + + +
+
+
+ 6 Month FDs + 45 accounts +
+
+ Monthly Payout + $15,500 +
+
+
+
+ 1 Year FDs + 98 accounts +
+
+ Monthly Payout + $65,200 +
+
+
+
+ 3 Year FDs + 46 accounts +
+
+ Monthly Payout + $44,300 +
+
+
+
+
+ + {/* Customer Activity */} + + + Customer Activity Report + + +
+
+ Total Customers + {systemStats.totalCustomers} +
+
+ New This Month + +23 +
+
+ Active Accounts + 692 +
+
+ Avg. Balance + ${(systemStats.totalDeposits / 692 / 1000).toFixed(1)}K +
+
+
+
+ + {/* Branch Performance */} + + + Branch Performance + + +
+ {mockBranches.map((branch) => ( +
+ {branch.name} + ${(branch.totalDeposits / 1000000).toFixed(1)}M +
+ ))} +
+
+
+
+
+ + {/* Interest Processing */} + + + + Interest Processing + + Run monthly interest calculations for Fixed Deposits + + + +
+
+

Next Interest Run

+

Scheduled for: February 1, 2024

+
+
+

Eligible FDs

+

{systemStats.activeFDs}

+
+
+

Estimated Payout

+

${systemStats.monthlyInterestPayout.toLocaleString()}

+
+
+
+ +
+ + +
+ + +
+
+ +
+

Last Processing Summary

+
+
+ Date + January 1, 2024 +
+
+ Processed FDs + 189 +
+
+ Total Payout + ${systemStats.monthlyInterestPayout.toLocaleString()} +
+
+ Status + Completed +
+
+
+
+
+
+
+
+
+
+ ); +} \ No newline at end of file diff --git a/Frontend/src/components/AgentDashboard.tsx b/Frontend/src/components/AgentDashboard.tsx new file mode 100644 index 0000000..fa7ab6b --- /dev/null +++ b/Frontend/src/components/AgentDashboard.tsx @@ -0,0 +1,1246 @@ +import React, { useState } from 'react'; +import { Button } from './ui/button'; +import { Input } from './ui/input'; +import { Label } from './ui/label'; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from './ui/card'; +import { Badge } from './ui/badge'; +import { useAuth } from '../App'; +import { LogOut, Search, Plus, DollarSign, User, Building2, AlertTriangle, CreditCard, Clock, Users } from 'lucide-react'; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './ui/select'; +import { Alert, AlertDescription } from './ui/alert'; + +// Updated savings plans based on requirements +const savingsPlans = [ + { id: 'children', name: 'Children', minBalance: 0, interestRate: 12, ageRequirement: 'Under 18' }, + { id: 'teen', name: 'Teen', minBalance: 500, interestRate: 11, ageRequirement: '13-17' }, + { id: 'adult', name: 'Adult', minBalance: 1000, interestRate: 10, ageRequirement: '18+' }, + { id: 'senior', name: 'Senior', minBalance: 1000, interestRate: 13, ageRequirement: '60+' }, + { id: 'joint', name: 'Joint', minBalance: 5000, interestRate: 7, ageRequirement: 'Multiple holders' } +]; + +const fdPlans = [ + { id: 'fd_6m', name: '6 Months', duration: 6, rate: 5.5 }, + { id: 'fd_1y', name: '1 Year', duration: 12, rate: 6.5 }, + { id: 'fd_3y', name: '3 Years', duration: 36, rate: 7.5 } +]; + +// Mock data with multiple accounts per customer +const mockCustomers = [ + { + customerId: 'CUST001', + name: 'John Smith', + nic: '199012345678', + phoneNumber: '+94-71-1234567', + address: '123 Main Street, Colombo 03', + dateOfBirth: '1990-05-15', + email: 'john.smith@email.com', + status: 'Active', + savingsAccounts: [ + { + savingAccountId: 'SA001234567', + openDate: '2023-01-15', + balance: 25500, + sPlanId: 'adult', + planName: 'Adult', + interestRate: 10, + minBalance: 1000, + status: 'Active' + }, + { + savingAccountId: 'SA001234568', + openDate: '2023-06-20', + balance: 15000, + sPlanId: 'senior', + planName: 'Senior', + interestRate: 13, + minBalance: 1000, + status: 'Active' + } + ], + fixedDeposits: [ + { + fixedDepositId: 'FD001', + savingAccountId: 'SA001234567', + startDate: '2023-06-01', + endDate: '2024-06-01', + principalAmount: 50000, + fPlanId: 'fd_1y', + planName: '1 Year', + interestRate: 6.5, + lastPayoutDate: '2024-01-01', + status: true + } + ], + transactions: [ + { transactionId: 'TXN001', savingAccountId: 'SA001234567', type: 'Deposit', amount: 5000, timestamp: '2024-01-15 10:30', refNumber: 'REF001', description: 'Cash deposit' }, + { transactionId: 'TXN002', savingAccountId: 'SA001234567', type: 'Withdrawal', amount: -2000, timestamp: '2024-01-10 14:20', refNumber: 'REF002', description: 'ATM withdrawal' }, + { transactionId: 'TXN003', savingAccountId: 'SA001234568', type: 'Deposit', amount: 10000, timestamp: '2024-01-08 11:15', refNumber: 'REF003', description: 'Initial deposit' }, + { transactionId: 'TXN004', savingAccountId: 'SA001234567', type: 'Interest', amount: 275, timestamp: '2024-01-01 00:00', refNumber: 'INT001', description: 'Monthly interest' } + ] + }, + { + customerId: 'CUST002', + name: 'Mary Johnson', + nic: '198503456789', + phoneNumber: '+94-77-9876543', + address: '456 Oak Avenue, Colombo 05', + dateOfBirth: '1985-08-22', + email: 'mary.johnson@email.com', + status: 'Active', + savingsAccounts: [ + { + savingAccountId: 'SA002345678', + openDate: '2022-11-10', + balance: 45000, + sPlanId: 'adult', + planName: 'Adult', + interestRate: 10, + minBalance: 1000, + status: 'Active' + }, + { + savingAccountId: 'SA002345679', + openDate: '2023-03-15', + balance: 12000, + sPlanId: 'joint', + planName: 'Joint', + interestRate: 7, + minBalance: 5000, + status: 'Active', + holders: ['CUST002', 'CUST001'] + }, + { + savingAccountId: 'SA002345680', + openDate: '2023-08-05', + balance: 8500, + sPlanId: 'adult', + planName: 'Adult', + interestRate: 10, + minBalance: 1000, + status: 'Active' + } + ], + fixedDeposits: [], + transactions: [ + { transactionId: 'TXN101', savingAccountId: 'SA002345678', type: 'Deposit', amount: 15000, timestamp: '2024-01-12 09:30', refNumber: 'REF101', description: 'Cash deposit' }, + { transactionId: 'TXN102', savingAccountId: 'SA002345679', type: 'Deposit', amount: 5000, timestamp: '2024-01-10 14:20', refNumber: 'REF102', description: 'Joint account deposit' } + ] + }, + { + customerId: 'CUST003', + name: 'Sarah Williams', + nic: '199505123456', + phoneNumber: '+94-76-5551234', + address: '789 Lake Road, Colombo 07', + dateOfBirth: '1995-03-10', + email: 'sarah.williams@email.com', + status: 'Active', + savingsAccounts: [], + fixedDeposits: [], + transactions: [] + } +]; + +const mockBranchInfo = { + branchId: 'BR001', + name: 'Colombo Main Branch', + address: '456 Bank Street, Colombo 01', + managerName: 'Ms. Priya Fernando' +}; + +const mockAgentTransactions = [ + { id: 'AGT001', customerName: 'John Smith', type: 'Deposit', amount: 5000, timestamp: '2024-01-15 10:30' }, + { id: 'AGT002', customerName: 'Mary Johnson', type: 'Withdrawal', amount: -1500, timestamp: '2024-01-15 09:15' }, + { id: 'AGT003', customerName: 'David Wilson', type: 'FD Opening', amount: 25000, timestamp: '2024-01-14 16:45' }, + { id: 'AGT004', customerName: 'Sarah Davis', type: 'Deposit', amount: 3000, timestamp: '2024-01-14 11:20' }, + { id: 'AGT005', customerName: 'Mike Brown', type: 'Withdrawal', amount: -800, timestamp: '2024-01-13 15:30' } +]; + +export function AgentDashboard() { + const { user, logout } = useAuth(); + const [currentView, setCurrentView] = useState<'home' | 'search' | 'customer' | 'register' | 'create-account' | 'create-joint'>('home'); + const [searchType, setSearchType] = useState('customerId'); + const [searchQuery, setSearchQuery] = useState(''); + const [selectedCustomer, setSelectedCustomer] = useState(null); + const [selectedAccountId, setSelectedAccountId] = useState(''); + const [transactionAmount, setTransactionAmount] = useState(''); + const [transactionType, setTransactionType] = useState(''); + const [error, setError] = useState(''); + const [success, setSuccess] = useState(''); + const [fdAmount, setFdAmount] = useState(''); + const [selectedFdPlan, setSelectedFdPlan] = useState(''); + const [fdAccountId, setFdAccountId] = useState(''); + + // Customer registration form state + const [newCustomer, setNewCustomer] = useState({ + name: '', + nic: '', + phoneNumber: '', + address: '', + dateOfBirth: '', + email: '' + }); + + // New savings account form state + const [newAccount, setNewAccount] = useState({ + customerId: '', + accountType: '', + initialDeposit: '' + }); + + // Joint account form state + const [jointAccount, setJointAccount] = useState({ + customerId1: '', + customerId2: '', + initialDeposit: '' + }); + + // Helper to change view and clear messages + const changeView = (view: 'home' | 'search' | 'customer' | 'register' | 'create-account' | 'create-joint') => { + setError(''); + setSuccess(''); + setCurrentView(view); + }; + + const handleCustomerSearch = () => { + setError(''); + if (!searchQuery.trim()) { + setError('Please enter a search value'); + return; + } + + let customer = null; + if (searchType === 'customerId') { + customer = mockCustomers.find(c => c.customerId.includes(searchQuery.toUpperCase())); + } else if (searchType === 'nic') { + customer = mockCustomers.find(c => c.nic.includes(searchQuery)); + } else if (searchType === 'savingAccountId') { + customer = mockCustomers.find(c => + c.savingsAccounts.some(acc => acc.savingAccountId.includes(searchQuery.toUpperCase())) + ); + } + + if (customer) { + setSelectedCustomer(customer); + if (customer.savingsAccounts.length > 0) { + setSelectedAccountId(customer.savingsAccounts[0].savingAccountId); + setFdAccountId(customer.savingsAccounts[0].savingAccountId); + } + setCurrentView('customer'); + setSuccess('Customer found successfully'); + } else { + setError('Customer not found. Please check your search criteria.'); + } + }; + + const handleTransaction = () => { + setError(''); + setSuccess(''); + + if (!selectedCustomer || !transactionAmount || !transactionType || !selectedAccountId) { + setError('Please fill in all transaction details and select an account'); + return; + } + + const amount = parseFloat(transactionAmount); + const account = selectedCustomer.savingsAccounts.find((acc: any) => acc.savingAccountId === selectedAccountId); + + if (!account) { + setError('Selected account not found'); + return; + } + + if (transactionType === 'Withdrawal') { + const remainingBalance = account.balance - amount; + if (remainingBalance < account.minBalance) { + setError(`Withdrawal denied. Minimum balance of LKR ${account.minBalance.toLocaleString()} must be maintained. Available for withdrawal: LKR ${(account.balance - account.minBalance).toLocaleString()}`); + return; + } + } + + const currentHour = new Date().getHours(); + if (currentHour < 9 || currentHour > 17) { + setError('Transactions are only allowed during business hours (9 AM - 5 PM)'); + return; + } + + const newTransaction = { + transactionId: `TXN${Date.now()}`, + savingAccountId: selectedAccountId, + type: transactionType, + amount: transactionType === 'Withdrawal' ? -amount : amount, + timestamp: new Date().toLocaleString(), + refNumber: `REF${Date.now()}`, + description: `${transactionType} by agent ${user?.username}` + }; + + selectedCustomer.transactions.unshift(newTransaction); + account.balance += newTransaction.amount; + + setSuccess(`${transactionType} of LKR ${amount.toLocaleString()} processed successfully for account ${selectedAccountId}. New balance: LKR ${account.balance.toLocaleString()}`); + setTransactionAmount(''); + setTransactionType(''); + }; + + const handleFdCreation = () => { + setError(''); + setSuccess(''); + + if (!selectedCustomer || !fdAmount || !selectedFdPlan || !fdAccountId) { + setError('Please fill in all FD details and select an account'); + return; + } + + const amount = parseFloat(fdAmount); + const account = selectedCustomer.savingsAccounts.find((acc: any) => acc.savingAccountId === fdAccountId); + + if (!account) { + setError('Selected account not found'); + return; + } + + if (account.balance < amount) { + setError(`Insufficient balance in account ${fdAccountId}. Current balance: LKR ${account.balance.toLocaleString()}`); + return; + } + + const hasActiveFD = selectedCustomer.fixedDeposits.some((fd: any) => fd.savingAccountId === fdAccountId && fd.status === true); + if (hasActiveFD) { + setError('This account already has an active Fixed Deposit. Only one FD per account is allowed.'); + return; + } + + const selectedPlan = fdPlans.find(plan => plan.id === selectedFdPlan); + if (!selectedPlan) { + setError('Invalid FD plan selected'); + return; + } + + const newFD = { + fixedDepositId: `FD${Date.now()}`, + savingAccountId: fdAccountId, + startDate: new Date().toISOString().split('T')[0], + endDate: new Date(Date.now() + selectedPlan.duration * 30 * 24 * 60 * 60 * 1000).toISOString().split('T')[0], + principalAmount: amount, + fPlanId: selectedPlan.id, + planName: selectedPlan.name, + interestRate: selectedPlan.rate, + lastPayoutDate: null, + status: true + }; + + selectedCustomer.fixedDeposits.push(newFD); + account.balance -= amount; + + setSuccess(`Fixed Deposit of LKR ${amount.toLocaleString()} created successfully for account ${fdAccountId}. ${selectedPlan.name} plan (${selectedPlan.rate}% p.a.). Maturity: ${newFD.endDate}`); + setFdAmount(''); + setSelectedFdPlan(''); + }; + + const handleRegisterCustomer = () => { + setError(''); + setSuccess(''); + + if (!newCustomer.name || !newCustomer.nic || !newCustomer.dateOfBirth) { + setError('Please fill in all required fields (Name, NIC, Date of Birth)'); + return; + } + + const existingCustomer = mockCustomers.find(c => c.nic === newCustomer.nic); + if (existingCustomer) { + setError('A customer with this NIC already exists'); + return; + } + + setSuccess(`Customer "${newCustomer.name}" registered successfully! Customer ID: CUST${Date.now().toString().slice(-3)}`); + setNewCustomer({ + name: '', + nic: '', + phoneNumber: '', + address: '', + dateOfBirth: '', + email: '' + }); + }; + + const handleCreateAccount = () => { + setError(''); + setSuccess(''); + + if (!newAccount.customerId || !newAccount.accountType || !newAccount.initialDeposit) { + setError('Please fill in all required fields'); + return; + } + + const customer = mockCustomers.find(c => c.customerId === newAccount.customerId); + if (!customer) { + setError('Customer not found'); + return; + } + + const selectedPlan = savingsPlans.find(plan => plan.id === newAccount.accountType && plan.id !== 'joint'); + if (!selectedPlan) { + setError('Invalid account type selected. Use "Create Joint Account" for joint accounts.'); + return; + } + + const initialAmount = parseFloat(newAccount.initialDeposit); + if (initialAmount < selectedPlan.minBalance) { + setError(`Initial deposit must be at least LKR ${selectedPlan.minBalance.toLocaleString()} for ${selectedPlan.name} account`); + return; + } + + setSuccess(`${selectedPlan.name} account created successfully for ${customer.name}! Account ID: SA${Date.now().toString().slice(-9)}`); + setNewAccount({ + customerId: '', + accountType: '', + initialDeposit: '' + }); + }; + + const handleCreateJointAccount = () => { + setError(''); + setSuccess(''); + + if (!jointAccount.customerId1 || !jointAccount.customerId2) { + setError('Please enter both customer IDs'); + return; + } + + if (jointAccount.customerId1 === jointAccount.customerId2) { + setError('Customer IDs must be different'); + return; + } + + if (!jointAccount.initialDeposit) { + setError('Please enter initial deposit amount'); + return; + } + + const customer1 = mockCustomers.find(c => c.customerId === jointAccount.customerId1); + const customer2 = mockCustomers.find(c => c.customerId === jointAccount.customerId2); + + if (!customer1) { + setError(`Customer ID ${jointAccount.customerId1} not found`); + return; + } + + if (!customer2) { + setError(`Customer ID ${jointAccount.customerId2} not found`); + return; + } + + const jointPlan = savingsPlans.find(plan => plan.id === 'joint'); + const initialAmount = parseFloat(jointAccount.initialDeposit); + + if (initialAmount < (jointPlan?.minBalance || 5000)) { + setError(`Initial deposit must be at least LKR ${jointPlan?.minBalance.toLocaleString()} for joint account`); + return; + } + + setSuccess(`Joint account created successfully for: ${customer1.name} and ${customer2.name}. Account ID: SA${Date.now().toString().slice(-9)}`); + setJointAccount({ + customerId1: '', + customerId2: '', + initialDeposit: '' + }); + }; + + const renderHomeScreen = () => ( +
+ + +
+
+

Welcome, {user?.username}!

+
+

Branch: {mockBranchInfo.name}

+

Address: {mockBranchInfo.address}

+

Manager: {mockBranchInfo.managerName}

+
+
+
+

Today's Date

+

{new Date().toLocaleDateString()}

+
+
+
+
+ +
+ changeView('search')}> + + +

Search Customer

+

Access existing customer accounts and perform transactions

+
+
+ + changeView('register')}> + + +

Register Customer

+

Register new customer with personal details

+
+
+ + changeView('create-account')}> + + +

Open Savings Account

+

Create savings account for existing customer

+
+
+ + changeView('create-joint')}> + + +

Create Joint Account

+

Open joint account for multiple customers

+
+
+
+ + + + + + Quick Customer Search + + + +
+ setSearchQuery(e.target.value)} + className="flex-1" + /> + +
+
+
+ + + + + + Your Recent Transactions + + + +
+ {mockAgentTransactions.slice(0, 5).map((txn) => ( +
+
+

{txn.customerName}

+

{txn.timestamp}

+
+
+

{txn.type}

+

0 ? 'text-green-600' : 'text-red-600'}`}> + {txn.amount > 0 ? '+' : ''}LKR {Math.abs(txn.amount).toLocaleString()} +

+
+
+ ))} +
+
+
+
+ ); + + const renderCustomerSearch = () => ( +
+
+

Search Existing Customer

+ +
+ + + + Customer Search + Search by Customer ID, NIC, or Savings Account ID + + +
+
+ + +
+
+ +
+ setSearchQuery(e.target.value)} + className="flex-1" + /> + +
+
+
+ + {error && ( + + + {error} + + )} + + {success && ( + + {success} + + )} +
+
+
+ ); + + const renderRegisterCustomer = () => ( +
+
+

Register New Customer

+ +
+ + + + Customer Information + Register a new customer (account creation comes after registration) + + +
+
+ + setNewCustomer({...newCustomer, name: e.target.value})} + /> +
+
+ + setNewCustomer({...newCustomer, nic: e.target.value})} + /> +
+
+ + setNewCustomer({...newCustomer, dateOfBirth: e.target.value})} + /> +
+
+ + setNewCustomer({...newCustomer, phoneNumber: e.target.value})} + /> +
+
+ + setNewCustomer({...newCustomer, email: e.target.value})} + /> +
+
+ + setNewCustomer({...newCustomer, address: e.target.value})} + /> +
+
+ + {error && ( + + + {error} + + )} + + {success && ( + + {success} + + )} + + + +
+

Note:

+

After registering the customer, you can create savings accounts for them using the "Open Savings Account" option from the home screen.

+
+
+
+
+ ); + + const renderCreateAccount = () => ( +
+
+

Open Savings Account

+ +
+ + + + Create Savings Account + Open a new savings account for an existing customer + + +
+ + +
+ +
+ +
+ {savingsPlans.filter(plan => plan.id !== 'joint').map((plan) => ( + setNewAccount({...newAccount, accountType: plan.id})} + > + +

{plan.name}

+
+

Interest: {plan.interestRate}%

+

Min Balance: {plan.minBalance === 0 ? 'None' : `LKR ${plan.minBalance.toLocaleString()}`}

+

{plan.ageRequirement}

+
+
+
+ ))} +
+
+ +
+ + setNewAccount({...newAccount, initialDeposit: e.target.value})} + /> + {newAccount.accountType && ( +

+ Minimum deposit: LKR {savingsPlans.find(p => p.id === newAccount.accountType)?.minBalance.toLocaleString() || '0'} +

+ )} +
+ + {error && ( + + + {error} + + )} + + {success && ( + + {success} + + )} + + +
+
+
+ ); + + const renderCreateJointAccount = () => ( +
+
+

Create Joint Account

+ +
+ + + + Joint Savings Account + Create a joint account for two existing customers + + +
+
+ + setJointAccount({...jointAccount, customerId1: e.target.value.toUpperCase()})} + /> +
+ +
+ + setJointAccount({...jointAccount, customerId2: e.target.value.toUpperCase()})} + /> +
+
+ +
+

Joint Account Plan

+
+

Interest Rate: 7%

+

Minimum Balance: LKR 5,000

+

All holders have equal rights to the account

+
+
+ +
+ + setJointAccount({...jointAccount, initialDeposit: e.target.value})} + /> +
+ + {error && ( + + + {error} + + )} + + {success && ( + + {success} + + )} + + + +
+

Available Customers:

+
+ {mockCustomers.map((customer) => ( +

+ {customer.customerId} - {customer.name} +

+ ))} +
+
+
+
+
+ ); + + const renderCustomerView = () => ( +
+
+
+

{selectedCustomer.name}

+

Customer ID: {selectedCustomer.customerId}

+
+
+ + +
+
+ + {error && ( + + + {error} + + )} + + {success && ( + + {success} + + )} + +
+ + + + + Customer Information + + + +
+ +

{selectedCustomer.name}

+
+
+ +

{selectedCustomer.nic}

+
+
+ +

{selectedCustomer.phoneNumber}

+
+
+ +

{selectedCustomer.email}

+
+
+ +

{selectedCustomer.dateOfBirth}

+
+
+ +

{selectedCustomer.address}

+
+
+ + + {selectedCustomer.status} + +
+
+
+ + + + + + Savings Accounts ({selectedCustomer.savingsAccounts.length}) + + + + {selectedCustomer.savingsAccounts.length === 0 ? ( +

No savings accounts yet

+ ) : ( + selectedCustomer.savingsAccounts.map((account: any) => ( +
+
+
+ +

{account.savingAccountId}

+
+ {account.planName} +
+
+ +

+ LKR {account.balance.toLocaleString()} +

+
+
+
+ +

{account.interestRate}%

+
+
+ +

LKR {account.minBalance.toLocaleString()}

+
+
+
+ Opened: {account.openDate} +
+ {account.holders && account.holders.length > 1 && ( +
+

+ + Joint Account ({account.holders.length} holders) +

+
+ )} + {selectedCustomer.fixedDeposits.some((fd: any) => fd.savingAccountId === account.savingAccountId && fd.status) && ( +
+

✓ Has Active FD

+
+ )} +
+ )) + )} +
+
+ + + + Quick Actions + + + {selectedCustomer.savingsAccounts.length > 0 ? ( + <> +
+ + +
+ + setTransactionAmount(e.target.value)} + /> +
+ +
+ +
+ + +
+ + setFdAmount(e.target.value)} + /> +
+ +

+ Note: Each account can have only one active FD +

+
+ + ) : ( +
+

No savings accounts found for this customer.

+

Use "Open Savings Account" from home to create one.

+
+ )} +
+
+
+ + {selectedCustomer.fixedDeposits.length > 0 && ( + + + + + Fixed Deposits ({selectedCustomer.fixedDeposits.length}) + + + +
+ {selectedCustomer.fixedDeposits.map((fd: any) => ( +
+
+
+

FD #{fd.fixedDepositId}

+

Account: {fd.savingAccountId}

+
+ + {fd.status ? 'Active' : 'Matured'} + +
+
+
+ Principal: + LKR {fd.principalAmount.toLocaleString()} +
+
+ Plan: + {fd.planName} +
+
+ Interest Rate: + {fd.interestRate}% +
+
+ Start Date: + {fd.startDate} +
+
+ Maturity Date: + {fd.endDate} +
+ {fd.lastPayoutDate && ( +
+ Last Payout: + {fd.lastPayoutDate} +
+ )} +
+
+ ))} +
+
+
+ )} + + {selectedCustomer.transactions.length > 0 && ( + + + + + Transaction History + + + +
+ {selectedCustomer.transactions.map((txn: any) => ( +
+
+

{txn.type}

+

{txn.timestamp}

+

{txn.description}

+

Account: {txn.savingAccountId}

+
+
+

0 ? 'text-green-600' : 'text-red-600'}`}> + {txn.amount > 0 ? '+' : ''}LKR {Math.abs(txn.amount).toLocaleString()} +

+

{txn.refNumber}

+
+
+ ))} +
+
+
+ )} +
+ ); + + return ( +
+
+
+
+
+ +
+

Agent Dashboard

+

{mockBranchInfo.name}

+
+
+ +
+
+
+ +
+ {currentView === 'home' && renderHomeScreen()} + {currentView === 'search' && renderCustomerSearch()} + {currentView === 'customer' && renderCustomerView()} + {currentView === 'register' && renderRegisterCustomer()} + {currentView === 'create-account' && renderCreateAccount()} + {currentView === 'create-joint' && renderCreateJointAccount()} +
+
+ ); +} diff --git a/Frontend/src/components/LoginPage.tsx b/Frontend/src/components/LoginPage.tsx new file mode 100644 index 0000000..7fa9245 --- /dev/null +++ b/Frontend/src/components/LoginPage.tsx @@ -0,0 +1,112 @@ +import React, { useState } from 'react'; +import { Button } from './ui/button'; +import { Input } from './ui/input'; +import { Label } from './ui/label'; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './ui/select'; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from './ui/card'; +import { useAuth } from '../App'; +import { Building2, User, Lock } from 'lucide-react'; + +export function LoginPage() { + const [username, setUsername] = useState(''); + const [password, setPassword] = useState(''); + const [role, setRole] = useState(''); + const [error, setError] = useState(''); + const { login } = useAuth(); + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + setError(''); + + if (!username || !password || !role) { + setError('Please fill in all fields'); + return; + } + + const success = login(username, password, role); + if (!success) { + setError('Invalid credentials'); + } + }; + + return ( +
+ + +
+ +
+ Bank Management System + + Sign in to access your dashboard + +
+ +
+
+ +
+ + setUsername(e.target.value)} + className="pl-10" + /> +
+
+ +
+ +
+ + setPassword(e.target.value)} + className="pl-10" + /> +
+
+ +
+ + +
+ + {error && ( +
+ {error} +
+ )} + + +
+ +
+

Demo Credentials:

+

Username: demo | Password: demo123

+

+ Select any role to explore the dashboard +

+
+
+
+
+ ); +} \ No newline at end of file diff --git a/Frontend/src/components/ManagerDashboard.tsx b/Frontend/src/components/ManagerDashboard.tsx new file mode 100644 index 0000000..fe26bd1 --- /dev/null +++ b/Frontend/src/components/ManagerDashboard.tsx @@ -0,0 +1,356 @@ +import React, { useState } from 'react'; +import { Button } from './ui/button'; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from './ui/card'; +import { Tabs, TabsContent, TabsList, TabsTrigger } from './ui/tabs'; +import { Badge } from './ui/badge'; +import { useAuth } from '../App'; +import { LogOut, Users, TrendingUp, UserPlus, FileText, Building2 } from 'lucide-react'; +import { Progress } from './ui/progress'; + +// Mock data for manager dashboard +const mockAgents = [ + { + id: 'agent_001', + name: 'Sarah Johnson', + email: 'sarah.johnson@bank.com', + customersCount: 25, + monthlyTransactions: 145, + totalVolume: 245000, + status: 'Active' + }, + { + id: 'agent_002', + name: 'Mike Chen', + email: 'mike.chen@bank.com', + customersCount: 32, + monthlyTransactions: 189, + totalVolume: 312000, + status: 'Active' + }, + { + id: 'agent_003', + name: 'Emily Rodriguez', + email: 'emily.rodriguez@bank.com', + customersCount: 18, + monthlyTransactions: 98, + totalVolume: 178000, + status: 'Active' + } +]; + +const branchTransactions = [ + { type: 'Deposits', count: 432, amount: 1250000, percentage: 65 }, + { type: 'Withdrawals', count: 278, amount: 580000, percentage: 30 }, + { type: 'Interest Payments', count: 89, amount: 95000, percentage: 5 } +]; + +const monthlyStats = { + totalCustomers: 75, + activeAccounts: 68, + newAccountsThisMonth: 12, + totalDeposits: 1250000, + totalWithdrawals: 580000, + netGrowth: 670000 +}; + +export function ManagerDashboard() { + const { user, logout } = useAuth(); + const [selectedPeriod, setSelectedPeriod] = useState('current-month'); + + return ( +
+ {/* Header */} +
+
+
+
+ +
+

Branch Manager Dashboard

+

Welcome, {user?.username} - Branch {user?.branchId}

+
+
+ +
+
+
+ +
+ {/* Overview Cards */} +
+ + +
+ +
+

Total Customers

+

{monthlyStats.totalCustomers}

+
+
+
+
+ + + +
+ +
+

Net Growth

+

${(monthlyStats.netGrowth / 1000).toFixed(0)}K

+
+
+
+
+ + + +
+ +
+

New Accounts

+

{monthlyStats.newAccountsThisMonth}

+
+
+
+
+ + + +
+ +
+

Active Agents

+

{mockAgents.length}

+
+
+
+
+
+ + + + Monitor Agents + Branch Transactions + Manage Agents + Reports + + + {/* Monitor Agents */} + + + + Agent Performance + + Performance metrics for agents in your branch + + + +
+ {mockAgents.map((agent) => ( +
+
+
+

{agent.name}

+

{agent.email}

+
+ + {agent.status} + +
+ +
+
+

Customers

+

{agent.customersCount}

+
+
+

Monthly Transactions

+

{agent.monthlyTransactions}

+
+
+

Total Volume

+

${(agent.totalVolume / 1000).toFixed(0)}K

+
+
+ +
+
+ Performance Score + {Math.round((agent.monthlyTransactions / 200) * 100)}% +
+ +
+
+ ))} +
+
+
+
+ + {/* Branch Transactions */} + + + + Branch Transaction Summary + + Transaction breakdown for your branch this month + + + +
+ {branchTransactions.map((transaction, index) => ( +
+
+

{transaction.type}

+ {transaction.count} transactions +
+
+

${transaction.amount.toLocaleString()}

+

{transaction.percentage}% of total

+
+ +
+ ))} +
+ +
+

Summary

+
+
+

Total Deposits

+

${monthlyStats.totalDeposits.toLocaleString()}

+
+
+

Total Withdrawals

+

${monthlyStats.totalWithdrawals.toLocaleString()}

+
+
+
+
+
+
+ + {/* Manage Agents */} + + + + Agent Management + + Create, edit, and manage agents in your branch + + + +
+ + +
+ {mockAgents.map((agent) => ( +
+
+

{agent.name}

+

{agent.email}

+
+
+ + +
+
+ ))} +
+
+
+
+
+ + {/* Reports */} + + + + Branch Reports + + Detailed analytics and reports for your branch + + + +
+ {/* Agent Performance Report */} +
+

Agent Performance

+
+ {mockAgents.map((agent) => ( +
+ {agent.name} + ${(agent.totalVolume / 1000).toFixed(0)}K +
+ ))} +
+
+ + {/* Customer Activity */} +
+

Customer Activity

+
+
+ Active Customers + {monthlyStats.activeAccounts} +
+
+ New This Month + {monthlyStats.newAccountsThisMonth} +
+
+ Avg. Balance + ${(monthlyStats.totalDeposits / monthlyStats.activeAccounts / 1000).toFixed(1)}K +
+
+
+ + {/* Monthly Trends */} +
+

Monthly Trends

+
+
+ Deposit Growth + +12.5% +
+
+ Customer Growth + +8.3% +
+
+ Transaction Volume + +15.2% +
+
+
+ + {/* Quick Actions */} +
+

Quick Actions

+
+ + + +
+
+
+
+
+
+
+
+
+ ); +} \ No newline at end of file diff --git a/Frontend/src/components/figma/ImageWithFallback.tsx b/Frontend/src/components/figma/ImageWithFallback.tsx new file mode 100644 index 0000000..0e26139 --- /dev/null +++ b/Frontend/src/components/figma/ImageWithFallback.tsx @@ -0,0 +1,27 @@ +import React, { useState } from 'react' + +const ERROR_IMG_SRC = + 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODgiIGhlaWdodD0iODgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBvcGFjaXR5PSIuMyIgZmlsbD0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIzLjciPjxyZWN0IHg9IjE2IiB5PSIxNiIgd2lkdGg9IjU2IiBoZWlnaHQ9IjU2IiByeD0iNiIvPjxwYXRoIGQ9Im0xNiA1OCAxNi0xOCAzMiAzMiIvPjxjaXJjbGUgY3g9IjUzIiBjeT0iMzUiIHI9IjciLz48L3N2Zz4KCg==' + +export function ImageWithFallback(props: React.ImgHTMLAttributes) { + const [didError, setDidError] = useState(false) + + const handleError = () => { + setDidError(true) + } + + const { src, alt, style, className, ...rest } = props + + return didError ? ( +
+
+ Error loading image +
+
+ ) : ( + {alt} + ) +} diff --git a/Frontend/src/components/ui/accordion.tsx b/Frontend/src/components/ui/accordion.tsx new file mode 100644 index 0000000..bd6b1e3 --- /dev/null +++ b/Frontend/src/components/ui/accordion.tsx @@ -0,0 +1,66 @@ +"use client"; + +import * as React from "react"; +import * as AccordionPrimitive from "@radix-ui/react-accordion"; +import { ChevronDownIcon } from "lucide-react"; + +import { cn } from "./utils"; + +function Accordion({ + ...props +}: React.ComponentProps) { + return ; +} + +function AccordionItem({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function AccordionTrigger({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + + svg]:rotate-180", + className, + )} + {...props} + > + {children} + + + + ); +} + +function AccordionContent({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + +
{children}
+
+ ); +} + +export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }; diff --git a/Frontend/src/components/ui/alert-dialog.tsx b/Frontend/src/components/ui/alert-dialog.tsx new file mode 100644 index 0000000..875b8df --- /dev/null +++ b/Frontend/src/components/ui/alert-dialog.tsx @@ -0,0 +1,157 @@ +"use client"; + +import * as React from "react"; +import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog"; + +import { cn } from "./utils"; +import { buttonVariants } from "./button"; + +function AlertDialog({ + ...props +}: React.ComponentProps) { + return ; +} + +function AlertDialogTrigger({ + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function AlertDialogPortal({ + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function AlertDialogOverlay({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function AlertDialogContent({ + className, + ...props +}: React.ComponentProps) { + return ( + + + + + ); +} + +function AlertDialogHeader({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ); +} + +function AlertDialogFooter({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ); +} + +function AlertDialogTitle({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function AlertDialogDescription({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function AlertDialogAction({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function AlertDialogCancel({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +export { + AlertDialog, + AlertDialogPortal, + AlertDialogOverlay, + AlertDialogTrigger, + AlertDialogContent, + AlertDialogHeader, + AlertDialogFooter, + AlertDialogTitle, + AlertDialogDescription, + AlertDialogAction, + AlertDialogCancel, +}; diff --git a/Frontend/src/components/ui/alert.tsx b/Frontend/src/components/ui/alert.tsx new file mode 100644 index 0000000..9c35976 --- /dev/null +++ b/Frontend/src/components/ui/alert.tsx @@ -0,0 +1,66 @@ +import * as React from "react"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "./utils"; + +const alertVariants = cva( + "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", + { + variants: { + variant: { + default: "bg-card text-card-foreground", + destructive: + "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90", + }, + }, + defaultVariants: { + variant: "default", + }, + }, +); + +function Alert({ + className, + variant, + ...props +}: React.ComponentProps<"div"> & VariantProps) { + return ( +
+ ); +} + +function AlertTitle({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ); +} + +function AlertDescription({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ); +} + +export { Alert, AlertTitle, AlertDescription }; diff --git a/Frontend/src/components/ui/aspect-ratio.tsx b/Frontend/src/components/ui/aspect-ratio.tsx new file mode 100644 index 0000000..c16d6bc --- /dev/null +++ b/Frontend/src/components/ui/aspect-ratio.tsx @@ -0,0 +1,11 @@ +"use client"; + +import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio"; + +function AspectRatio({ + ...props +}: React.ComponentProps) { + return ; +} + +export { AspectRatio }; diff --git a/Frontend/src/components/ui/avatar.tsx b/Frontend/src/components/ui/avatar.tsx new file mode 100644 index 0000000..c990451 --- /dev/null +++ b/Frontend/src/components/ui/avatar.tsx @@ -0,0 +1,53 @@ +"use client"; + +import * as React from "react"; +import * as AvatarPrimitive from "@radix-ui/react-avatar"; + +import { cn } from "./utils"; + +function Avatar({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function AvatarImage({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function AvatarFallback({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +export { Avatar, AvatarImage, AvatarFallback }; diff --git a/Frontend/src/components/ui/badge.tsx b/Frontend/src/components/ui/badge.tsx new file mode 100644 index 0000000..2ccc2c4 --- /dev/null +++ b/Frontend/src/components/ui/badge.tsx @@ -0,0 +1,46 @@ +import * as React from "react"; +import { Slot } from "@radix-ui/react-slot"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "./utils"; + +const badgeVariants = cva( + "inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90", + secondary: + "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90", + destructive: + "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", + outline: + "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + }, +); + +function Badge({ + className, + variant, + asChild = false, + ...props +}: React.ComponentProps<"span"> & + VariantProps & { asChild?: boolean }) { + const Comp = asChild ? Slot : "span"; + + return ( + + ); +} + +export { Badge, badgeVariants }; diff --git a/Frontend/src/components/ui/breadcrumb.tsx b/Frontend/src/components/ui/breadcrumb.tsx new file mode 100644 index 0000000..8f84d7e --- /dev/null +++ b/Frontend/src/components/ui/breadcrumb.tsx @@ -0,0 +1,109 @@ +import * as React from "react"; +import { Slot } from "@radix-ui/react-slot"; +import { ChevronRight, MoreHorizontal } from "lucide-react"; + +import { cn } from "./utils"; + +function Breadcrumb({ ...props }: React.ComponentProps<"nav">) { + return