diff --git a/app/db/__init__.py b/app/db/__init__.py
@@ -2,7 +2,6 @@ from sqlalchemy.exc import SQLAlchemyError
from sqlalchemy.orm import Session
from .base import Base, SessionLocal, engine # noqa
-
from .crud import (
create_admin,
create_notification_reminder, # noqa
@@ -27,9 +26,7 @@ from .crud import (
update_user,
update_user_status,
update_user_sub,
- start_user_expire,
)
-
from .models import JWT, System, User # noqa
@@ -56,7 +53,6 @@ __all__ = [
"remove_user",
"update_user",
"update_user_status",
- "start_user_expire",
"update_user_sub",
"revoke_user_sub",
"set_owner",
diff --git a/app/db/crud.py b/app/db/crud.py
@@ -7,7 +7,6 @@ from typing import List, Optional, Tuple, Union
from sqlalchemy import and_, delete, update, select
from sqlalchemy.orm import Session
-from app.config.env import NOTIFY_DAYS_LEFT, NOTIFY_REACHED_USAGE_PERCENT
from app.db.models import (
JWT,
TLS,
@@ -34,14 +33,11 @@ from app.models.service import Service as ServiceModify, ServiceCreate
from app.models.user import (
ReminderType,
UserCreate,
- UserDataLimitResetStrategy,
+ UserDataUsageResetStrategy,
UserModify,
UserStatus,
UserUsageResponse,
-)
-from app.utils.helpers import (
- calculate_expiration_days,
- calculate_usage_percent,
+ UserExpireStrategy,
)
@@ -110,19 +106,16 @@ def assure_node_inbounds(db: Session, inbounds: List[Inbound], node_id: int):
def get_node_users(
db: Session,
- node_id: Optional[int],
- statuses: Optional[List[UserStatus]] = None,
+ node_id: int,
):
query = (
db.query(User.id, User.username, User.key, Inbound)
.distinct()
- .where(User.enabled == True)
.join(Inbound.services)
.join(Service.users)
.filter(Inbound.node_id == node_id)
+ .filter(User.activated == True)
)
- if isinstance(statuses, list):
- query = query.filter(User.status.in_(statuses))
return query.all()
@@ -210,12 +203,12 @@ UsersSortingOptions = Enum(
"username": User.username.asc(),
"used_traffic": User.used_traffic.asc(),
"data_limit": User.data_limit.asc(),
- "expire": User.expire.asc(),
+ "expire": User.expire_date.asc(),
"created_at": User.created_at.asc(),
"-username": User.username.desc(),
"-used_traffic": User.used_traffic.desc(),
"-data_limit": User.data_limit.desc(),
- "-expire": User.expire.desc(),
+ "-expire": User.expire_date.desc(),
"-created_at": User.created_at.desc(),
},
)
@@ -226,11 +219,16 @@ def get_users(
offset: Optional[int] = None,
limit: Optional[int] = None,
usernames: Optional[List[str]] = None,
- status: Optional[Union[UserStatus, list]] = None,
sort: Optional[List[UsersSortingOptions]] = None,
admin: Optional[Admin] = None,
- reset_strategy: Optional[Union[UserDataLimitResetStrategy, list]] = None,
- return_with_count: bool = False,
+ reset_strategy: Optional[Union[UserDataUsageResetStrategy, list]] = None,
+ expire_strategy: (
+ UserExpireStrategy | list[UserExpireStrategy] | None
+ ) = None,
+ is_active: bool | None = None,
+ activated: bool | None = None,
+ expired: bool | None = None,
+ data_limit_reached: bool | None = None,
) -> Union[List[User], Tuple[List[User], int]]:
query = db.query(User)
@@ -240,12 +238,6 @@ def get_users(
else:
query = query.filter(User.username.in_(usernames))
- if status:
- if isinstance(status, list):
- query = query.filter(User.status.in_(status))
- else:
- query = query.filter(User.status == status)
-
if reset_strategy:
if isinstance(reset_strategy, list):
query = query.filter(
@@ -256,24 +248,36 @@ def get_users(
User.data_limit_reset_strategy == reset_strategy
)
+ if expire_strategy:
+ if isinstance(expire_strategy, list):
+ query = query.filter(User.expire_strategy.in_(expire_strategy))
+ else:
+ query = query.filter(User.expire_strategy == expire_strategy)
+
+ if isinstance(is_active, bool):
+ query = query.filter(User.is_active == is_active)
+
+ if isinstance(activated, bool):
+ query = query.filter(User.activated == activated)
+
+ if isinstance(expired, bool):
+ query = query.filter(User.expired == expired)
+
+ if isinstance(data_limit_reached, bool):
+ query = query.filter(User.data_limit_reached == data_limit_reached)
+
if admin:
query = query.filter(User.admin == admin)
- # count it before applying limit and offset
- if return_with_count:
- count = query.count()
-
if sort:
query = query.order_by(*(opt.value for opt in sort))
if offset:
query = query.offset(offset)
+
if limit:
query = query.limit(limit)
- if return_with_count:
- return query.all(), count
-
return query.all()
@@ -307,41 +311,54 @@ def get_user_usages(
def get_users_count(
db: Session,
- status: UserStatus | None = None,
admin: Admin | None = None,
enabled: bool | None = None,
online: bool | None = None,
+ expire_strategy: UserExpireStrategy | None = None,
+ is_active: bool | None = None,
+ expired: bool | None = None,
+ data_limit_reached: bool | None = None,
):
query = db.query(User.id)
if admin:
query = query.filter(User.admin_id == admin.id)
- if status:
- query = query.filter(User.status == status)
+ if is_active:
+ query = query.filter(User.is_active == is_active)
+ if expired:
+ query = query.filter(User.expired == expired)
+ if data_limit_reached:
+ query = query.filter(User.data_limit_reached == data_limit_reached)
if enabled:
query = query.filter(User.enabled == enabled)
- if online:
+ if online is True:
query = query.filter(
User.online_at > (datetime.utcnow() - timedelta(seconds=30))
)
+ elif online is False:
+ query = query.filter(
+ User.online_at < (datetime.utcnow() - timedelta(seconds=30))
+ )
+ if expire_strategy:
+ query = query.filter(User.expire_strategy == expire_strategy)
+
return query.count()
def create_user(db: Session, user: UserCreate, admin: Admin = None):
dbuser = User(
username=user.username,
- # proxies=proxies,
key=user.key,
+ expire_strategy=user.expire_strategy,
+ expire_date=user.expire_date,
+ usage_duration=user.usage_duration,
+ activation_deadline=user.activation_deadline,
services=db.query(Service)
.filter(Service.id.in_(user.service_ids))
.all(), # user.services,
- status=user.status,
data_limit=(user.data_limit or None),
- expire=(user.expire or None),
admin=admin,
data_limit_reset_strategy=user.data_limit_reset_strategy,
note=user.note,
- on_hold_expire_duration=(user.on_hold_expire_duration or None),
- on_hold_timeout=(user.on_hold_timeout or None),
)
db.add(dbuser)
db.commit()
@@ -356,64 +373,26 @@ def remove_user(db: Session, dbuser: User):
def update_user(db: Session, dbuser: User, modify: UserModify):
- if modify.status is not None:
- dbuser.status = modify.status
-
if modify.data_limit is not None:
- # in case there is modification to a user's data limit
- dbuser.data_limit = (
- modify.data_limit or None
- ) # set it to the new limit
- if dbuser.status is not UserStatus.expired:
- # in case the user isn't already disabled/expired
- if (
- not dbuser.data_limit
- or dbuser.used_traffic < dbuser.data_limit
- ):
- # in case the user is unlimited or hasn't reached the limit already
- if dbuser.status != UserStatus.on_hold:
- dbuser.status = UserStatus.active
-
- if not dbuser.data_limit or (
- calculate_usage_percent(
- dbuser.used_traffic, dbuser.data_limit
- )
- < NOTIFY_REACHED_USAGE_PERCENT
- ):
- delete_notification_reminder_by_type(
- db, dbuser.id, ReminderType.data_usage
- )
- else:
- # the user has reached the new data limit
- dbuser.status = UserStatus.limited
-
- if modify.expire is not None:
- dbuser.expire = modify.expire or None
- if dbuser.status in (UserStatus.active, UserStatus.expired):
- if not dbuser.expire or dbuser.expire > datetime.utcnow():
- dbuser.status = UserStatus.active
- if not dbuser.expire or (
- calculate_expiration_days(dbuser.expire) > NOTIFY_DAYS_LEFT
- ):
- delete_notification_reminder_by_type(
- db, dbuser.id, ReminderType.expiration_date
- )
- else:
- dbuser.status = UserStatus.expired
+ dbuser.data_limit = modify.data_limit or None
+
+ if modify.expire_strategy is not None:
+ dbuser.expire_strategy = modify.expire_strategy or None
+
+ if modify.expire_date is not None:
+ dbuser.expire_date = modify.expire_date or None
if modify.note is not None:
dbuser.note = modify.note or None
if modify.data_limit_reset_strategy is not None:
- dbuser.data_limit_reset_strategy = (
- modify.data_limit_reset_strategy.value
- )
+ dbuser.data_limit_reset_strategy = modify.data_limit_reset_strategy
- if modify.on_hold_timeout is not None:
- dbuser.on_hold_timeout = modify.on_hold_timeout
+ if modify.activation_deadline is not None:
+ dbuser.activation_deadline = modify.activation_deadline
- if modify.on_hold_expire_duration is not None:
- dbuser.on_hold_expire_duration = modify.on_hold_expire_duration
+ if modify.usage_duration is not None:
+ dbuser.usage_duration = modify.usage_duration
if modify.service_ids is not None:
dbuser.services = (
@@ -432,8 +411,6 @@ def reset_user_data_usage(db: Session, dbuser: User):
dbuser.used_traffic = 0
- if dbuser.status == UserStatus.limited:
- dbuser.status = UserStatus.active.value
db.add(dbuser)
db.commit()
@@ -463,16 +440,8 @@ def reset_all_users_data_usage(db: Session, admin: Optional[Admin] = None):
if admin:
query = query.filter(User.admin == admin)
- for dbuser in query.all():
- dbuser.used_traffic = 0
- if dbuser.status not in [
- UserStatus.on_hold,
- UserStatus.expired,
- ]:
- dbuser.status = UserStatus.active
- dbuser.usage_logs.clear()
- dbuser.node_usages.clear()
- db.add(dbuser)
+ for db_user in query.all():
+ db_user.used_traffic = 0
db.commit()
@@ -491,16 +460,6 @@ def set_owner(db: Session, dbuser: User, admin: Admin):
return dbuser
-def start_user_expire(db: Session, dbuser: User):
- expire = datetime.utcnow() + timedelta(
- seconds=dbuser.on_hold_expire_duration
- )
- dbuser.expire = expire
- db.commit()
- db.refresh(dbuser)
- return dbuser
-
-
def get_system_usage(db: Session):
return db.query(System).first()
diff --git a/app/db/migrations/versions/a83e4dd22672_refactor_user_expire.py b/app/db/migrations/versions/a83e4dd22672_refactor_user_expire.py
@@ -0,0 +1,141 @@
+"""refactor user expire
+
+Revision ID: a83e4dd22672
+Revises: 9001356f0063
+Create Date: 2024-06-27 01:04:34.974520
+
+"""
+
+import sqlalchemy as sa
+from alembic import op
+from sqlalchemy import table, column
+from sqlalchemy.dialects import postgresql
+
+# revision identifiers, used by Alembic.
+revision = "a83e4dd22672"
+down_revision = "9001356f0063"
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ bind = op.get_bind()
+ dialect = bind.dialect.name
+
+ if dialect == "postgresql":
+ op.execute(
+ """
+ DO $$
+ BEGIN
+ IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'userexpirestrategy') THEN
+ CREATE TYPE userexpirestrategy AS ENUM ('NEVER', 'FIXED_DATE', 'START_ON_FIRST_USE');
+ END IF;
+ END $$;
+ """
+ )
+ op.add_column(
+ "users",
+ sa.Column(
+ "activated",
+ sa.Boolean(),
+ nullable=False,
+ server_default=sa.sql.true(),
+ ),
+ )
+ op.add_column(
+ "users",
+ sa.Column(
+ "expire_strategy",
+ sa.Enum(
+ "NEVER",
+ "FIXED_DATE",
+ "START_ON_FIRST_USE",
+ name="userexpirestrategy",
+ ),
+ server_default="NEVER",
+ nullable=False,
+ ),
+ )
+
+ if dialect == "sqlite":
+ for old, new, type_ in [
+ ("on_hold_timeout", "activation_deadline", sa.DateTime),
+ ("expire", "expire_date", sa.DateTime),
+ ("on_hold_expire_duration", "usage_duration", sa.Integer),
+ ]:
+ op.add_column("users", sa.Column(new, type_))
+
+ # Step 2: Copy data from the old column to the new column
+ op.execute(f"UPDATE users SET {new} = {old}")
+
+ with op.batch_alter_table("users") as batch_op:
+ batch_op.drop_column(old)
+ else:
+ op.alter_column(
+ "users", "on_hold_timeout", new_column_name="activation_deadline"
+ )
+ op.alter_column("users", "expire", new_column_name="expire_date")
+ op.alter_column(
+ "users",
+ "on_hold_expire_duration",
+ new_column_name="usage_duration",
+ )
+ # ### end Alembic commands ###
+ users_table = table(
+ "users",
+ column("id", sa.Integer),
+ column("status", sa.String),
+ column("expire_date", sa.DateTime),
+ column("expire_strategy", sa.Enum(name="userexpirestrategy")),
+ )
+
+ connection = op.get_bind()
+ results = connection.execute(
+ sa.select(
+ users_table.c.id, users_table.c.status, users_table.c.expire_date
+ )
+ )
+
+ for user in results:
+ status = user[1]
+ expire_date = user[2]
+
+ if status == "on_hold":
+ expire_strategy = "START_ON_FIRST_USE"
+ elif expire_date:
+ expire_strategy = "FIXED_DATE"
+ else:
+ expire_strategy = "NEVER"
+ connection.execute(
+ users_table.update()
+ .where(users_table.c.id == user[0])
+ .values(expire_strategy=expire_strategy)
+ )
+
+ op.drop_column("users", "status")
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.add_column(
+ "users",
+ sa.Column(
+ "status",
+ postgresql.ENUM(
+ "active", "limited", "expired", "on_hold", name="userstatus"
+ ),
+ autoincrement=False,
+ nullable=False,
+ server_default="active",
+ ),
+ )
+ op.alter_column(
+ "users", "activation_deadline", new_column_name="on_hold_timeout"
+ )
+ op.alter_column(
+ "users", "usage_duration", new_column_name="on_hold_expire_duration"
+ )
+ op.alter_column("users", "expire_date", new_column_name="expire")
+ op.drop_column("users", "expire_strategy")
+ op.drop_column("users", "activated")
+ # ### end Alembic commands ###
diff --git a/app/db/models.py b/app/db/models.py
@@ -15,7 +15,10 @@ from sqlalchemy import (
Table,
UniqueConstraint,
JSON,
+ and_,
+ func,
)
+from sqlalchemy.ext.hybrid import hybrid_property
from sqlalchemy.orm import relationship
from sqlalchemy.sql.expression import text
@@ -29,8 +32,9 @@ from app.models.proxy import (
)
from app.models.user import (
ReminderType,
- UserDataLimitResetStrategy,
+ UserDataUsageResetStrategy,
UserStatus,
+ UserExpireStrategy,
)
@@ -87,6 +91,7 @@ class User(Base):
id = Column(Integer, primary_key=True)
username = Column(String(32), unique=True, index=True)
key = Column(String(64), unique=True)
+ activated = Column(Boolean, nullable=False, default=True)
enabled = Column(
Boolean,
nullable=False,
@@ -106,10 +111,6 @@ class User(Base):
viewonly=True,
distinct_target_key=True,
)
- # proxies = relationship("Proxy", back_populates="user", cascade="all, delete-orphan")
- status = Column(
- Enum(UserStatus), nullable=False, default=UserStatus.active
- )
used_traffic = Column(BigInteger, default=0)
lifetime_used_traffic = Column(
BigInteger, default=0, server_default="0", nullable=False
@@ -127,13 +128,20 @@ class User(Base):
)
data_limit = Column(BigInteger)
data_limit_reset_strategy = Column(
- Enum(UserDataLimitResetStrategy),
+ Enum(UserDataUsageResetStrategy),
nullable=False,
- default=UserDataLimitResetStrategy.no_reset,
+ default=UserDataUsageResetStrategy.no_reset,
)
ip_limit = Column(Integer, nullable=False, default=-1)
settings = Column(String(1024))
- expire = Column(DateTime)
+ expire_strategy = Column(
+ Enum(UserExpireStrategy),
+ nullable=False,
+ default=UserExpireStrategy.NEVER,
+ )
+ expire_date = Column(DateTime)
+ usage_duration = Column(BigInteger)
+ activation_deadline = Column(DateTime)
admin_id = Column(Integer, ForeignKey("admins.id"))
admin = relationship("Admin", back_populates="users")
sub_updated_at = Column(DateTime)
@@ -141,14 +149,50 @@ class User(Base):
created_at = Column(DateTime, default=datetime.utcnow)
note = Column(String(500))
online_at = Column(DateTime)
- on_hold_expire_duration = Column(BigInteger)
- on_hold_timeout = Column(DateTime)
edit_at = Column(DateTime)
@property
def service_ids(self):
return [service.id for service in self.services]
+ @hybrid_property
+ def expired(self):
+ if self.expire_strategy == "fixed_date":
+ return self.expire_date < datetime.utcnow()
+ return False
+
+ @expired.expression
+ def expired(cls):
+ return and_(
+ cls.expire_strategy == "fixed_date", cls.expire_date < func.now()
+ )
+
+ @hybrid_property
+ def data_limit_reached(self):
+ if self.data_limit is not None:
+ return self.used_traffic >= self.data_limit
+ return False
+
+ @data_limit_reached.expression
+ def data_limit_reached(cls):
+ return and_(
+ cls.data_limit.isnot(None), cls.used_traffic >= cls.data_limit
+ )
+
+ @hybrid_property
+ def is_active(self):
+ return (
+ self.enabled and not self.expired and not self.data_limit_reached
+ )
+
+ @is_active.expression
+ def is_active(cls):
+ return and_(cls.enabled == True, ~cls.expired, ~cls.data_limit_reached)
+
+ @property
+ def status(self):
+ return UserStatus.ACTIVE if self.is_active else UserStatus.INACTIVE
+
class Inbound(Base):
__tablename__ = "inbounds"
diff --git a/app/marzneshin.py b/app/marzneshin.py
@@ -1,10 +1,9 @@
import asyncio
import logging
+from contextlib import asynccontextmanager
from datetime import datetime as dt
from datetime import timedelta as td
-
from typing import AsyncGenerator
-from contextlib import asynccontextmanager
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from fastapi import FastAPI, Request, status
@@ -82,7 +81,7 @@ app.add_middleware(
scheduler = AsyncIOScheduler(timezone="UTC")
scheduler.add_job(record_user_usages, "interval", coalesce=True, seconds=30)
scheduler.add_job(
- review_users, "interval", seconds=600, coalesce=True, max_instances=1
+ review_users, "interval", seconds=30, coalesce=True, max_instances=1
)
scheduler.add_job(reset_user_data_usage, "interval", coalesce=True, hours=1)
scheduler.add_job(
diff --git a/app/marznode/database.py b/app/marznode/database.py
@@ -1,14 +1,11 @@
from app.db import crud, GetDB
from app.models.node import NodeStatus
-from app.models.user import UserStatus
class MarzNodeDB:
def list_users(self):
with GetDB() as db:
- relations = crud.get_node_users(
- db, self.id, [UserStatus.active, UserStatus.on_hold]
- )
+ relations = crud.get_node_users(db, self.id)
users = dict()
for rel in relations:
if not users.get(rel[0]):
diff --git a/app/marznode/operations.py b/app/marznode/operations.py
@@ -6,32 +6,32 @@ from app import marznode
from .grpcio import MarzNodeGRPCIO
from .grpclib import MarzNodeGRPCLIB
from ..models.node import NodeConnectionBackend
-from ..models.user import UserStatus
if TYPE_CHECKING:
from app.db import User as DBUser
-async def update_user(user: "DBUser", old_inbounds: set | None = None):
- """updates a user on all nodes
- even though this isn't efficient it is extremely precise"""
+def update_user(
+ user: "DBUser", old_inbounds: set | None = None, remove: bool = False
+):
+ """updates a user on all related nodes"""
if old_inbounds is None:
old_inbounds = set()
node_inbounds = defaultdict(list)
- if user.status in (UserStatus.on_hold, UserStatus.active):
+ if remove:
for inb in user.inbounds:
- node_inbounds[inb.node_id].append(inb.tag)
+ node_inbounds[inb.node_id]
else:
for inb in user.inbounds:
- node_inbounds[inb.node_id]
+ node_inbounds[inb.node_id].append(inb.tag)
for inb in old_inbounds:
node_inbounds[inb[0]]
for node_id, tags in node_inbounds.items():
if marznode.nodes.get(node_id):
- asyncio.create_task(
+ asyncio.ensure_future(
marznode.nodes[node_id].update_user(user=user, inbounds=tags)
)
@@ -41,7 +41,9 @@ async def remove_user(user: "DBUser"):
for node_id in node_ids:
if marznode.nodes.get(node_id):
- await marznode.nodes[node_id].update_user(user=user, inbounds=[])
+ asyncio.ensure_future(
+ marznode.nodes[node_id].update_user(user=user, inbounds=[])
+ )
async def remove_node(node_id: int):
diff --git a/app/models/user.py b/app/models/user.py
@@ -1,10 +1,9 @@
import secrets
from datetime import datetime
from enum import Enum
-from typing import List, Union, Annotated, Literal
+from typing import Annotated
from pydantic import (
- field_validator,
ConfigDict,
BaseModel,
Field,
@@ -24,23 +23,11 @@ class ReminderType(str, Enum):
class UserStatus(str, Enum):
- active = "active"
- on_hold = "on_hold"
- limited = "limited"
- expired = "expired"
+ ACTIVE = "active"
+ INACTIVE = "inactive"
-class UserStatusModify(str, Enum):
- active = "active"
- on_hold = "on_hold"
-
-
-class UserStatusCreate(str, Enum):
- active = "active"
- on_hold = "on_hold"
-
-
-class UserDataLimitResetStrategy(str, Enum):
+class UserDataUsageResetStrategy(str, Enum):
no_reset = "no_reset"
day = "day"
week = "week"
@@ -48,129 +35,97 @@ class UserDataLimitResetStrategy(str, Enum):
year = "year"
+class UserExpireStrategy(str, Enum):
+ NEVER = "never"
+ FIXED_DATE = "fixed_date"
+ START_ON_FIRST_USE = "start_on_first_use"
+
+
class User(BaseModel):
id: int | None = None
username: Annotated[
str, StringConstraints(to_lower=True, pattern=USERNAME_REGEXP)
]
- expire: Union[datetime, None, Literal[0]] = Field(None)
+ expire_strategy: UserExpireStrategy
+ expire_date: datetime | None = Field(None)
+ usage_duration: int | None = Field(None)
+ activation_deadline: datetime | None = Field(None)
key: str = Field(default_factory=lambda: secrets.token_hex(16))
data_limit: int | None = Field(
ge=0, default=None, description="data_limit can be 0 or greater"
)
- enabled: bool = Field(default=True)
- data_limit_reset_strategy: UserDataLimitResetStrategy = (
- UserDataLimitResetStrategy.no_reset
+ data_limit_reset_strategy: UserDataUsageResetStrategy = (
+ UserDataUsageResetStrategy.no_reset
)
note: Annotated[str, Field(max_length=500)] | None = None
sub_updated_at: datetime | None = Field(None)
sub_last_user_agent: str | None = Field(None)
online_at: datetime | None = Field(None)
- on_hold_expire_duration: int | None = Field(None)
- on_hold_timeout: datetime | None = Field(None)
model_config = ConfigDict(from_attributes=True)
class UserCreate(User):
- status: UserStatusCreate = Field(UserStatusCreate.active)
service_ids: list[int] = Field([])
model_config = ConfigDict(
json_schema_extra={
"example": {
"username": "user1234",
"services": [1, 2, 3],
- "expire": "2023-11-03T20:30:00",
+ "expire_strategy": "start_on_first_use",
+ "usage_duration": 86400 * 14,
+ "activation_deadline": "2024-11-03T20:30:00",
"data_limit": 0,
"data_limit_reset_strategy": "no_reset",
- "status": "active",
"note": "",
- "on_hold_timeout": "2023-11-03T20:30:00",
- "on_hold_expire_duration": 0,
}
}
)
@model_validator(mode="after")
def validate_expiry(self):
- if self.status == UserStatusCreate.on_hold:
- if not self.on_hold_expire_duration:
+ if self.expire_strategy == UserExpireStrategy.START_ON_FIRST_USE:
+ if not self.usage_duration:
raise ValueError(
- "User cannot be on hold without a valid on_hold_expire_duration."
+ "User expire_strategy can not be start_on_first_use without a valid usage_duration."
)
- if self.expire:
- raise ValueError(
- "User cannot be on hold with specified expire."
- )
- elif self.status == UserStatusCreate.active and (
- self.on_hold_expire_duration or self.on_hold_timeout
+ elif (
+ self.expire_strategy == UserExpireStrategy.FIXED_DATE
+ and not self.expire_date
):
raise ValueError(
- "on hold parameters set when user status isn't on_hold."
+ "User expire_strategy can not be fixed_date without a valid expire date."
)
return self
- @field_validator("expire")
- @classmethod
- def validate_expire(cls, v: Union[datetime, None, Literal[0]]):
- if isinstance(v, datetime) and (v.tzinfo is not None):
- raise ValueError(
- "Expire date should be offset naive, and preferably in utc timezone."
- )
- if isinstance(v, datetime) and v < datetime.utcnow():
- raise ValueError(
- "Expire date should be in the future, not in the past."
- )
- return v
-
-class UserModify(User):
- status: UserStatusModify | None = Field(None)
+class UserModify(UserCreate):
service_ids: list[int] | None = Field(None)
- data_limit_reset_strategy: UserDataLimitResetStrategy | None = Field(None)
+ data_limit_reset_strategy: UserDataUsageResetStrategy | None = Field(None)
model_config = ConfigDict(
json_schema_extra={
"example": {
"username": "mammad1234",
- "services": [1, 2, 3],
- "expire": 0,
+ "service_ids": [1, 2, 3],
+ "expire_strategy": "fixed_date",
+ "expire_date": "2023-11-03T20:30:00",
"data_limit": 0,
"data_limit_reset_strategy": "no_reset",
- "status": "active",
"note": "",
- "on_hold_timeout": "2023-11-03T20:30:00",
- "on_hold_expire_duration": 0,
}
}
)
- @model_validator(mode="after")
- def validate_expiry(self):
- if self.on_hold_expire_duration and self.expire:
- raise ValueError(
- "can't set both expire and on hold expire at the same time."
- )
- return self
-
- @field_validator("expire")
- @classmethod
- def validate_expire(cls, v: Union[datetime, None, Literal[0]]):
- if isinstance(v, datetime) and v.tzinfo is not None:
- raise ValueError(
- "Expire date should be offset naive, and preferably in utc timezone."
- )
- if isinstance(v, datetime) and v < datetime.utcnow():
- raise ValueError(
- "Expire date should be in the future, not in the past."
- )
- return v
-
class UserResponse(User):
id: int
- status: UserStatus
+ activated: bool
+ is_active: bool
+ expired: bool
+ data_limit_reached: bool
+ enabled: bool
used_traffic: int
- lifetime_used_traffic: int = 0
+ lifetime_used_traffic: int
created_at: datetime
service_ids: list[int]
@@ -185,11 +140,11 @@ class UserResponse(User):
class UserUsageResponse(BaseModel):
- node_id: Union[int, None] = None
+ node_id: int | None = None
node_name: str
used_traffic: int
class UserUsagesResponse(BaseModel):
username: str
- usages: List[UserUsageResponse]
+ usages: list[UserUsageResponse]
diff --git a/app/routes/service.py b/app/routes/service.py
@@ -110,9 +110,10 @@ async def modify_service(
)
else:
for user in response.users:
- await marznode.operations.update_user(
- user, old_inbounds=old_inbounds
- )
+ if user.activated:
+ marznode.operations.update_user(
+ user, old_inbounds=old_inbounds
+ )
return response
diff --git a/app/routes/system.py b/app/routes/system.py
@@ -7,7 +7,7 @@ from app.dependencies import DBDep, AdminDep, SudoAdminDep
from app.models.node import NodeStatus
from app.models.settings import SubscriptionSettings, TelegramSettings
from app.models.system import UsersStats, NodesStats, AdminsStats
-from app.models.user import UserStatus
+from app.models.user import UserExpireStrategy
router = APIRouter(tags=["System"], prefix="/system")
@@ -67,24 +67,22 @@ def get_users_stats(db: DBDep, admin: AdminDep):
db, admin=admin if not admin.is_sudo else None
),
active=crud.get_users_count(
- db,
- admin=admin if not admin.is_sudo else None,
- status=UserStatus.active,
+ db, admin=admin if not admin.is_sudo else None, is_active=True
),
on_hold=crud.get_users_count(
db,
admin=admin if not admin.is_sudo else None,
- status=UserStatus.on_hold,
+ expire_strategy=UserExpireStrategy.START_ON_FIRST_USE,
),
expired=crud.get_users_count(
db,
admin=admin if not admin.is_sudo else None,
- status=UserStatus.expired,
+ expired=True,
),
limited=crud.get_users_count(
db,
admin=admin if not admin.is_sudo else None,
- status=UserStatus.limited,
+ data_limit_reached=True,
),
online=crud.get_users_count(
db, admin=admin if not admin.is_sudo else None, online=True
diff --git a/app/routes/user.py b/app/routes/user.py
@@ -1,6 +1,6 @@
import asyncio
import logging
-from datetime import datetime, timezone
+from datetime import datetime, timedelta
from enum import Enum
import sqlalchemy
@@ -25,7 +25,6 @@ from app.models.user import (
UserCreate,
UserModify,
UserResponse,
- UserStatus,
UserUsagesResponse,
)
from app.utils import report
@@ -35,11 +34,21 @@ router = APIRouter(prefix="/users", tags=["User"])
class UsersSortingOptions(str, Enum):
- username = "username"
- used_traffic = "used_traffic"
- data_limit = "data_limit"
- expire = "expire"
- created_at = "created_at"
+ USERNAME = "username"
+ USED_TRAFFIC = "used_traffic"
+ DATA_LIMIT = "data_limit"
+ EXPIRE_DATE = "expire_date"
+ CREATED_AT = "created_at"
+
+
+user_filters = [
+ "username",
+ "is_active",
+ "activated",
+ "expired",
+ "data_limit_reached",
+ "enabled",
+]
@router.get("", response_model=Page[UserResponse])
@@ -47,9 +56,13 @@ def get_users(
db: DBDep,
admin: AdminDep,
username: list[str] = Query(None),
- status: list[UserStatus] = Query(None),
order_by: UsersSortingOptions = Query(None),
descending: bool = Query(False),
+ is_active: bool | None = Query(None),
+ activated: bool | None = Query(None),
+ expired: bool | None = Query(None),
+ data_limit_reached: bool | None = Query(None),
+ enabled: bool | None = Query(None),
):
"""
Filters users based on the options
@@ -60,14 +73,18 @@ def get_users(
admin = dbadmin if not admin.is_sudo else None
- if username:
- if len(username) > 1:
- query = query.filter(User.username.in_(username))
- else:
- query = query.filter(User.username.ilike(f"%{username[0]}%"))
-
- if status:
- query = query.filter(User.status.in_(status))
+ for name in user_filters:
+ value = locals().get(name)
+ if value is not None:
+ if name == "username":
+ if len(username) > 1:
+ query = query.filter(User.username.in_(username))
+ else:
+ query = query.filter(
+ User.username.ilike(f"%{username[0]}%")
+ )
+ else:
+ query = query.filter(getattr(User, name) == value)
if admin:
query = query.filter(User.admin == admin)
@@ -87,7 +104,7 @@ async def add_user(new_user: UserCreate, db: DBDep, admin: AdminDep):
Add a new user
- **username** must have 3 to 32 characters and is allowed to contain a-z, 0-9, and underscores in between
- - **expire** must be a UTC timestamp
+ - **expire_date** must be a datetime
- **data_limit** must be in Bytes, e.g. 1073741824B = 1GB
- **services** list of service ids
"""
@@ -101,8 +118,8 @@ async def add_user(new_user: UserCreate, db: DBDep, admin: AdminDep):
raise HTTPException(status_code=409, detail="User already exists")
user = UserResponse.model_validate(db_user)
- await marznode.operations.update_user(user=db_user)
- asyncio.create_task(
+ marznode.operations.update_user(user=db_user)
+ asyncio.ensure_future(
report.user_created(user=user, user_id=db_user.id, by=admin)
)
logger.info("New user `%s` added", db_user.username)
@@ -121,7 +138,7 @@ async def reset_users_data_usage(db: DBDep, admin: SudoAdminDep):
@router.delete("/expired")
-def delete_expired(passed_time: int, db: DBDep, admin: AdminDep):
+async def delete_expired(passed_time: int, db: DBDep, admin: AdminDep):
"""
Delete expired users
- **passed_time** must be a timestamp
@@ -132,12 +149,12 @@ def delete_expired(passed_time: int, db: DBDep, admin: AdminDep):
db_users = crud.get_users(
db=db,
- status=[UserStatus.expired, UserStatus.limited],
+ expired=True,
admin=dbadmin if not admin.is_sudo else None,
)
- current_time = int(datetime.now(timezone.utc).timestamp())
- expiration_threshold = current_time - passed_time
+ current_time = datetime.utcnow()
+ expiration_threshold = current_time - timedelta(seconds=passed_time)
expired_users = [
user
for user in db_users
@@ -147,9 +164,11 @@ def delete_expired(passed_time: int, db: DBDep, admin: AdminDep):
raise HTTPException(status_code=404, detail="No expired user found.")
for db_user in expired_users:
+ if db_user.activated and not db_user.is_active:
+ marznode.operations.update_user(db_user)
crud.remove_user(db, db_user)
- asyncio.create_task(
+ asyncio.ensure_future(
report.user_deleted(username=db_user.username, by=admin)
)
@@ -173,46 +192,52 @@ async def modify_user(
"""
Modify a user
- - set **expire** to 0 to make the user unlimited in time, null for no change
- set **data_limit** to 0 to make the user unlimited in data, null for no change
"""
- old_status = db_user.status
- status_change = bool(
- modifications.status and modifications.status != db_user.status
- )
+ active_before = db_user.is_active
old_inbounds = {(i.node_id, i.protocol, i.tag) for i in db_user.inbounds}
new_user = crud.update_user(db, db_user, modifications)
+ active_after = new_user.is_active
new_inbounds = {(i.node_id, i.protocol, i.tag) for i in new_user.inbounds}
- user = UserResponse.model_validate(db_user)
inbound_change = old_inbounds != new_inbounds
+
if (
- inbound_change
- and user.enabled
- and user.status in {UserStatus.active, UserStatus.on_hold}
- ):
- await marznode.operations.update_user(new_user, old_inbounds)
+ inbound_change and new_user.is_active
+ ) or active_before != active_after:
+ marznode.operations.update_user(
+ new_user, old_inbounds, remove=~db_user.is_active
+ )
+ db_user.activated = db_user.is_active
+ db.commit()
- asyncio.create_task(report.user_updated(user=user, by=admin))
+ asyncio.ensure_future(
+ report.user_updated(
+ user=UserResponse.model_validate(db_user), by=admin
+ )
+ )
- logger.info("User `%s` modified", user.username)
+ logger.info("User `%s` modified", db_user.username)
- if status_change:
- asyncio.create_task(
+ if active_before != active_after:
+ asyncio.ensure_future(
report.status_change(
- username=user.username, status=user.status, user=user, by=admin
+ username=db_user.username,
+ activation=db_user.activated,
+ user=UserResponse.model_validate(db_user),
+ by=admin,
)
)
logger.info(
- "User `%s` status changed from `%s` to `%s`",
- user.username,
- old_status,
- user.status,
+ "User `%s` activation changed from `%s` to `%s`",
+ db_user.username,
+ active_before,
+ active_after,
)
- return user
+ return db_user
@router.delete("/{username}")
@@ -220,12 +245,12 @@ async def remove_user(db_user: UserDep, db: DBDep, admin: AdminDep):
"""
Remove a user
"""
- await marznode.operations.remove_user(db_user)
+ marznode.operations.update_user(db_user, remove=True)
crud.remove_user(db, db_user)
db.flush()
- asyncio.create_task(
+ asyncio.ensure_future(
report.user_deleted(username=db_user.username, by=admin)
)
logger.info("User %s deleted", db_user.username)
@@ -254,17 +279,16 @@ async def reset_user_data_usage(db_user: UserDep, db: DBDep, admin: AdminDep):
"""
Reset user data usage
"""
- previous_status = db_user.status
+ was_active = db_user.status
db_user = crud.reset_user_data_usage(db, db_user)
- if (
- db_user.status == UserStatus.active
- and previous_status == UserStatus.limited
- ):
- await marznode.operations.update_user(db_user)
+ if db_user.is_active and not was_active:
+ marznode.operations.update_user(db_user)
+ db_user.activated = True
+ db.commit()
user = UserResponse.model_validate(db_user)
- asyncio.create_task(report.user_data_usage_reset(user=user, by=admin))
+ asyncio.ensure_future(report.user_data_usage_reset(user=user, by=admin))
logger.info("User `%s`'s usage was reset", db_user.username)
@@ -279,9 +303,10 @@ async def enable_user(db_user: UserDep, db: DBDep, admin: AdminDep):
if db_user.enabled:
raise HTTPException(409, "User is already enabled")
db_user.enabled = True
+ db_user.activated = True
db.commit()
- await marznode.operations.update_user(db_user)
+ marznode.operations.update_user(db_user)
user = UserResponse.model_validate(db_user)
@@ -298,9 +323,10 @@ async def disable_user(db_user: UserDep, db: DBDep, admin: AdminDep):
if not db_user.enabled:
raise HTTPException(409, "User is not enabled")
db_user.enabled = False
+ db_user.activated = False
db.commit()
- await marznode.operations.remove_user(db_user)
+ marznode.operations.update_user(db_user, remove=True)
user = UserResponse.model_validate(db_user)
@@ -318,11 +344,13 @@ async def revoke_user_subscription(
"""
db_user = crud.revoke_user_sub(db, db_user)
- if db_user.status in [UserStatus.active, UserStatus.on_hold]:
- await marznode.operations.remove_user(db_user)
- await marznode.operations.update_user(db_user)
+ if db_user.is_active:
+ marznode.operations.update_user(db_user, remove=True)
+ marznode.operations.update_user(db_user)
user = UserResponse.model_validate(db_user)
- asyncio.create_task(report.user_subscription_revoked(user=user, by=admin))
+ asyncio.ensure_future(
+ report.user_subscription_revoked(user=user, by=admin)
+ )
logger.info("User %s subscription revoked", db_user.username)
diff --git a/app/tasks/reset_user_data_usage.py b/app/tasks/reset_user_data_usage.py
@@ -3,15 +3,15 @@ from datetime import datetime
from app import marznode
from app.db import crud, GetDB, get_users
-from app.models.user import UserDataLimitResetStrategy, UserStatus
+from app.models.user import UserDataUsageResetStrategy
logger = logging.getLogger(__name__)
reset_strategy_to_days = {
- UserDataLimitResetStrategy.day.value: 1,
- UserDataLimitResetStrategy.week.value: 7,
- UserDataLimitResetStrategy.month.value: 30,
- UserDataLimitResetStrategy.year.value: 365,
+ UserDataUsageResetStrategy.day.value: 1,
+ UserDataUsageResetStrategy.week.value: 7,
+ UserDataUsageResetStrategy.month.value: 30,
+ UserDataUsageResetStrategy.year.value: 365,
}
@@ -21,10 +21,10 @@ async def reset_user_data_usage():
for user in get_users(
db,
reset_strategy=[
- UserDataLimitResetStrategy.day.value,
- UserDataLimitResetStrategy.week.value,
- UserDataLimitResetStrategy.month.value,
- UserDataLimitResetStrategy.year.value,
+ UserDataUsageResetStrategy.day.value,
+ UserDataUsageResetStrategy.week.value,
+ UserDataUsageResetStrategy.month.value,
+ UserDataUsageResetStrategy.year.value,
],
):
last_reset_time = user.traffic_reset_at or user.created_at
@@ -35,14 +35,12 @@ async def reset_user_data_usage():
if not (now - last_reset_time).days >= num_days_to_reset:
continue
- old_status = user.status
+ was_active = user.is_active
crud.reset_user_data_usage(db, user)
# make user active if limited on usage reset
- if (
- user.enabled
- and user.status == UserStatus.active
- and old_status == UserStatus.limited
- ):
- await marznode.operations.update_user(user)
-
- logger.info(f'User data usage reset for User "{user.username}"')
+ if user.is_active and not was_active:
+ marznode.operations.update_user(user)
+ user.activated = True
+ db.commit()
+
+ logger.info("User data usage reset for User `%s`", user.username)
diff --git a/app/tasks/review_users.py b/app/tasks/review_users.py
@@ -1,91 +1,37 @@
import asyncio
import logging
-from datetime import datetime
+from datetime import datetime, timedelta
from typing import TYPE_CHECKING
-from sqlalchemy.orm import Session
-
from app import marznode
-from app.config.env import (
- NOTIFY_DAYS_LEFT,
- NOTIFY_REACHED_USAGE_PERCENT,
- WEBHOOK_ADDRESS,
-)
from app.db import (
GetDB,
- get_notification_reminder,
get_users,
- start_user_expire,
- update_user_status,
)
-from app.models.user import ReminderType, UserResponse, UserStatus
-from app.utils import report
-from app.utils.helpers import (
- calculate_expiration_days,
- calculate_usage_percent,
+from app.models.user import (
+ UserResponse,
+ UserExpireStrategy,
)
+from app.utils import report
if TYPE_CHECKING:
- from app.db.models import User
+ pass
logger = logging.getLogger(__name__)
-def add_notification_reminders(
- db: Session, user: "User", now: datetime = datetime.utcnow()
-) -> None:
- if user.data_limit:
- usage_percent = calculate_usage_percent(
- user.used_traffic, user.data_limit
- )
- if (usage_percent >= NOTIFY_REACHED_USAGE_PERCENT) and (
- not get_notification_reminder(db, user.id, ReminderType.data_usage)
- ):
- report.data_usage_percent_reached(
- db,
- usage_percent,
- UserResponse.model_validate(user),
- user.id,
- user.expire,
- )
-
- if user.expire and ((now - user.created_at).days >= NOTIFY_DAYS_LEFT):
- expire_days = calculate_expiration_days(user.expire)
- if (expire_days <= NOTIFY_DAYS_LEFT) and (
- not get_notification_reminder(
- db, user.id, ReminderType.expiration_date
- )
- ):
- report.expire_days_reached(
- db,
- expire_days,
- UserResponse.model_validate(user),
- user.id,
- user.expire,
- )
-
-
async def review_users():
now = datetime.utcnow()
with GetDB() as db:
- for user in get_users(db, status=UserStatus.active):
-
- limited = user.data_limit and user.used_traffic >= user.data_limit
- expired = user.expire and user.expire <= now
- if limited:
- status = UserStatus.limited
- elif expired:
- status = UserStatus.expired
- else:
- if WEBHOOK_ADDRESS:
- add_notification_reminders(db, user, now)
- continue
-
- await marznode.operations.remove_user(user)
- update_user_status(db, user, status)
-
- asyncio.create_task(
+ for user in get_users(db, activated=True, is_active=False):
+ """looking for expired/to be limited users who are still active"""
+
+ marznode.operations.update_user(user, remove=True)
+ user.activated = False
+ db.commit()
+ db.refresh(user)
+ asyncio.ensure_future(
report.status_change(
user.username,
user.status,
@@ -93,33 +39,42 @@ async def review_users():
)
)
- logger.info(f'User "{user.username}" status changed to {status}')
-
- for user in get_users(db, status=UserStatus.on_hold):
-
- if user.edit_at:
- base_time = user.edit_at
- else:
- base_time = user.created_at
-
- # Check if the user is online After or at 'base_time'
- if user.online_at and base_time <= user.online_at:
- status = UserStatus.active
-
- elif user.on_hold_timeout and (user.on_hold_timeout <= now):
- # If the user didn't connect within the timeout period, change status to "Active"
- status = UserStatus.active
+ logger.info(
+ "User `%s` activation state changed to `%s`",
+ user.username,
+ str(user.activated),
+ )
- else:
+ for user in get_users(
+ db,
+ expire_strategy=UserExpireStrategy.START_ON_FIRST_USE,
+ is_active=True,
+ ):
+ """looking for to be activated, on hold users"""
+ base_time = user.edit_at or user.created_at
+
+ # Check if the user is online After or at 'base_time' or...
+ # If the user didn't connect until activation_deadline; change status to "Active"
+ if not (
+ (user.online_at and base_time <= user.online_at)
+ or (
+ user.activation_deadline
+ and (user.activation_deadline <= now)
+ )
+ ):
continue
- update_user_status(db, user, status)
- start_user_expire(db, user)
- asyncio.create_task(
+ user.expire_date = datetime.utcnow() + timedelta(
+ seconds=user.usage_duration
+ )
+ user.expire_strategy = UserExpireStrategy.FIXED_DATE
+ db.commit()
+ db.refresh(user)
+ asyncio.ensure_future(
report.status_change(
user.username,
user.status,
UserResponse.model_validate(user),
)
)
- logger.info(f"on hold user `{user.username}` has been activated")
+ logger.info("on hold user `%s` has been activated", user.username)
diff --git a/app/templates/subscription/index.html b/app/templates/subscription/index.html
@@ -35,17 +35,7 @@
color: white;
}
- .limited {
- background-color: #F44336;
- color: white;
- }
-
- .expired {
- background-color: #FF9800;
- color: white;
- }
-
- .disabled {
+ .inactive {
background-color: #9E9E9E;
color: white;
}
@@ -73,79 +63,81 @@
</head>
<body>
- <h1>User Information</h1>
- <p>Username: {{ user.username }}</p>
- <p>Status: <span
- class="status {% if user.status.value == 'active' %}active{% elif user.status.value == 'limited' %}limited{% elif user.status.value == 'expired' %}expired{% elif user.status.value == 'disabled' %}disabled{% endif %}">{{
- user.status.value }}</span></p>
- <p>Data Limit: {% if not user.data_limit %}∞{% else %}{{ user.data_limit | bytesformat }}{% endif %}</p>
- <p>Data Used: {{ user.used_traffic | bytesformat }}{% if user.data_limit_reset_strategy != 'no_reset' %} (resets
- every {{ user.data_limit_reset_strategy.value }}){% endif %}</p>
- <p>Expiration Date:
- {% if not user.expire %}
- ∞
- {% else %}
- {% set current_datetime = now() %}
- {% set remaining_days = ((user.expire - current_datetime).days) %}
- {{ user.expire | datetime }} ({{ remaining_days | int }} days
- remaining)
- {% endif %}</p>
-
- {% if user.status == 'active' or user.status == 'on_hold' %}
- <h2>Links:</h2>
- <ul>
- {% for link in links %}
- <li>
- <input type="text" value="{{ link }}" readonly>
- <button class="copy-button" onclick="copyLink('{{ link }}', this)">Copy</button>
- <button class="qr-button" data-link="{{ link }}">QR Code</button>
- </li>
- {% endfor %}
- </ul>
- <div class="qr-popup" id="qrPopup">
- <div class="qr-close-button">
- <button onclick="closeQrPopup()">X</button>
- </div>
- <div id="qrCodeContainer"></div>
+<h1>User Information</h1>
+<p>Username: {{ user.username }} <span class="status {% if user.is_active %}active{% else %}inactive{% endif %}">{{
+ "Active" if user.is_active else "Inactive"}}</span></p>
+
+<p>Data Used: {{ user.used_traffic | bytesformat }}{% if user.data_limit_reset_strategy != 'no_reset' %} (resets
+ every {{ user.data_limit_reset_strategy.value }}){% endif %}</p>
+<p>Data Limit: {% if not user.data_limit %}∞{% else %}{{ user.data_limit | bytesformat }}{% endif %}</p>
+<p>Expiration Date:
+ {% if user.expire_strategy == "never" %}
+ never
+ {% elif user.expire_strategy == "start_on_first_use" %}
+ {{ user.usage_duration // 3600 // 24}} days after the first use
+ {% else %}
+ {% set current_datetime = now() %}
+ {% set remaining_days = ((user.expire_date - current_datetime).days) %}
+ {{ user.expire_date | datetime }} ({{ remaining_days | int }} days
+ remaining)
+ {% endif %}</p>
+
+{% if user.is_active %}
+<h2>Links:</h2>
+<ul>
+ {% for link in links %}
+ <li>
+ <input type="text" value="{{ link }}" readonly>
+ <button class="copy-button" onclick="copyLink('{{ link }}', this)">Copy</button>
+ <button class="qr-button" data-link="{{ link }}">QR Code</button>
+ </li>
+ {% endfor %}
+</ul>
+<div class="qr-popup" id="qrPopup">
+ <div class="qr-close-button">
+ <button onclick="closeQrPopup()">X</button>
</div>
- {% endif %}
-
- <script>
- function copyLink(link, button) {
- const tempInput = document.createElement('input');
- tempInput.setAttribute('value', link);
- document.body.appendChild(tempInput);
- tempInput.select();
- document.execCommand('copy');
- document.body.removeChild(tempInput);
-
- button.textContent = 'Copied!';
- setTimeout(function () {
- button.textContent = 'Copy';
- }, 1500);
- }
-
- const qrButtons = document.querySelectorAll('.qr-button');
- const qrPopup = document.getElementById('qrPopup');
-
- qrButtons.forEach((qrButton) => {
- qrButton.addEventListener('click', () => {
- const link = qrButton.dataset.link;
- while (qrCodeContainer.firstChild) {
- qrCodeContainer.removeChild(qrCodeContainer.firstChild);
- }
- const qrCode = new QRCode(qrCodeContainer, {
- text: link,
- width: 256,
- height: 256
- });
- qrPopup.style.display = 'block';
+ <div id="qrCodeContainer"></div>
+</div>
+{% endif %}
+
+<script>
+
+ function copyLink(link, button) {
+ const tempInput = document.createElement('input');
+ tempInput.setAttribute('value', link);
+ document.body.appendChild(tempInput);
+ tempInput.select();
+ document.execCommand('copy');
+ document.body.removeChild(tempInput);
+
+ button.textContent = 'Copied!';
+ setTimeout(function () {
+ button.textContent = 'Copy';
+ }, 1500);
+ }
+
+ const qrButtons = document.querySelectorAll('.qr-button');
+ const qrPopup = document.getElementById('qrPopup');
+
+ qrButtons.forEach((qrButton) => {
+ qrButton.addEventListener('click', () => {
+ const link = qrButton.dataset.link;
+ while (qrCodeContainer.firstChild) {
+ qrCodeContainer.removeChild(qrCodeContainer.firstChild);
+ }
+ const qrCode = new QRCode(qrCodeContainer, {
+ text: link,
+ width: 256,
+ height: 256
});
+ qrPopup.style.display = 'block';
});
- function closeQrPopup() {
- document.getElementById('qrPopup').style.display = 'none';
- }
- </script>
+ });
+ function closeQrPopup() {
+ document.getElementById('qrPopup').style.display = 'none';
+ }
+</script>
</body>
</html>
\ No newline at end of file
diff --git a/app/utils/report.py b/app/utils/report.py
@@ -3,7 +3,6 @@ from typing import Optional
from app import telegram
from app.db import Session, create_notification_reminder
-from app.db.models import UserStatus
from app.models.admin import Admin
from app.models.user import ReminderType, UserResponse
from app.utils.notification import (
@@ -14,7 +13,6 @@ from app.utils.notification import (
UserDataUsageReset,
UserDeleted,
UserEnabled,
- UserExpired,
UserLimited,
UserSubscriptionRevoked,
UserUpdated,
@@ -24,7 +22,7 @@ from app.utils.notification import (
async def status_change(
username: str,
- status: UserStatus,
+ activation: bool,
user: UserResponse,
by: Optional[Admin] = None,
) -> None:
@@ -32,23 +30,15 @@ async def status_change(
await telegram.report_status_change(username, status)
except Exception:
pass
- if status == UserStatus.limited:
+ if activation is False:
await notify(
UserLimited(
username=username,
- action=Notification.Type.user_limited,
+ action=Notification.Type.user_disabled,
user=user,
)
)
- elif status == UserStatus.expired:
- await notify(
- UserExpired(
- username=username,
- action=Notification.Type.user_expired,
- user=user,
- )
- )
- elif status == UserStatus.active:
+ elif activation is True:
await notify(
UserEnabled(
username=username,
@@ -64,7 +54,7 @@ async def user_created(user: UserResponse, user_id: int, by: Admin) -> None:
user_id=user_id,
username=user.username,
by=by.username,
- expire_date=user.expire,
+ expire_date=user.expire_date,
data_limit=user.data_limit,
# proxies=[]
services=user.services,
@@ -84,7 +74,7 @@ async def user_updated(user: UserResponse, by: Admin) -> None:
try:
await telegram.report_user_modification(
username=user.username,
- expire_date=user.expire,
+ expire_date=user.expire_date,
data_limit=user.data_limit,
services=user.services,
by=by.username,
diff --git a/app/utils/share.py b/app/utils/share.py
@@ -27,8 +27,7 @@ from app.db import GetDB, crud
from app.models.proxy import (
InboundHostSecurity,
)
-from app.models.user import UserResponse
-from app.models.user import UserStatus
+from app.models.user import UserResponse, UserExpireStrategy
from app.utils.keygen import gen_uuid, gen_password
from app.utils.system import get_public_ip, readable_size
@@ -36,10 +35,7 @@ SERVER_IP = get_public_ip()
STATUS_EMOJIS = {
"active": "✅",
- "expired": "⌛️",
- "limited": "🪫",
- "disabled": "❌",
- "on_hold": "🔌",
+ "inactive": "❌",
}
subscription_handlers = {
@@ -118,12 +114,11 @@ def format_time_left(seconds_left: int) -> str:
def setup_format_variables(extra_data: dict) -> dict:
+ expire_strategy = extra_data.get("expire_strategy")
+ expire_datetime = extra_data.get("expire_date")
+ usage_duration = extra_data.get("usage_duration")
- user_status = extra_data.get("status")
- expire_datetime = extra_data.get("expire")
- on_hold_expire_duration = extra_data.get("on_hold_expire_duration")
-
- if user_status != UserStatus.on_hold:
+ if expire_strategy != UserExpireStrategy.START_ON_FIRST_USE:
if expire_datetime is not None:
seconds_left = (expire_datetime - dt.utcnow()).total_seconds()
expire_date = expire_datetime.date()
@@ -135,24 +130,15 @@ def setup_format_variables(extra_data: dict) -> dict:
days_left = (expire_datetime - dt.utcnow()).days + 1
time_left = format_time_left(seconds_left)
else:
- days_left = "∞"
- time_left = "∞"
- expire_date = "∞"
- jalali_expire_date = "∞"
+ days_left, time_left, expire_date, jalali_expire_date = "∞" * 4
else:
- if (
- on_hold_expire_duration is not None
- and on_hold_expire_duration >= 0
- ):
- days_left = timedelta(seconds=on_hold_expire_duration).days
- time_left = format_time_left(on_hold_expire_duration)
+ if usage_duration is not None and usage_duration >= 0:
+ days_left = timedelta(seconds=usage_duration).days
+ time_left = format_time_left(usage_duration)
expire_date = "-"
jalali_expire_date = "-"
else:
- days_left = "∞"
- time_left = "∞"
- expire_date = "∞"
- jalali_expire_date = "∞"
+ days_left, time_left, expire_date, jalali_expire_date = "∞" * 4
if extra_data.get("data_limit"):
data_limit = readable_size(extra_data["data_limit"])
diff --git a/dashboard/.eslintrc.cjs b/dashboard/.eslintrc.cjs
@@ -1,14 +1,15 @@
module.exports = {
- root: true,
- env: { browser: true, es2020: true },
- extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:react-hooks/recommended', 'plugin:storybook/recommended'],
- ignorePatterns: ['dist', '.eslintrc.cjs'],
- parser: '@typescript-eslint/parser',
- plugins: ['react-refresh'],
- rules: {
- '@typescript-eslint/unused-disable-directives': ['off'],
- '@typescript-eslint/ban-ts-comment': ['off'],
- '@typescript-eslint/no-explicit-any': ['off'],
- 'react-refresh/only-export-components': ['off'],
- },
+ root: true,
+ env: { browser: true, es2020: true },
+ extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:react-hooks/recommended', 'plugin:storybook/recommended'],
+ ignorePatterns: ['dist', '.eslintrc.cjs'],
+ parser: '@typescript-eslint/parser',
+ plugins: ['eslint-plugin-react-compiler', 'react-refresh'],
+ rules: {
+ 'react-compiler/react-compiler': "off",
+ '@typescript-eslint/unused-disable-directives': ['off'],
+ '@typescript-eslint/ban-ts-comment': ['off'],
+ '@typescript-eslint/no-explicit-any': ['off'],
+ 'react-refresh/only-export-components': ['off'],
+ },
};
diff --git a/dashboard/package.json b/dashboard/package.json
@@ -77,6 +77,7 @@
"cmdk": "^1.0.0",
"date-fns": "^3.6.0",
"dayjs": "^1.11.11",
+ "eslint-plugin-react-compiler": "0.0.0-experimental-0998c1e-20240625",
"framer-motion": "^11.2.10",
"i18next": "^23.11.5",
"i18next-browser-languagedetector": "^7.2.1",
diff --git a/dashboard/pnpm-lock.yaml b/dashboard/pnpm-lock.yaml
@@ -16,13 +16,13 @@ importers:
version: 6.10.2
'@dnd-kit/core':
specifier: ^6.1.0
- version: 6.1.0(react-dom@18.3.1)(react@18.3.1)
+ version: 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@dnd-kit/modifiers':
specifier: ^7.0.0
- version: 7.0.0(@dnd-kit/core@6.1.0)(react@18.3.1)
+ version: 7.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
'@dnd-kit/sortable':
specifier: ^8.0.0
- version: 8.0.0(@dnd-kit/core@6.1.0)(react@18.3.1)
+ version: 8.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
'@dnd-kit/utilities':
specifier: ^3.2.2
version: 3.2.2(react@18.3.1)
@@ -31,88 +31,88 @@ importers:
version: 2.1.3(react@18.3.1)
'@hookform/resolvers':
specifier: ^3.4.2
- version: 3.4.2(react-hook-form@7.51.5)
+ version: 3.4.2(react-hook-form@7.51.5(react@18.3.1))
'@kodingdotninja/use-tailwind-breakpoint':
specifier: ^0.0.5
version: 0.0.5(react@18.3.1)
'@monaco-editor/react':
specifier: ^4.6.0
- version: 4.6.0(monaco-editor@0.49.0)(react-dom@18.3.1)(react@18.3.1)
+ version: 4.6.0(monaco-editor@0.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/progress':
specifier: ^2.0.30
- version: 2.0.30(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
+ version: 2.0.30(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/react':
specifier: ^2.4.1
- version: 2.4.1(@types/react@18.3.3)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)(tailwindcss@3.4.3)
+ version: 2.4.1(@types/react@18.3.3)(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.3)
'@nextui-org/system':
specifier: ^2.2.1
- version: 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ version: 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme':
specifier: ^2.2.5
version: 2.2.5(tailwindcss@3.4.3)
'@radix-ui/react-accordion':
specifier: ^1.1.2
- version: 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-alert-dialog':
specifier: ^1.0.5
- version: 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-aspect-ratio':
specifier: ^1.0.3
- version: 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-checkbox':
specifier: ^1.0.4
- version: 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-collapsible':
specifier: ^1.0.3
- version: 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-dialog':
specifier: ^1.0.5
- version: 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-dropdown-menu':
specifier: ^2.0.6
- version: 2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-icons':
specifier: ^1.3.0
version: 1.3.0(react@18.3.1)
'@radix-ui/react-label':
specifier: ^2.0.2
- version: 2.0.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 2.0.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-popover':
specifier: ^1.0.7
- version: 1.0.7(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 1.0.7(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-progress':
specifier: ^1.0.3
- version: 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-radio-group':
specifier: ^1.1.3
- version: 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-scroll-area':
specifier: ^1.0.5
- version: 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-select':
specifier: ^2.0.0
- version: 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-separator':
specifier: ^1.0.3
- version: 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-slot':
specifier: ^1.0.2
version: 1.0.2(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-switch':
specifier: ^1.0.3
- version: 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-tabs':
specifier: ^1.0.4
- version: 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-toggle':
specifier: ^1.0.3
- version: 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-toggle-group':
specifier: ^1.0.4
- version: 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-tooltip':
specifier: ^1.0.7
- version: 1.0.7(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 1.0.7(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-hook/media-query':
specifier: ^1.1.1
version: 1.1.1(react@18.3.1)
@@ -133,22 +133,22 @@ importers:
version: 5.40.1(react@18.3.1)
'@tanstack/react-router':
specifier: ^1.34.9
- version: 1.34.9(react-dom@18.3.1)(react@18.3.1)
+ version: 1.34.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@tanstack/react-table':
specifier: ^8.17.3
- version: 8.17.3(react-dom@18.3.1)(react@18.3.1)
+ version: 8.17.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@testing-library/jest-dom':
specifier: ^6.4.5
- version: 6.4.5(jest@29.7.0)(vitest@1.6.0)
+ version: 6.4.5(@jest/globals@29.7.0)(jest@29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0))(vitest@1.6.0(@types/node@20.14.1)(@vitest/ui@1.6.0)(jsdom@24.1.0))
'@testing-library/react':
specifier: ^14.3.1
- version: 14.3.1(react-dom@18.3.1)(react@18.3.1)
+ version: 14.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@testing-library/user-event':
specifier: ^14.5.2
- version: 14.5.2(@testing-library/dom@10.1.0)
+ version: 14.5.2(@testing-library/dom@9.3.4)
'@uidotdev/usehooks':
specifier: ^2.4.1
- version: 2.4.1(react-dom@18.3.1)(react@18.3.1)
+ version: 2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@visx/group':
specifier: ^3.3.0
version: 3.3.0(react@18.3.1)
@@ -166,7 +166,7 @@ importers:
version: 3.3.0(react@18.3.1)
'@vitest/coverage-istanbul':
specifier: ^1.6.0
- version: 1.6.0(vitest@1.6.0)
+ version: 1.6.0(vitest@1.6.0(@types/node@20.14.1)(@vitest/ui@1.6.0)(jsdom@24.1.0))
class-variance-authority:
specifier: ^0.7.0
version: 0.7.0
@@ -175,16 +175,19 @@ importers:
version: 2.1.1
cmdk:
specifier: ^1.0.0
- version: 1.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 1.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
date-fns:
specifier: ^3.6.0
version: 3.6.0
dayjs:
specifier: ^1.11.11
version: 1.11.11
+ eslint-plugin-react-compiler:
+ specifier: 0.0.0-experimental-0998c1e-20240625
+ version: 0.0.0-experimental-0998c1e-20240625(eslint@8.57.0)
framer-motion:
specifier: ^11.2.10
- version: 11.2.10(react-dom@18.3.1)(react@18.3.1)
+ version: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
i18next:
specifier: ^23.11.5
version: 23.11.5
@@ -202,7 +205,7 @@ importers:
version: 0.359.0(react@18.3.1)
next-themes:
specifier: ^0.3.0
- version: 0.3.0(react-dom@18.3.1)(react@18.3.1)
+ version: 0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
ofetch:
specifier: ^1.3.4
version: 1.3.4
@@ -223,22 +226,22 @@ importers:
version: 7.51.5(react@18.3.1)
react-i18next:
specifier: ^14.1.2
- version: 14.1.2(i18next@23.11.5)(react-dom@18.3.1)(react@18.3.1)
+ version: 14.1.2(i18next@23.11.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react-qr-code:
specifier: ^2.0.14
version: 2.0.14(react@18.3.1)
react-resizable-panels:
specifier: ^2.0.19
- version: 2.0.19(react-dom@18.3.1)(react@18.3.1)
+ version: 2.0.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react-use-websocket:
specifier: ^4.8.1
- version: 4.8.1(react-dom@18.3.1)(react@18.3.1)
+ version: 4.8.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
remirror:
specifier: ^2.0.39
- version: 2.0.39(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)
+ version: 2.0.39(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)(prettier@3.3.2)
sonner:
specifier: ^1.4.41
- version: 1.4.41(react-dom@18.3.1)(react@18.3.1)
+ version: 1.4.41(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
tailwind-merge:
specifier: ^2.3.0
version: 2.3.0
@@ -247,7 +250,7 @@ importers:
version: 1.0.7(tailwindcss@3.4.3)
vaul:
specifier: ^0.9.1
- version: 0.9.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 0.9.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
zod:
specifier: ^3.23.8
version: 3.23.8
@@ -260,16 +263,16 @@ importers:
version: 1.5.0(react@18.3.1)
'@hookform/devtools':
specifier: ^4.3.1
- version: 4.3.1(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ version: 4.3.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@storybook/addon-a11y':
specifier: ^8.1.5
version: 8.1.5
'@storybook/addon-essentials':
specifier: ^8.1.5
- version: 8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)
+ version: 8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@storybook/addon-interactions':
specifier: ^8.1.5
- version: 8.1.5(jest@29.7.0)(vitest@1.6.0)
+ version: 8.1.5(@jest/globals@29.7.0)(jest@29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0))(vitest@1.6.0(@types/node@20.14.1)(@vitest/ui@1.6.0)(jsdom@24.1.0))
'@storybook/addon-links':
specifier: ^8.1.5
version: 8.1.5(react@18.3.1)
@@ -278,25 +281,25 @@ importers:
version: 8.1.5(react@18.3.1)
'@storybook/blocks':
specifier: ^8.1.5
- version: 8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)
+ version: 8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@storybook/react':
specifier: ^8.1.5
- version: 8.1.5(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5)
+ version: 8.1.5(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)
'@storybook/react-vite':
specifier: ^8.1.5
- version: 8.1.5(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5)(vite@5.2.12)
+ version: 8.1.5(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.18.0)(typescript@5.4.5)(vite@5.2.12(@types/node@20.14.1))
'@storybook/test':
specifier: ^8.1.5
- version: 8.1.5(jest@29.7.0)(vitest@1.6.0)
+ version: 8.1.5(@jest/globals@29.7.0)(jest@29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0))(vitest@1.6.0(@types/node@20.14.1)(@vitest/ui@1.6.0)(jsdom@24.1.0))
'@storybook/test-runner':
specifier: ^0.18.2
- version: 0.18.2(@types/node@20.14.1)(prettier@3.3.2)
+ version: 0.18.2(@swc/helpers@0.5.11)(@types/node@20.14.1)(babel-plugin-macros@3.1.0)(prettier@3.3.2)
'@tanstack/router-cli':
specifier: ^1.34.8
version: 1.34.8
'@tanstack/router-vite-plugin':
specifier: ^1.34.8
- version: 1.34.8(vite@5.2.12)
+ version: 1.34.8(vite@5.2.12(@types/node@20.14.1))
'@types/node':
specifier: ^20.14.1
version: 20.14.1
@@ -311,13 +314,13 @@ importers:
version: 18.3.0
'@typescript-eslint/eslint-plugin':
specifier: ^7.12.0
- version: 7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.4.5)
+ version: 7.12.0(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)
'@typescript-eslint/parser':
specifier: ^7.12.0
version: 7.12.0(eslint@8.57.0)(typescript@5.4.5)
'@vitejs/plugin-react-swc':
specifier: ^3.7.0
- version: 3.7.0(vite@5.2.12)
+ version: 3.7.0(@swc/helpers@0.5.11)(vite@5.2.12(@types/node@20.14.1))
'@vitest/ui':
specifier: ^1.6.0
version: 1.6.0(vitest@1.6.0)
@@ -347,7 +350,7 @@ importers:
version: 8.4.38
storybook:
specifier: ^8.1.9
- version: 8.1.9(react-dom@18.3.1)(react@18.3.1)
+ version: 8.1.9(@babel/preset-env@7.24.7(@babel/core@7.24.7))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
tailwindcss:
specifier: ^3.4.3
version: 3.4.3
@@ -359,7 +362,7 @@ importers:
version: 5.2.12(@types/node@20.14.1)
vite-tsconfig-paths:
specifier: ^4.3.2
- version: 4.3.2(typescript@5.4.5)(vite@5.2.12)
+ version: 4.3.2(typescript@5.4.5)(vite@5.2.12(@types/node@20.14.1))
vitest:
specifier: ^1.6.0
version: 1.6.0(@types/node@20.14.1)(@vitest/ui@1.6.0)(jsdom@24.1.0)
@@ -651,6 +654,13 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
+ '@babel/plugin-proposal-private-methods@7.18.6':
+ resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==}
+ engines: {node: '>=6.9.0'}
+ deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
'@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2':
resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==}
engines: {node: '>=6.9.0'}
@@ -3354,8 +3364,6 @@ packages:
peerDependenciesMeta:
'@types/prettier':
optional: true
- '@types/refractor':
- optional: true
prettier:
optional: true
@@ -4215,10 +4223,6 @@ packages:
resolution: {integrity: sha512-mPBodDGVL+fl6d90wUREepHa/7lhsghg2A3vFpakEhrhtbIlgNAZiMr7ccTgak5qbHqF14Fwy+W1yFWQt+WmYQ==}
engines: {node: '>=12'}
- '@testing-library/dom@10.1.0':
- resolution: {integrity: sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==}
- engines: {node: '>=18'}
-
'@testing-library/dom@9.3.4':
resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==}
engines: {node: '>=14'}
@@ -5643,6 +5647,12 @@ packages:
engines: {node: '>=6.0'}
hasBin: true
+ eslint-plugin-react-compiler@0.0.0-experimental-0998c1e-20240625:
+ resolution: {integrity: sha512-npq2RomExoQI3jETs4OrifaygyJYgOcX/q74Q9OC7GmffLh5zSJaQpzjs2fi61NMNkJyIvTBD0C6sKTGGcetOw==}
+ engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0}
+ peerDependencies:
+ eslint: '>=7'
+
eslint-plugin-react-hooks@4.6.2:
resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==}
engines: {node: '>=10'}
@@ -6103,6 +6113,12 @@ packages:
hastscript@6.0.0:
resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==}
+ hermes-estree@0.20.1:
+ resolution: {integrity: sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==}
+
+ hermes-parser@0.20.1:
+ resolution: {integrity: sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==}
+
hoist-non-react-statics@3.3.2:
resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
@@ -8825,6 +8841,12 @@ packages:
resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
engines: {node: '>=12.20'}
+ zod-validation-error@3.3.0:
+ resolution: {integrity: sha512-Syib9oumw1NTqEv4LT0e6U83Td9aVRk9iTXPUQr1otyV1PuXQKOvOwhMNqZIq5hluzHP2pMgnOmHEo7kPdI2mw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ zod: ^3.18.0
+
zod@3.23.8:
resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
@@ -9029,7 +9051,7 @@ snapshots:
'@babel/helper-member-expression-to-functions@7.24.6':
dependencies:
- '@babel/types': 7.24.6
+ '@babel/types': 7.24.7
'@babel/helper-member-expression-to-functions@7.24.7':
dependencies:
@@ -9071,7 +9093,7 @@ snapshots:
'@babel/helper-optimise-call-expression@7.24.6':
dependencies:
- '@babel/types': 7.24.6
+ '@babel/types': 7.24.7
'@babel/helper-optimise-call-expression@7.24.7':
dependencies:
@@ -9119,7 +9141,7 @@ snapshots:
'@babel/helper-skip-transparent-expression-wrappers@7.24.6':
dependencies:
- '@babel/types': 7.24.6
+ '@babel/types': 7.24.7
'@babel/helper-skip-transparent-expression-wrappers@7.24.7':
dependencies:
@@ -9218,9 +9240,17 @@ snapshots:
'@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.24.7)':
+ dependencies:
+ '@babel/core': 7.24.7
+ '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7)
+ '@babel/helper-plugin-utils': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
+
'@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
@@ -9228,27 +9258,32 @@ snapshots:
'@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.6)':
dependencies:
'@babel/core': 7.24.6
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.6)':
dependencies:
'@babel/core': 7.24.6
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
+
+ '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.7)':
+ dependencies:
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.6)':
dependencies:
'@babel/core': 7.24.6
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.7)':
dependencies:
@@ -9258,12 +9293,12 @@ snapshots:
'@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-flow@7.24.7(@babel/core@7.24.7)':
dependencies:
@@ -9283,22 +9318,22 @@ snapshots:
'@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.6)':
dependencies:
'@babel/core': 7.24.6
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.6)':
dependencies:
'@babel/core': 7.24.6
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-jsx@7.24.6(@babel/core@7.24.6)':
dependencies:
@@ -9313,62 +9348,62 @@ snapshots:
'@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.6)':
dependencies:
'@babel/core': 7.24.6
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.6)':
dependencies:
'@babel/core': 7.24.6
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.6)':
dependencies:
'@babel/core': 7.24.6
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.6)':
dependencies:
'@babel/core': 7.24.6
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.6)':
dependencies:
'@babel/core': 7.24.6
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.6)':
dependencies:
'@babel/core': 7.24.6
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.7)':
dependencies:
@@ -9378,12 +9413,12 @@ snapshots:
'@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.6)':
dependencies:
'@babel/core': 7.24.6
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-typescript@7.24.6(@babel/core@7.24.6)':
dependencies:
@@ -9563,7 +9598,7 @@ snapshots:
dependencies:
'@babel/core': 7.24.7
'@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7)
- '@babel/helper-plugin-utils': 7.24.6
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/helper-simple-access': 7.24.6
transitivePeerDependencies:
- supports-color
@@ -10006,7 +10041,7 @@ snapshots:
react: 18.3.1
tslib: 2.6.2
- '@dnd-kit/core@6.1.0(react-dom@18.3.1)(react@18.3.1)':
+ '@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@dnd-kit/accessibility': 3.1.0(react@18.3.1)
'@dnd-kit/utilities': 3.2.2(react@18.3.1)
@@ -10014,16 +10049,16 @@ snapshots:
react-dom: 18.3.1(react@18.3.1)
tslib: 2.6.2
- '@dnd-kit/modifiers@7.0.0(@dnd-kit/core@6.1.0)(react@18.3.1)':
+ '@dnd-kit/modifiers@7.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
dependencies:
- '@dnd-kit/core': 6.1.0(react-dom@18.3.1)(react@18.3.1)
+ '@dnd-kit/core': 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@dnd-kit/utilities': 3.2.2(react@18.3.1)
react: 18.3.1
tslib: 2.6.2
- '@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.1.0)(react@18.3.1)':
+ '@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
dependencies:
- '@dnd-kit/core': 6.1.0(react-dom@18.3.1)(react@18.3.1)
+ '@dnd-kit/core': 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@dnd-kit/utilities': 3.2.2(react@18.3.1)
react: 18.3.1
tslib: 2.6.2
@@ -10072,9 +10107,10 @@ snapshots:
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1)
'@emotion/utils': 1.2.1
'@emotion/weak-memoize': 0.3.1
- '@types/react': 18.3.3
hoist-non-react-statics: 3.3.2
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.3
'@emotion/serialize@1.1.4':
dependencies:
@@ -10086,7 +10122,7 @@ snapshots:
'@emotion/sheet@1.2.2': {}
- '@emotion/styled@11.11.5(@emotion/react@11.11.4)(@types/react@18.3.3)(react@18.3.1)':
+ '@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@emotion/babel-plugin': 11.11.0
@@ -10095,8 +10131,9 @@ snapshots:
'@emotion/serialize': 1.1.4
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1)
'@emotion/utils': 1.2.1
- '@types/react': 18.3.3
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.3
'@emotion/unitless@0.8.1': {}
@@ -10211,7 +10248,7 @@ snapshots:
'@floating-ui/core': 1.6.2
'@floating-ui/utils': 0.2.2
- '@floating-ui/react-dom@2.1.0(react-dom@18.3.1)(react@18.3.1)':
+ '@floating-ui/react-dom@2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@floating-ui/dom': 1.6.5
react: 18.3.1
@@ -10253,22 +10290,22 @@ snapshots:
dependencies:
react: 18.3.1
- '@hookform/devtools@4.3.1(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@hookform/devtools@4.3.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1)
- '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.3.3)(react@18.3.1)
+ '@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
'@types/lodash': 4.17.4
little-state-machine: 4.8.0(react@18.3.1)
lodash: 4.17.21
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- react-simple-animate: 3.5.2(react-dom@18.3.1)
+ react-simple-animate: 3.5.2(react-dom@18.3.1(react@18.3.1))
use-deep-compare-effect: 1.8.1(react@18.3.1)
uuid: 8.3.2
transitivePeerDependencies:
- '@types/react'
- '@hookform/resolvers@3.4.2(react-hook-form@7.51.5)':
+ '@hookform/resolvers@3.4.2(react-hook-form@7.51.5(react@18.3.1))':
dependencies:
react-hook-form: 7.51.5(react@18.3.1)
@@ -10329,7 +10366,7 @@ snapshots:
jest-util: 29.7.0
slash: 3.0.0
- '@jest/core@29.7.0':
+ '@jest/core@29.7.0(babel-plugin-macros@3.1.0)':
dependencies:
'@jest/console': 29.7.0
'@jest/reporters': 29.7.0
@@ -10343,7 +10380,7 @@ snapshots:
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
- jest-config: 29.7.0(@types/node@20.14.1)
+ jest-config: 29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0)
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@@ -10486,14 +10523,15 @@ snapshots:
'@types/yargs': 17.0.32
chalk: 4.1.2
- '@joshwooding/vite-plugin-react-docgen-typescript@0.3.1(typescript@5.4.5)(vite@5.2.12)':
+ '@joshwooding/vite-plugin-react-docgen-typescript@0.3.1(typescript@5.4.5)(vite@5.2.12(@types/node@20.14.1))':
dependencies:
glob: 7.2.3
glob-promise: 4.2.2(glob@7.2.3)
magic-string: 0.27.0
react-docgen-typescript: 2.2.2(typescript@5.4.5)
- typescript: 5.4.5
vite: 5.2.12(@types/node@20.14.1)
+ optionalDependencies:
+ typescript: 5.4.5
'@jridgewell/gen-mapping@0.3.5':
dependencies:
@@ -10513,7 +10551,7 @@ snapshots:
'@jridgewell/sourcemap-codec': 1.4.15
'@kodingdotninja/use-tailwind-breakpoint@0.0.5(react@18.3.1)':
- dependencies:
+ optionalDependencies:
react: 18.3.1
'@lezer/common@1.2.1': {}
@@ -10596,7 +10634,7 @@ snapshots:
monaco-editor: 0.49.0
state-local: 1.0.7
- '@monaco-editor/react@4.6.0(monaco-editor@0.49.0)(react-dom@18.3.1)(react@18.3.1)':
+ '@monaco-editor/react@4.6.0(monaco-editor@0.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@monaco-editor/loader': 1.4.0(monaco-editor@0.49.0)
monaco-editor: 0.49.0
@@ -10609,17 +10647,17 @@ snapshots:
pump: 3.0.0
tar-fs: 2.1.1
- '@nextui-org/accordion@2.0.34(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/accordion@2.0.34(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@nextui-org/aria-utils': 2.0.20(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/divider': 2.0.28(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/framer-utils': 2.0.20(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/aria-utils': 2.0.20(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/divider': 2.0.28(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/framer-utils': 2.0.20(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-icons': 2.0.7(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
- '@nextui-org/use-aria-accordion': 2.0.5(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/use-aria-accordion': 2.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/button': 3.9.3(react@18.3.1)
'@react-aria/focus': 3.16.2(react@18.3.1)
'@react-aria/interactions': 3.21.1(react@18.3.1)
@@ -10627,15 +10665,15 @@ snapshots:
'@react-stately/tree': 3.7.6(react@18.3.1)
'@react-types/accordion': 3.0.0-alpha.19(react@18.3.1)
'@react-types/shared': 3.23.1(react@18.3.1)
- framer-motion: 11.2.10(react-dom@18.3.1)(react@18.3.1)
+ framer-motion: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/aria-utils@2.0.20(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/aria-utils@2.0.20(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-rsc-utils': 2.0.12
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/collections': 3.10.5(react@18.3.1)
'@react-stately/overlays': 3.6.5(react@18.3.1)
@@ -10647,23 +10685,23 @@ snapshots:
- '@nextui-org/theme'
- framer-motion
- '@nextui-org/autocomplete@2.1.1(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(@types/react@18.3.3)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/autocomplete@2.1.1(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(@types/react@18.3.3)(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@nextui-org/aria-utils': 2.0.20(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/button': 2.0.33(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/input': 2.2.1(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/listbox': 2.1.21(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/popover': 2.1.23(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(@types/react@18.3.3)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/aria-utils': 2.0.20(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/button': 2.0.33(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/input': 2.2.1(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/listbox': 2.1.21(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/popover': 2.1.23(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(@types/react@18.3.3)(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
- '@nextui-org/scroll-shadow': 2.1.16(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/scroll-shadow': 2.1.16(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/shared-icons': 2.0.7(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/spinner': 2.0.29(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/spinner': 2.0.29(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@nextui-org/use-aria-button': 2.0.8(react@18.3.1)
'@nextui-org/use-safe-layout-effect': 2.0.5(react@18.3.1)
- '@react-aria/combobox': 3.8.4(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/combobox': 3.8.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/focus': 3.16.2(react@18.3.1)
'@react-aria/i18n': 3.10.2(react@18.3.1)
'@react-aria/interactions': 3.21.1(react@18.3.1)
@@ -10672,17 +10710,17 @@ snapshots:
'@react-stately/combobox': 3.8.2(react@18.3.1)
'@react-types/combobox': 3.10.1(react@18.3.1)
'@react-types/shared': 3.23.1(react@18.3.1)
- framer-motion: 11.2.10(react-dom@18.3.1)(react@18.3.1)
+ framer-motion: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
transitivePeerDependencies:
- '@types/react'
- '@nextui-org/avatar@2.0.29(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/avatar@2.0.29(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@nextui-org/use-image': 2.0.5(react@18.3.1)
'@react-aria/focus': 3.16.2(react@18.3.1)
@@ -10691,21 +10729,21 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/badge@2.0.28(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/badge@2.0.28(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/breadcrumbs@2.0.9(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/breadcrumbs@2.0.9(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-icons': 2.0.7(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@react-aria/breadcrumbs': 3.5.11(react@18.3.1)
'@react-aria/focus': 3.16.2(react@18.3.1)
@@ -10715,13 +10753,13 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/button@2.0.33(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/button@2.0.33(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
- '@nextui-org/ripple': 2.0.29(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/ripple': 2.0.29(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/spinner': 2.0.29(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/spinner': 2.0.29(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@nextui-org/use-aria-button': 2.0.8(react@18.3.1)
'@react-aria/button': 3.9.3(react@18.3.1)
@@ -10730,22 +10768,22 @@ snapshots:
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-types/button': 3.9.2(react@18.3.1)
'@react-types/shared': 3.23.1(react@18.3.1)
- framer-motion: 11.2.10(react-dom@18.3.1)(react@18.3.1)
+ framer-motion: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/calendar@2.0.6(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/calendar@2.0.6(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@internationalized/date': 3.5.4
- '@nextui-org/button': 2.0.33(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/framer-utils': 2.0.20(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/button': 2.0.33(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/framer-utils': 2.0.20(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-icons': 2.0.7(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@nextui-org/use-aria-button': 2.0.8(react@18.3.1)
- '@react-aria/calendar': 3.5.6(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/calendar': 3.5.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/focus': 3.16.2(react@18.3.1)
'@react-aria/i18n': 3.10.2(react@18.3.1)
'@react-aria/interactions': 3.21.1(react@18.3.1)
@@ -10764,12 +10802,12 @@ snapshots:
transitivePeerDependencies:
- framer-motion
- '@nextui-org/card@2.0.30(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/card@2.0.30(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
- '@nextui-org/ripple': 2.0.29(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/ripple': 2.0.29(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@nextui-org/use-aria-button': 2.0.8(react@18.3.1)
'@react-aria/button': 3.9.3(react@18.3.1)
@@ -10777,15 +10815,15 @@ snapshots:
'@react-aria/interactions': 3.21.1(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-types/shared': 3.23.1(react@18.3.1)
- framer-motion: 11.2.10(react-dom@18.3.1)(react@18.3.1)
+ framer-motion: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/checkbox@2.1.1(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/checkbox@2.1.1(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@nextui-org/use-callback-ref': 2.0.5(react@18.3.1)
'@nextui-org/use-safe-layout-effect': 2.0.5(react@18.3.1)
@@ -10801,12 +10839,12 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/chip@2.0.29(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/chip@2.0.29(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-icons': 2.0.7(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@react-aria/focus': 3.16.2(react@18.3.1)
'@react-aria/interactions': 3.21.1(react@18.3.1)
@@ -10815,23 +10853,23 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/code@2.0.28(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/code@2.0.28(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system-rsc': 2.1.2(@nextui-org/theme@2.2.5)(react@18.3.1)
+ '@nextui-org/system-rsc': 2.1.2(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/date-input@2.1.0(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/date-input@2.1.0(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@internationalized/date': 3.5.4
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
- '@react-aria/datepicker': 3.9.3(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/datepicker': 3.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/i18n': 3.10.2(react@18.3.1)
'@react-aria/utils': 3.23.2(react@18.3.1)
'@react-stately/datepicker': 3.9.2(react@18.3.1)
@@ -10840,20 +10878,20 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/date-picker@2.1.1(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(@types/react@18.3.3)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/date-picker@2.1.1(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(@types/react@18.3.3)(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@internationalized/date': 3.5.4
- '@nextui-org/aria-utils': 2.0.20(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/button': 2.0.33(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/calendar': 2.0.6(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/date-input': 2.1.0(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/popover': 2.1.23(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(@types/react@18.3.3)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/aria-utils': 2.0.20(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/button': 2.0.33(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/calendar': 2.0.6(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/date-input': 2.1.0(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/popover': 2.1.23(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(@types/react@18.3.3)(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-icons': 2.0.7(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
- '@react-aria/datepicker': 3.9.3(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/datepicker': 3.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/i18n': 3.10.2(react@18.3.1)
'@react-aria/utils': 3.23.2(react@18.3.1)
'@react-stately/datepicker': 3.9.2(react@18.3.1)
@@ -10867,63 +10905,63 @@ snapshots:
- '@types/react'
- framer-motion
- '@nextui-org/divider@2.0.28(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/divider@2.0.28(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-rsc-utils': 2.0.12
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system-rsc': 2.1.2(@nextui-org/theme@2.2.5)(react@18.3.1)
+ '@nextui-org/system-rsc': 2.1.2(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@react-types/shared': 3.22.1(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/dropdown@2.1.25(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(@types/react@18.3.3)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/dropdown@2.1.25(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(@types/react@18.3.3)(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@nextui-org/aria-utils': 2.0.20(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/menu': 2.0.24(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/popover': 2.1.23(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(@types/react@18.3.3)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/aria-utils': 2.0.20(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/menu': 2.0.24(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/popover': 2.1.23(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(@types/react@18.3.3)(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@react-aria/focus': 3.16.2(react@18.3.1)
- '@react-aria/menu': 3.13.1(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/menu': 3.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/menu': 3.6.1(react@18.3.1)
'@react-types/menu': 3.9.7(react@18.3.1)
- framer-motion: 11.2.10(react-dom@18.3.1)(react@18.3.1)
+ framer-motion: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
transitivePeerDependencies:
- '@types/react'
- '@nextui-org/framer-utils@2.0.20(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/framer-utils@2.0.20(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/use-measure': 2.0.1(react@18.3.1)
- framer-motion: 11.2.10(react-dom@18.3.1)(react@18.3.1)
+ framer-motion: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
transitivePeerDependencies:
- '@nextui-org/theme'
- '@nextui-org/image@2.0.28(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/image@2.0.28(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@nextui-org/use-image': 2.0.5(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/input@2.2.1(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/input@2.2.1(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-icons': 2.0.7(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@nextui-org/use-safe-layout-effect': 2.0.5(react@18.3.1)
'@react-aria/focus': 3.16.2(react@18.3.1)
@@ -10939,22 +10977,22 @@ snapshots:
transitivePeerDependencies:
- '@types/react'
- '@nextui-org/kbd@2.0.29(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/kbd@2.0.29(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system-rsc': 2.1.2(@nextui-org/theme@2.2.5)(react@18.3.1)
+ '@nextui-org/system-rsc': 2.1.2(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@react-aria/utils': 3.23.2(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/link@2.0.31(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/link@2.0.31(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-icons': 2.0.7(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@nextui-org/use-aria-link': 2.0.17(react@18.3.1)
'@react-aria/focus': 3.16.2(react@18.3.1)
@@ -10964,18 +11002,18 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/listbox@2.1.21(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/listbox@2.1.21(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@nextui-org/aria-utils': 2.0.20(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/divider': 2.0.28(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/aria-utils': 2.0.20(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/divider': 2.0.28(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@nextui-org/use-is-mobile': 2.0.7(react@18.3.1)
'@react-aria/focus': 3.16.2(react@18.3.1)
'@react-aria/interactions': 3.21.1(react@18.3.1)
- '@react-aria/listbox': 3.11.5(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/listbox': 3.11.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/list': 3.10.3(react@18.3.1)
'@react-types/menu': 3.9.7(react@18.3.1)
@@ -10985,19 +11023,19 @@ snapshots:
transitivePeerDependencies:
- framer-motion
- '@nextui-org/menu@2.0.24(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/menu@2.0.24(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@nextui-org/aria-utils': 2.0.20(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/divider': 2.0.28(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/aria-utils': 2.0.20(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/divider': 2.0.28(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
- '@nextui-org/use-aria-menu': 2.0.4(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/use-aria-menu': 2.0.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/use-is-mobile': 2.0.7(react@18.3.1)
'@react-aria/focus': 3.16.2(react@18.3.1)
'@react-aria/interactions': 3.21.1(react@18.3.1)
- '@react-aria/menu': 3.13.1(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/menu': 3.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/menu': 3.6.1(react@18.3.1)
'@react-stately/tree': 3.7.6(react@18.3.1)
@@ -11008,56 +11046,56 @@ snapshots:
transitivePeerDependencies:
- framer-motion
- '@nextui-org/modal@2.0.35(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/modal@2.0.35(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@nextui-org/framer-utils': 2.0.20(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/framer-utils': 2.0.20(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-icons': 2.0.7(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@nextui-org/use-aria-button': 2.0.8(react@18.3.1)
- '@nextui-org/use-aria-modal-overlay': 2.0.9(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/use-aria-modal-overlay': 2.0.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/use-disclosure': 2.0.8(react@18.3.1)
- '@react-aria/dialog': 3.5.12(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/dialog': 3.5.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/focus': 3.16.2(react@18.3.1)
'@react-aria/interactions': 3.21.1(react@18.3.1)
- '@react-aria/overlays': 3.21.1(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/overlays': 3.21.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/overlays': 3.6.5(react@18.3.1)
'@react-types/overlays': 3.8.5(react@18.3.1)
- framer-motion: 11.2.10(react-dom@18.3.1)(react@18.3.1)
+ framer-motion: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/navbar@2.0.32(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(@types/react@18.3.3)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/navbar@2.0.32(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(@types/react@18.3.3)(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@nextui-org/framer-utils': 2.0.20(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/framer-utils': 2.0.20(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@nextui-org/use-aria-toggle-button': 2.0.8(react@18.3.1)
'@nextui-org/use-scroll-position': 2.0.6(react@18.3.1)
'@react-aria/focus': 3.16.2(react@18.3.1)
'@react-aria/interactions': 3.21.1(react@18.3.1)
- '@react-aria/overlays': 3.21.1(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/overlays': 3.21.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/toggle': 3.7.2(react@18.3.1)
'@react-stately/utils': 3.9.1(react@18.3.1)
- framer-motion: 11.2.10(react-dom@18.3.1)(react@18.3.1)
+ framer-motion: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
react-remove-scroll: 2.5.10(@types/react@18.3.3)(react@18.3.1)
transitivePeerDependencies:
- '@types/react'
- '@nextui-org/pagination@2.0.32(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/pagination@2.0.32(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-icons': 2.0.7(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@nextui-org/use-pagination': 2.0.6(react@18.3.1)
'@react-aria/focus': 3.16.2(react@18.3.1)
@@ -11068,37 +11106,37 @@ snapshots:
react-dom: 18.3.1(react@18.3.1)
scroll-into-view-if-needed: 3.0.10
- '@nextui-org/popover@2.1.23(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(@types/react@18.3.3)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/popover@2.1.23(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(@types/react@18.3.3)(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@nextui-org/aria-utils': 2.0.20(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/button': 2.0.33(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/framer-utils': 2.0.20(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/aria-utils': 2.0.20(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/button': 2.0.33(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/framer-utils': 2.0.20(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@nextui-org/use-aria-button': 2.0.8(react@18.3.1)
'@nextui-org/use-safe-layout-effect': 2.0.5(react@18.3.1)
- '@react-aria/dialog': 3.5.12(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/dialog': 3.5.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/focus': 3.16.2(react@18.3.1)
'@react-aria/interactions': 3.21.1(react@18.3.1)
- '@react-aria/overlays': 3.21.1(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/overlays': 3.21.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/overlays': 3.6.5(react@18.3.1)
'@react-types/button': 3.9.2(react@18.3.1)
'@react-types/overlays': 3.8.5(react@18.3.1)
- framer-motion: 11.2.10(react-dom@18.3.1)(react@18.3.1)
+ framer-motion: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
react-remove-scroll: 2.5.10(@types/react@18.3.3)(react@18.3.1)
transitivePeerDependencies:
- '@types/react'
- '@nextui-org/progress@2.0.30(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/progress@2.0.30(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@nextui-org/use-is-mounted': 2.0.5(react@18.3.1)
'@react-aria/i18n': 3.10.2(react@18.3.1)
@@ -11108,11 +11146,11 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/radio@2.1.1(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/radio@2.1.1(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@react-aria/focus': 3.16.2(react@18.3.1)
'@react-aria/interactions': 3.21.1(react@18.3.1)
@@ -11133,93 +11171,93 @@ snapshots:
'@nextui-org/shared-utils': 2.0.5
react: 18.3.1
- '@nextui-org/react@2.4.1(@types/react@18.3.3)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)(tailwindcss@3.4.3)':
- dependencies:
- '@nextui-org/accordion': 2.0.34(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/autocomplete': 2.1.1(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(@types/react@18.3.3)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/avatar': 2.0.29(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/badge': 2.0.28(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/breadcrumbs': 2.0.9(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/button': 2.0.33(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/calendar': 2.0.6(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/card': 2.0.30(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/checkbox': 2.1.1(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/chip': 2.0.29(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/code': 2.0.28(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/date-input': 2.1.0(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/date-picker': 2.1.1(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(@types/react@18.3.3)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/divider': 2.0.28(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/dropdown': 2.1.25(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(@types/react@18.3.3)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/framer-utils': 2.0.20(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/image': 2.0.28(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/input': 2.2.1(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/kbd': 2.0.29(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/link': 2.0.31(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/listbox': 2.1.21(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/menu': 2.0.24(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/modal': 2.0.35(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/navbar': 2.0.32(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(@types/react@18.3.3)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/pagination': 2.0.32(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/popover': 2.1.23(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(@types/react@18.3.3)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/progress': 2.0.30(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/radio': 2.1.1(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/ripple': 2.0.29(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/scroll-shadow': 2.1.16(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/select': 2.2.1(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(@types/react@18.3.3)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/skeleton': 2.0.28(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/slider': 2.2.11(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/snippet': 2.0.37(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/spacer': 2.0.28(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/spinner': 2.0.29(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/switch': 2.0.30(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/table': 2.0.35(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/tabs': 2.0.31(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/react@2.4.1(@types/react@18.3.3)(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.3)':
+ dependencies:
+ '@nextui-org/accordion': 2.0.34(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/autocomplete': 2.1.1(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(@types/react@18.3.3)(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/avatar': 2.0.29(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/badge': 2.0.28(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/breadcrumbs': 2.0.9(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/button': 2.0.33(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/calendar': 2.0.6(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/card': 2.0.30(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/checkbox': 2.1.1(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/chip': 2.0.29(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/code': 2.0.28(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/date-input': 2.1.0(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/date-picker': 2.1.1(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(@types/react@18.3.3)(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/divider': 2.0.28(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/dropdown': 2.1.25(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(@types/react@18.3.3)(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/framer-utils': 2.0.20(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/image': 2.0.28(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/input': 2.2.1(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/kbd': 2.0.29(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/link': 2.0.31(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/listbox': 2.1.21(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/menu': 2.0.24(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/modal': 2.0.35(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/navbar': 2.0.32(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(@types/react@18.3.3)(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/pagination': 2.0.32(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/popover': 2.1.23(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(@types/react@18.3.3)(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/progress': 2.0.30(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/radio': 2.1.1(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/ripple': 2.0.29(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/scroll-shadow': 2.1.16(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/select': 2.2.1(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(@types/react@18.3.3)(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/skeleton': 2.0.28(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/slider': 2.2.11(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/snippet': 2.0.37(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/spacer': 2.0.28(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/spinner': 2.0.29(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/switch': 2.0.30(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/table': 2.0.35(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/tabs': 2.0.31(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
- '@nextui-org/tooltip': 2.0.35(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/user': 2.0.30(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/tooltip': 2.0.35(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/user': 2.0.30(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/visually-hidden': 3.8.10(react@18.3.1)
- framer-motion: 11.2.10(react-dom@18.3.1)(react@18.3.1)
+ framer-motion: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
transitivePeerDependencies:
- '@types/react'
- tailwindcss
- '@nextui-org/ripple@2.0.29(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/ripple@2.0.29(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
- framer-motion: 11.2.10(react-dom@18.3.1)(react@18.3.1)
+ framer-motion: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/scroll-shadow@2.1.16(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/scroll-shadow@2.1.16(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@nextui-org/use-data-scroll-overflow': 2.1.4(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/select@2.2.1(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(@types/react@18.3.3)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/select@2.2.1(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(@types/react@18.3.3)(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@nextui-org/aria-utils': 2.0.20(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/listbox': 2.1.21(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/popover': 2.1.23(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(@types/react@18.3.3)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/aria-utils': 2.0.20(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/listbox': 2.1.21(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/popover': 2.1.23(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(@types/react@18.3.3)(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
- '@nextui-org/scroll-shadow': 2.1.16(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/scroll-shadow': 2.1.16(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/shared-icons': 2.0.7(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/spinner': 2.0.29(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/spinner': 2.0.29(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@nextui-org/use-aria-button': 2.0.8(react@18.3.1)
- '@nextui-org/use-aria-multiselect': 2.2.1(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/use-aria-multiselect': 2.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/use-safe-layout-effect': 2.0.5(react@18.3.1)
'@react-aria/focus': 3.16.2(react@18.3.1)
'@react-aria/form': 3.0.3(react@18.3.1)
@@ -11227,7 +11265,7 @@ snapshots:
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-aria/visually-hidden': 3.8.10(react@18.3.1)
'@react-types/shared': 3.23.1(react@18.3.1)
- framer-motion: 11.2.10(react-dom@18.3.1)(react@18.3.1)
+ framer-motion: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
transitivePeerDependencies:
@@ -11239,22 +11277,22 @@ snapshots:
'@nextui-org/shared-utils@2.0.5': {}
- '@nextui-org/skeleton@2.0.28(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/skeleton@2.0.28(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/slider@2.2.11(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/slider@2.2.11(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
- '@nextui-org/tooltip': 2.0.35(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/tooltip': 2.0.35(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/focus': 3.16.2(react@18.3.1)
'@react-aria/i18n': 3.10.2(react@18.3.1)
'@react-aria/interactions': 3.21.1(react@18.3.1)
@@ -11267,45 +11305,45 @@ snapshots:
transitivePeerDependencies:
- framer-motion
- '@nextui-org/snippet@2.0.37(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/snippet@2.0.37(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@nextui-org/button': 2.0.33(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/button': 2.0.33(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-icons': 2.0.7(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
- '@nextui-org/tooltip': 2.0.35(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/tooltip': 2.0.35(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/use-clipboard': 2.0.5(react@18.3.1)
'@react-aria/focus': 3.16.2(react@18.3.1)
'@react-aria/utils': 3.23.2(react@18.3.1)
- framer-motion: 11.2.10(react-dom@18.3.1)(react@18.3.1)
+ framer-motion: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/spacer@2.0.28(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/spacer@2.0.28(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system-rsc': 2.1.2(@nextui-org/theme@2.2.5)(react@18.3.1)
+ '@nextui-org/system-rsc': 2.1.2(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/spinner@2.0.29(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/spinner@2.0.29(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system-rsc': 2.1.2(@nextui-org/theme@2.2.5)(react@18.3.1)
+ '@nextui-org/system-rsc': 2.1.2(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/switch@2.0.30(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/switch@2.0.30(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@nextui-org/use-safe-layout-effect': 2.0.5(react@18.3.1)
'@react-aria/focus': 3.16.2(react@18.3.1)
@@ -11318,39 +11356,39 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/system-rsc@2.1.2(@nextui-org/theme@2.2.5)(react@18.3.1)':
+ '@nextui-org/system-rsc@2.1.2(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react@18.3.1)':
dependencies:
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
clsx: 1.2.1
react: 18.3.1
- '@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@internationalized/date': 3.5.4
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
- '@nextui-org/system-rsc': 2.1.2(@nextui-org/theme@2.2.5)(react@18.3.1)
+ '@nextui-org/system-rsc': 2.1.2(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react@18.3.1)
'@react-aria/i18n': 3.10.2(react@18.3.1)
- '@react-aria/overlays': 3.21.1(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/overlays': 3.21.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/utils': 3.9.1(react@18.3.1)
- framer-motion: 11.2.10(react-dom@18.3.1)(react@18.3.1)
+ framer-motion: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
transitivePeerDependencies:
- '@nextui-org/theme'
- '@nextui-org/table@2.0.35(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/table@2.0.35(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@nextui-org/checkbox': 2.1.1(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/checkbox': 2.1.1(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-icons': 2.0.7(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/spacer': 2.0.28(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/spacer': 2.0.28(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@react-aria/focus': 3.16.2(react@18.3.1)
'@react-aria/interactions': 3.21.1(react@18.3.1)
- '@react-aria/table': 3.13.5(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/table': 3.13.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-aria/visually-hidden': 3.8.10(react@18.3.1)
'@react-stately/table': 3.11.6(react@18.3.1)
@@ -11360,24 +11398,24 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/tabs@2.0.31(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/tabs@2.0.31(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@nextui-org/aria-utils': 2.0.20(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/framer-utils': 2.0.20(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/aria-utils': 2.0.20(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/framer-utils': 2.0.20(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@nextui-org/use-is-mounted': 2.0.5(react@18.3.1)
'@nextui-org/use-update-effect': 2.0.5(react@18.3.1)
'@react-aria/focus': 3.16.2(react@18.3.1)
'@react-aria/interactions': 3.21.1(react@18.3.1)
- '@react-aria/tabs': 3.8.5(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/tabs': 3.8.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/tabs': 3.6.4(react@18.3.1)
'@react-types/shared': 3.23.1(react@18.3.1)
'@react-types/tabs': 3.3.5(react@18.3.1)
- framer-motion: 11.2.10(react-dom@18.3.1)(react@18.3.1)
+ framer-motion: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
scroll-into-view-if-needed: 3.0.10
@@ -11398,31 +11436,31 @@ snapshots:
tailwind-variants: 0.1.20(tailwindcss@3.4.3)
tailwindcss: 3.4.3
- '@nextui-org/tooltip@2.0.35(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/tooltip@2.0.35(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@nextui-org/aria-utils': 2.0.20(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
- '@nextui-org/framer-utils': 2.0.20(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/aria-utils': 2.0.20(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/framer-utils': 2.0.20(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@nextui-org/use-safe-layout-effect': 2.0.5(react@18.3.1)
'@react-aria/interactions': 3.21.1(react@18.3.1)
- '@react-aria/overlays': 3.21.1(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/overlays': 3.21.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/tooltip': 3.7.2(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/tooltip': 3.4.7(react@18.3.1)
'@react-types/overlays': 3.8.5(react@18.3.1)
'@react-types/tooltip': 3.4.7(react@18.3.1)
- framer-motion: 11.2.10(react-dom@18.3.1)(react@18.3.1)
+ framer-motion: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/use-aria-accordion@2.0.5(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/use-aria-accordion@2.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@react-aria/button': 3.9.3(react@18.3.1)
'@react-aria/focus': 3.16.2(react@18.3.1)
- '@react-aria/selection': 3.17.5(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/selection': 3.17.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/tree': 3.7.6(react@18.3.1)
'@react-types/accordion': 3.0.0-alpha.19(react@18.3.1)
@@ -11449,12 +11487,12 @@ snapshots:
'@react-types/shared': 3.23.1(react@18.3.1)
react: 18.3.1
- '@nextui-org/use-aria-menu@2.0.4(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/use-aria-menu@2.0.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@react-aria/i18n': 3.10.2(react@18.3.1)
'@react-aria/interactions': 3.21.1(react@18.3.1)
- '@react-aria/menu': 3.13.1(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/selection': 3.17.5(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/menu': 3.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/selection': 3.17.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/collections': 3.10.5(react@18.3.1)
'@react-stately/tree': 3.7.6(react@18.3.1)
@@ -11463,23 +11501,23 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/use-aria-modal-overlay@2.0.9(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/use-aria-modal-overlay@2.0.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@react-aria/overlays': 3.21.1(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/overlays': 3.21.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/overlays': 3.6.5(react@18.3.1)
'@react-types/shared': 3.23.1(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/use-aria-multiselect@2.2.1(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/use-aria-multiselect@2.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@react-aria/i18n': 3.10.2(react@18.3.1)
'@react-aria/interactions': 3.21.1(react@18.3.1)
'@react-aria/label': 3.7.6(react@18.3.1)
- '@react-aria/listbox': 3.11.5(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/menu': 3.13.1(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/selection': 3.17.5(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/listbox': 3.11.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/menu': 3.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/selection': 3.17.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/form': 3.0.1(react@18.3.1)
'@react-stately/list': 3.10.3(react@18.3.1)
@@ -11557,12 +11595,12 @@ snapshots:
dependencies:
react: 18.3.1
- '@nextui-org/user@2.0.30(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)':
+ '@nextui-org/user@2.0.30(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@nextui-org/avatar': 2.0.29(@nextui-org/system@2.2.1)(@nextui-org/theme@2.2.5)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/avatar': 2.0.29(@nextui-org/system@2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/react-utils': 2.0.13(react@18.3.1)
'@nextui-org/shared-utils': 2.0.5
- '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5)(framer-motion@11.2.10)(react-dom@18.3.1)(react@18.3.1)
+ '@nextui-org/system': 2.2.1(@nextui-org/theme@2.2.5(tailwindcss@3.4.3))(framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/theme': 2.2.5(tailwindcss@3.4.3)
'@react-aria/focus': 3.16.2(react@18.3.1)
'@react-aria/utils': 3.23.2(react@18.3.1)
@@ -11598,183 +11636,198 @@ snapshots:
dependencies:
'@babel/runtime': 7.24.6
- '@radix-ui/react-accordion@1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-accordion@1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/primitive': 1.0.1
- '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-alert-dialog@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-alert-dialog@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-aspect-ratio@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-aspect-ratio@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-checkbox@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-checkbox@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-size': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-collection@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-collection@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
'@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.3)(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@types/react': 18.3.3
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.3
'@radix-ui/react-context@1.0.1(@types/react@18.3.3)(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@types/react': 18.3.3
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.3
- '@radix-ui/react-dialog@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-dialog@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
aria-hidden: 1.2.4
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
react-remove-scroll: 2.5.5(@types/react@18.3.3)(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
'@radix-ui/react-direction@1.0.1(@types/react@18.3.3)(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@types/react': 18.3.3
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.3
- '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
'@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.3)(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@types/react': 18.3.3
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.3
- '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
'@radix-ui/react-icons@1.3.0(react@18.3.1)':
dependencies:
@@ -11784,159 +11837,170 @@ snapshots:
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.3
- '@radix-ui/react-label@2.0.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-label@2.0.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-menu@2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-menu@2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/primitive': 1.0.1
- '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
aria-hidden: 1.2.4
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
react-remove-scroll: 2.5.5(@types/react@18.3.3)(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-popover@1.0.7(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-popover@1.0.7(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
aria-hidden: 1.2.4
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
react-remove-scroll: 2.5.5(@types/react@18.3.3)(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-popper@1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-popper@1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@floating-ui/react-dom': 2.1.0(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@floating-ui/react-dom': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-rect': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-size': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/rect': 1.0.1
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-portal@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-portal@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-presence@1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-presence@1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-progress@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-progress@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-radio-group@1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-radio-group@1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-size': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/primitive': 1.0.1
- '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/number': 1.0.1
@@ -11944,191 +12008,208 @@ snapshots:
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-select@2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-select@2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/number': 1.0.1
'@radix-ui/primitive': 1.0.1
- '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
aria-hidden: 1.2.4
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
react-remove-scroll: 2.5.5(@types/react@18.3.3)(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-separator@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-separator@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
'@radix-ui/react-slot@1.0.2(@types/react@18.3.3)(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.3
- '@radix-ui/react-switch@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-switch@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-size': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-tabs@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-tabs@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-toggle@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-toggle@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/primitive': 1.0.1
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
- '@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1)
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
'@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.3)(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@types/react': 18.3.3
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.3
'@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.3)(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.3
'@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.3.3)(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.3
'@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.3)(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@types/react': 18.3.3
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.3
'@radix-ui/react-use-previous@1.0.1(@types/react@18.3.3)(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@types/react': 18.3.3
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.3
'@radix-ui/react-use-rect@1.0.1(@types/react@18.3.3)(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/rect': 1.0.1
- '@types/react': 18.3.3
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.3
'@radix-ui/react-use-size@1.0.1(@types/react@18.3.3)(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.3
- '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
'@radix-ui/rect@1.0.1':
dependencies:
@@ -12155,7 +12236,7 @@ snapshots:
'@swc/helpers': 0.5.11
react: 18.3.1
- '@react-aria/calendar@3.5.6(react-dom@18.3.1)(react@18.3.1)':
+ '@react-aria/calendar@3.5.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@internationalized/date': 3.5.4
'@react-aria/i18n': 3.10.2(react@18.3.1)
@@ -12185,14 +12266,14 @@ snapshots:
'@swc/helpers': 0.5.11
react: 18.3.1
- '@react-aria/combobox@3.8.4(react-dom@18.3.1)(react@18.3.1)':
+ '@react-aria/combobox@3.8.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@react-aria/i18n': 3.10.2(react@18.3.1)
- '@react-aria/listbox': 3.12.1(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/listbox': 3.12.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/live-announcer': 3.3.4
- '@react-aria/menu': 3.14.1(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/overlays': 3.22.1(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/selection': 3.18.1(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/menu': 3.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/overlays': 3.22.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/selection': 3.18.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/textfield': 3.14.5(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/collections': 3.10.7(react@18.3.1)
@@ -12205,7 +12286,7 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/datepicker@3.9.3(react-dom@18.3.1)(react@18.3.1)':
+ '@react-aria/datepicker@3.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@internationalized/date': 3.5.4
'@internationalized/number': 3.5.3
@@ -12215,7 +12296,7 @@ snapshots:
'@react-aria/i18n': 3.10.2(react@18.3.1)
'@react-aria/interactions': 3.21.3(react@18.3.1)
'@react-aria/label': 3.7.8(react@18.3.1)
- '@react-aria/spinbutton': 3.6.5(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/spinbutton': 3.6.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.23.2(react@18.3.1)
'@react-stately/datepicker': 3.9.2(react@18.3.1)
'@react-stately/form': 3.0.3(react@18.3.1)
@@ -12228,10 +12309,10 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/dialog@3.5.12(react-dom@18.3.1)(react@18.3.1)':
+ '@react-aria/dialog@3.5.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@react-aria/focus': 3.16.2(react@18.3.1)
- '@react-aria/overlays': 3.21.1(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/overlays': 3.21.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-types/dialog': 3.5.10(react@18.3.1)
'@react-types/shared': 3.23.1(react@18.3.1)
@@ -12275,13 +12356,13 @@ snapshots:
'@swc/helpers': 0.5.11
react: 18.3.1
- '@react-aria/grid@3.9.1(react-dom@18.3.1)(react@18.3.1)':
+ '@react-aria/grid@3.9.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@react-aria/focus': 3.17.1(react@18.3.1)
'@react-aria/i18n': 3.11.1(react@18.3.1)
'@react-aria/interactions': 3.21.3(react@18.3.1)
'@react-aria/live-announcer': 3.3.4
- '@react-aria/selection': 3.18.1(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/selection': 3.18.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/collections': 3.10.7(react@18.3.1)
'@react-stately/grid': 3.8.7(react@18.3.1)
@@ -12358,11 +12439,11 @@ snapshots:
'@swc/helpers': 0.5.11
react: 18.3.1
- '@react-aria/listbox@3.11.5(react-dom@18.3.1)(react@18.3.1)':
+ '@react-aria/listbox@3.11.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@react-aria/interactions': 3.21.1(react@18.3.1)
'@react-aria/label': 3.7.8(react@18.3.1)
- '@react-aria/selection': 3.18.1(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/selection': 3.18.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/collections': 3.10.7(react@18.3.1)
'@react-stately/list': 3.10.3(react@18.3.1)
@@ -12372,11 +12453,11 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/listbox@3.12.1(react-dom@18.3.1)(react@18.3.1)':
+ '@react-aria/listbox@3.12.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@react-aria/interactions': 3.21.3(react@18.3.1)
'@react-aria/label': 3.7.8(react@18.3.1)
- '@react-aria/selection': 3.18.1(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/selection': 3.18.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/collections': 3.10.7(react@18.3.1)
'@react-stately/list': 3.10.5(react@18.3.1)
@@ -12390,13 +12471,13 @@ snapshots:
dependencies:
'@swc/helpers': 0.5.11
- '@react-aria/menu@3.13.1(react-dom@18.3.1)(react@18.3.1)':
+ '@react-aria/menu@3.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@react-aria/focus': 3.16.2(react@18.3.1)
'@react-aria/i18n': 3.11.1(react@18.3.1)
'@react-aria/interactions': 3.21.1(react@18.3.1)
- '@react-aria/overlays': 3.22.1(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/selection': 3.18.1(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/overlays': 3.22.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/selection': 3.18.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/collections': 3.10.7(react@18.3.1)
'@react-stately/menu': 3.6.1(react@18.3.1)
@@ -12408,13 +12489,13 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/menu@3.14.1(react-dom@18.3.1)(react@18.3.1)':
+ '@react-aria/menu@3.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@react-aria/focus': 3.17.1(react@18.3.1)
'@react-aria/i18n': 3.11.1(react@18.3.1)
'@react-aria/interactions': 3.21.3(react@18.3.1)
- '@react-aria/overlays': 3.22.1(react-dom@18.3.1)(react@18.3.1)
- '@react-aria/selection': 3.18.1(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/overlays': 3.22.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/selection': 3.18.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/collections': 3.10.7(react@18.3.1)
'@react-stately/menu': 3.7.1(react@18.3.1)
@@ -12426,7 +12507,7 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/overlays@3.21.1(react-dom@18.3.1)(react@18.3.1)':
+ '@react-aria/overlays@3.21.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@react-aria/focus': 3.17.1(react@18.3.1)
'@react-aria/i18n': 3.10.2(react@18.3.1)
@@ -12442,7 +12523,7 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/overlays@3.22.1(react-dom@18.3.1)(react@18.3.1)':
+ '@react-aria/overlays@3.22.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@react-aria/focus': 3.17.1(react@18.3.1)
'@react-aria/i18n': 3.11.1(react@18.3.1)
@@ -12482,7 +12563,7 @@ snapshots:
'@swc/helpers': 0.5.11
react: 18.3.1
- '@react-aria/selection@3.17.5(react-dom@18.3.1)(react@18.3.1)':
+ '@react-aria/selection@3.17.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@react-aria/focus': 3.16.2(react@18.3.1)
'@react-aria/i18n': 3.10.2(react@18.3.1)
@@ -12494,7 +12575,7 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/selection@3.18.1(react-dom@18.3.1)(react@18.3.1)':
+ '@react-aria/selection@3.18.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@react-aria/focus': 3.17.1(react@18.3.1)
'@react-aria/i18n': 3.11.1(react@18.3.1)
@@ -12519,7 +12600,7 @@ snapshots:
'@swc/helpers': 0.5.11
react: 18.3.1
- '@react-aria/spinbutton@3.6.5(react-dom@18.3.1)(react@18.3.1)':
+ '@react-aria/spinbutton@3.6.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@react-aria/i18n': 3.11.1(react@18.3.1)
'@react-aria/live-announcer': 3.3.4
@@ -12543,10 +12624,10 @@ snapshots:
'@swc/helpers': 0.5.11
react: 18.3.1
- '@react-aria/table@3.13.5(react-dom@18.3.1)(react@18.3.1)':
+ '@react-aria/table@3.13.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@react-aria/focus': 3.16.2(react@18.3.1)
- '@react-aria/grid': 3.9.1(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/grid': 3.9.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/i18n': 3.11.1(react@18.3.1)
'@react-aria/interactions': 3.21.1(react@18.3.1)
'@react-aria/live-announcer': 3.3.4
@@ -12564,11 +12645,11 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/tabs@3.8.5(react-dom@18.3.1)(react@18.3.1)':
+ '@react-aria/tabs@3.8.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@react-aria/focus': 3.16.2(react@18.3.1)
'@react-aria/i18n': 3.11.1(react@18.3.1)
- '@react-aria/selection': 3.18.1(react-dom@18.3.1)(react@18.3.1)
+ '@react-aria/selection': 3.18.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/utils': 3.24.1(react@18.3.1)
'@react-stately/tabs': 3.6.4(react@18.3.1)
'@react-types/shared': 3.23.1(react@18.3.1)
@@ -13116,11 +13197,12 @@ snapshots:
'@remirror/messages': 2.0.6
'@remirror/pm': 2.0.8
'@types/min-document': 2.19.2
- '@types/node': 20.14.1
css-in-js-utils: 3.1.0
get-dom-document: 0.1.3(jsdom@24.1.0)
min-document: 2.19.0
parenthesis: 3.1.8
+ optionalDependencies:
+ '@types/node': 20.14.1
transitivePeerDependencies:
- jsdom
@@ -13214,7 +13296,7 @@ snapshots:
- jsdom
- supports-color
- '@remirror/extension-code-block@2.0.18(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)':
+ '@remirror/extension-code-block@2.0.18(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)(prettier@3.3.2)':
dependencies:
'@babel/runtime': 7.24.6
'@remirror/core': 2.0.19(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)
@@ -13223,6 +13305,8 @@ snapshots:
'@remirror/theme': 2.0.9(@remirror/pm@2.0.8)
'@types/refractor': 3.4.1
refractor: 3.6.0
+ optionalDependencies:
+ prettier: 3.3.2
transitivePeerDependencies:
- '@types/node'
- jsdom
@@ -13750,7 +13834,7 @@ snapshots:
prosemirror-model: 1.21.1
prosemirror-state: 1.4.3
prosemirror-view: 1.33.7
- y-prosemirror: 1.2.5(prosemirror-model@1.21.1)(prosemirror-state@1.4.3)(prosemirror-view@1.33.7)(y-protocols@1.0.6)(yjs@13.6.15)
+ y-prosemirror: 1.2.5(prosemirror-model@1.21.1)(prosemirror-state@1.4.3)(prosemirror-view@1.33.7)(y-protocols@1.0.6(yjs@13.6.15))(yjs@13.6.15)
y-protocols: 1.0.6(yjs@13.6.15)
yjs: 13.6.15
transitivePeerDependencies:
@@ -13840,7 +13924,7 @@ snapshots:
- jsdom
- supports-color
- '@remirror/preset-wysiwyg@2.0.19(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)':
+ '@remirror/preset-wysiwyg@2.0.19(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)(prettier@3.3.2)':
dependencies:
'@babel/runtime': 7.24.6
'@remirror/core': 2.0.19(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)
@@ -13848,7 +13932,7 @@ snapshots:
'@remirror/extension-blockquote': 2.0.14(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)
'@remirror/extension-bold': 2.0.13(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)
'@remirror/extension-code': 2.0.13(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)
- '@remirror/extension-code-block': 2.0.18(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)
+ '@remirror/extension-code-block': 2.0.18(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)(prettier@3.3.2)
'@remirror/extension-drop-cursor': 2.0.13(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)
'@remirror/extension-embed': 2.0.14(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)
'@remirror/extension-gap-cursor': 2.0.13(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)
@@ -13888,11 +13972,13 @@ snapshots:
dependencies:
type-fest: 2.19.0
- '@rollup/pluginutils@5.1.0':
+ '@rollup/pluginutils@5.1.0(rollup@4.18.0)':
dependencies:
'@types/estree': 1.0.5
estree-walker: 2.0.2
picomatch: 2.3.1
+ optionalDependencies:
+ rollup: 4.18.0
'@rollup/rollup-android-arm-eabi@4.18.0':
optional: true
@@ -13982,9 +14068,9 @@ snapshots:
memoizerific: 1.11.3
ts-dedent: 2.2.0
- '@storybook/addon-controls@8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)':
+ '@storybook/addon-controls@8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@storybook/blocks': 8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/blocks': 8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
dequal: 2.0.3
lodash: 4.17.21
ts-dedent: 2.2.0
@@ -14001,16 +14087,16 @@ snapshots:
dependencies:
'@babel/core': 7.24.6
'@mdx-js/react': 3.0.1(@types/react@18.3.3)(react@18.3.1)
- '@storybook/blocks': 8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/blocks': 8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@storybook/client-logger': 8.1.5
- '@storybook/components': 8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/components': 8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@storybook/csf-plugin': 8.1.5
'@storybook/csf-tools': 8.1.5
'@storybook/global': 5.0.0
'@storybook/node-logger': 8.1.5
'@storybook/preview-api': 8.1.5
- '@storybook/react-dom-shim': 8.1.5(react-dom@18.3.1)(react@18.3.1)
- '@storybook/theming': 8.1.5(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/react-dom-shim': 8.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@storybook/theming': 8.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@storybook/types': 8.1.5
'@types/react': 18.3.3
fs-extra: 11.2.0
@@ -14025,11 +14111,11 @@ snapshots:
- prettier
- supports-color
- '@storybook/addon-essentials@8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)':
+ '@storybook/addon-essentials@8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@storybook/addon-actions': 8.1.5
'@storybook/addon-backgrounds': 8.1.5
- '@storybook/addon-controls': 8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/addon-controls': 8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@storybook/addon-docs': 8.1.5(@types/react-dom@18.3.0)(prettier@3.3.2)
'@storybook/addon-highlight': 8.1.5
'@storybook/addon-measure': 8.1.5
@@ -14037,7 +14123,7 @@ snapshots:
'@storybook/addon-toolbars': 8.1.5
'@storybook/addon-viewport': 8.1.5
'@storybook/core-common': 8.1.5(prettier@3.3.2)
- '@storybook/manager-api': 8.1.5(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/manager-api': 8.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@storybook/node-logger': 8.1.5
'@storybook/preview-api': 8.1.5
ts-dedent: 2.2.0
@@ -14054,11 +14140,11 @@ snapshots:
dependencies:
'@storybook/global': 5.0.0
- '@storybook/addon-interactions@8.1.5(jest@29.7.0)(vitest@1.6.0)':
+ '@storybook/addon-interactions@8.1.5(@jest/globals@29.7.0)(jest@29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0))(vitest@1.6.0(@types/node@20.14.1)(@vitest/ui@1.6.0)(jsdom@24.1.0))':
dependencies:
'@storybook/global': 5.0.0
'@storybook/instrumenter': 8.1.5
- '@storybook/test': 8.1.5(jest@29.7.0)(vitest@1.6.0)
+ '@storybook/test': 8.1.5(@jest/globals@29.7.0)(jest@29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0))(vitest@1.6.0(@types/node@20.14.1)(@vitest/ui@1.6.0)(jsdom@24.1.0))
'@storybook/types': 8.1.5
polished: 4.3.1
ts-dedent: 2.2.0
@@ -14073,8 +14159,9 @@ snapshots:
dependencies:
'@storybook/csf': 0.1.8
'@storybook/global': 5.0.0
- react: 18.3.1
ts-dedent: 2.2.0
+ optionalDependencies:
+ react: 18.3.1
'@storybook/addon-measure@8.1.5':
dependencies:
@@ -14098,19 +14185,19 @@ snapshots:
dependencies:
memoizerific: 1.11.3
- '@storybook/blocks@8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)':
+ '@storybook/blocks@8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@storybook/channels': 8.1.5
'@storybook/client-logger': 8.1.5
- '@storybook/components': 8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/components': 8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@storybook/core-events': 8.1.5
'@storybook/csf': 0.1.8
'@storybook/docs-tools': 8.1.5(prettier@3.3.2)
'@storybook/global': 5.0.0
- '@storybook/icons': 1.2.9(react-dom@18.3.1)(react@18.3.1)
- '@storybook/manager-api': 8.1.5(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/icons': 1.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@storybook/manager-api': 8.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@storybook/preview-api': 8.1.5
- '@storybook/theming': 8.1.5(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/theming': 8.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@storybook/types': 8.1.5
'@types/lodash': 4.17.4
color-convert: 2.0.1
@@ -14119,13 +14206,14 @@ snapshots:
markdown-to-jsx: 7.3.2(react@18.3.1)
memoizerific: 1.11.3
polished: 4.3.1
- react: 18.3.1
- react-colorful: 5.6.1(react-dom@18.3.1)(react@18.3.1)
- react-dom: 18.3.1(react@18.3.1)
+ react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
telejson: 7.2.0
tocbot: 4.28.2
ts-dedent: 2.2.0
util-deprecate: 1.0.2
+ optionalDependencies:
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
transitivePeerDependencies:
- '@types/react'
- '@types/react-dom'
@@ -14154,7 +14242,7 @@ snapshots:
- prettier
- supports-color
- '@storybook/builder-vite@8.1.5(prettier@3.3.2)(typescript@5.4.5)(vite@5.2.12)':
+ '@storybook/builder-vite@8.1.5(prettier@3.3.2)(typescript@5.4.5)(vite@5.2.12(@types/node@20.14.1))':
dependencies:
'@storybook/channels': 8.1.5
'@storybook/client-logger': 8.1.5
@@ -14173,8 +14261,9 @@ snapshots:
fs-extra: 11.2.0
magic-string: 0.30.10
ts-dedent: 2.2.0
- typescript: 5.4.5
vite: 5.2.12(@types/node@20.14.1)
+ optionalDependencies:
+ typescript: 5.4.5
transitivePeerDependencies:
- encoding
- prettier
@@ -14196,7 +14285,7 @@ snapshots:
telejson: 7.2.0
tiny-invariant: 1.3.3
- '@storybook/cli@8.1.9(react-dom@18.3.1)(react@18.3.1)':
+ '@storybook/cli@8.1.9(@babel/preset-env@7.24.7(@babel/core@7.24.7))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/core': 7.24.7
'@babel/types': 7.24.7
@@ -14204,7 +14293,7 @@ snapshots:
'@storybook/codemod': 8.1.9
'@storybook/core-common': 8.1.9(prettier@3.3.2)
'@storybook/core-events': 8.1.9
- '@storybook/core-server': 8.1.9(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/core-server': 8.1.9(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@storybook/csf-tools': 8.1.9
'@storybook/node-logger': 8.1.9
'@storybook/telemetry': 8.1.9(prettier@3.3.2)
@@ -14223,7 +14312,7 @@ snapshots:
get-npm-tarball-url: 2.1.0
giget: 1.2.3
globby: 14.0.1
- jscodeshift: 0.15.2(@babel/preset-env@7.24.7)
+ jscodeshift: 0.15.2(@babel/preset-env@7.24.7(@babel/core@7.24.7))
leven: 3.1.0
ora: 5.4.1
prettier: 3.3.2
@@ -14263,7 +14352,7 @@ snapshots:
'@types/cross-spawn': 6.0.6
cross-spawn: 7.0.3
globby: 14.0.1
- jscodeshift: 0.15.2(@babel/preset-env@7.24.7)
+ jscodeshift: 0.15.2(@babel/preset-env@7.24.7(@babel/core@7.24.7))
lodash: 4.17.21
prettier: 3.3.2
recast: 0.23.9
@@ -14271,15 +14360,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@storybook/components@8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)':
+ '@storybook/components@8.1.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1)
'@storybook/client-logger': 8.1.5
'@storybook/csf': 0.1.8
'@storybook/global': 5.0.0
- '@storybook/icons': 1.2.9(react-dom@18.3.1)(react@18.3.1)
- '@storybook/theming': 8.1.5(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/icons': 1.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@storybook/theming': 8.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@storybook/types': 8.1.5
memoizerific: 1.11.3
react: 18.3.1
@@ -14312,7 +14401,6 @@ snapshots:
node-fetch: 2.7.0
picomatch: 2.3.1
pkg-dir: 5.0.0
- prettier: 3.3.2
prettier-fallback: prettier@3.3.2
pretty-hrtime: 1.0.3
resolve-from: 5.0.0
@@ -14321,6 +14409,8 @@ snapshots:
tiny-invariant: 1.3.3
ts-dedent: 2.2.0
util: 0.12.5
+ optionalDependencies:
+ prettier: 3.3.2
transitivePeerDependencies:
- encoding
- supports-color
@@ -14348,7 +14438,6 @@ snapshots:
node-fetch: 2.7.0
picomatch: 2.3.1
pkg-dir: 5.0.0
- prettier: 3.3.2
prettier-fallback: prettier@3.3.2
pretty-hrtime: 1.0.3
resolve-from: 5.0.0
@@ -14357,6 +14446,8 @@ snapshots:
tiny-invariant: 1.3.3
ts-dedent: 2.2.0
util: 0.12.5
+ optionalDependencies:
+ prettier: 3.3.2
transitivePeerDependencies:
- encoding
- supports-color
@@ -14371,7 +14462,7 @@ snapshots:
'@storybook/csf': 0.1.8
ts-dedent: 2.2.0
- '@storybook/core-server@8.1.9(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)':
+ '@storybook/core-server@8.1.9(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@aw-web-design/x-default-browser': 1.4.126
'@babel/core': 7.24.7
@@ -14386,7 +14477,7 @@ snapshots:
'@storybook/docs-mdx': 3.1.0-next.0
'@storybook/global': 5.0.0
'@storybook/manager': 8.1.9
- '@storybook/manager-api': 8.1.9(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/manager-api': 8.1.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@storybook/node-logger': 8.1.9
'@storybook/preview-api': 8.1.9
'@storybook/telemetry': 8.1.9(prettier@3.3.2)
@@ -14489,7 +14580,7 @@ snapshots:
'@storybook/global@5.0.0': {}
- '@storybook/icons@1.2.9(react-dom@18.3.1)(react@18.3.1)':
+ '@storybook/icons@1.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -14504,16 +14595,16 @@ snapshots:
'@vitest/utils': 1.6.0
util: 0.12.5
- '@storybook/manager-api@8.1.5(react-dom@18.3.1)(react@18.3.1)':
+ '@storybook/manager-api@8.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@storybook/channels': 8.1.5
'@storybook/client-logger': 8.1.5
'@storybook/core-events': 8.1.5
'@storybook/csf': 0.1.8
'@storybook/global': 5.0.0
- '@storybook/icons': 1.2.9(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/icons': 1.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@storybook/router': 8.1.5
- '@storybook/theming': 8.1.5(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/theming': 8.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@storybook/types': 8.1.5
dequal: 2.0.3
lodash: 4.17.21
@@ -14525,16 +14616,16 @@ snapshots:
- react
- react-dom
- '@storybook/manager-api@8.1.9(react-dom@18.3.1)(react@18.3.1)':
+ '@storybook/manager-api@8.1.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@storybook/channels': 8.1.9
'@storybook/client-logger': 8.1.9
'@storybook/core-events': 8.1.9
'@storybook/csf': 0.1.8
'@storybook/global': 5.0.0
- '@storybook/icons': 1.2.9(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/icons': 1.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@storybook/router': 8.1.9
- '@storybook/theming': 8.1.9(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/theming': 8.1.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@storybook/types': 8.1.9
dequal: 2.0.3
lodash: 4.17.21
@@ -14588,18 +14679,18 @@ snapshots:
'@storybook/preview@8.1.5': {}
- '@storybook/react-dom-shim@8.1.5(react-dom@18.3.1)(react@18.3.1)':
+ '@storybook/react-dom-shim@8.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@storybook/react-vite@8.1.5(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5)(vite@5.2.12)':
+ '@storybook/react-vite@8.1.5(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.18.0)(typescript@5.4.5)(vite@5.2.12(@types/node@20.14.1))':
dependencies:
- '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.1(typescript@5.4.5)(vite@5.2.12)
- '@rollup/pluginutils': 5.1.0
- '@storybook/builder-vite': 8.1.5(prettier@3.3.2)(typescript@5.4.5)(vite@5.2.12)
+ '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.1(typescript@5.4.5)(vite@5.2.12(@types/node@20.14.1))
+ '@rollup/pluginutils': 5.1.0(rollup@4.18.0)
+ '@storybook/builder-vite': 8.1.5(prettier@3.3.2)(typescript@5.4.5)(vite@5.2.12(@types/node@20.14.1))
'@storybook/node-logger': 8.1.5
- '@storybook/react': 8.1.5(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5)
+ '@storybook/react': 8.1.5(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)
'@storybook/types': 8.1.5
find-up: 5.0.0
magic-string: 0.30.10
@@ -14618,13 +14709,13 @@ snapshots:
- typescript
- vite-plugin-glimmerx
- '@storybook/react@8.1.5(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5)':
+ '@storybook/react@8.1.5(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)':
dependencies:
'@storybook/client-logger': 8.1.5
'@storybook/docs-tools': 8.1.5(prettier@3.3.2)
'@storybook/global': 5.0.0
'@storybook/preview-api': 8.1.5
- '@storybook/react-dom-shim': 8.1.5(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/react-dom-shim': 8.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@storybook/types': 8.1.5
'@types/escodegen': 0.0.6
'@types/estree': 0.0.51
@@ -14638,12 +14729,13 @@ snapshots:
prop-types: 15.8.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- react-element-to-jsx-string: 15.0.0(react-dom@18.3.1)(react@18.3.1)
+ react-element-to-jsx-string: 15.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
semver: 7.6.2
ts-dedent: 2.2.0
type-fest: 2.19.0
- typescript: 5.4.5
util-deprecate: 1.0.2
+ optionalDependencies:
+ typescript: 5.4.5
transitivePeerDependencies:
- encoding
- prettier
@@ -14676,7 +14768,7 @@ snapshots:
- prettier
- supports-color
- '@storybook/test-runner@0.18.2(@types/node@20.14.1)(prettier@3.3.2)':
+ '@storybook/test-runner@0.18.2(@swc/helpers@0.5.11)(@types/node@20.14.1)(babel-plugin-macros@3.1.0)(prettier@3.3.2)':
dependencies:
'@babel/core': 7.24.6
'@babel/generator': 7.24.6
@@ -14687,17 +14779,17 @@ snapshots:
'@storybook/csf': 0.1.8
'@storybook/csf-tools': 8.1.5
'@storybook/preview-api': 8.1.5
- '@swc/core': 1.5.7
- '@swc/jest': 0.2.36(@swc/core@1.5.7)
+ '@swc/core': 1.5.7(@swc/helpers@0.5.11)
+ '@swc/jest': 0.2.36(@swc/core@1.5.7(@swc/helpers@0.5.11))
expect-playwright: 0.8.0
- jest: 29.7.0(@types/node@20.14.1)
- jest-circus: 29.7.0
+ jest: 29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0)
+ jest-circus: 29.7.0(babel-plugin-macros@3.1.0)
jest-environment-node: 29.7.0
jest-junit: 16.0.0
- jest-playwright-preset: 4.0.0(jest-circus@29.7.0)(jest-environment-node@29.7.0)(jest-runner@29.7.0)(jest@29.7.0)
+ jest-playwright-preset: 4.0.0(jest-circus@29.7.0(babel-plugin-macros@3.1.0))(jest-environment-node@29.7.0)(jest-runner@29.7.0)(jest@29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0))
jest-runner: 29.7.0
jest-serializer-html: 7.1.0
- jest-watch-typeahead: 2.2.2(jest@29.7.0)
+ jest-watch-typeahead: 2.2.2(jest@29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0))
nyc: 15.1.0
playwright: 1.44.1
transitivePeerDependencies:
@@ -14711,14 +14803,14 @@ snapshots:
- supports-color
- ts-node
- '@storybook/test@8.1.5(jest@29.7.0)(vitest@1.6.0)':
+ '@storybook/test@8.1.5(@jest/globals@29.7.0)(jest@29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0))(vitest@1.6.0(@types/node@20.14.1)(@vitest/ui@1.6.0)(jsdom@24.1.0))':
dependencies:
'@storybook/client-logger': 8.1.5
'@storybook/core-events': 8.1.5
'@storybook/instrumenter': 8.1.5
'@storybook/preview-api': 8.1.5
'@testing-library/dom': 9.3.4
- '@testing-library/jest-dom': 6.4.5(jest@29.7.0)(vitest@1.6.0)
+ '@testing-library/jest-dom': 6.4.5(@jest/globals@29.7.0)(jest@29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0))(vitest@1.6.0(@types/node@20.14.1)(@vitest/ui@1.6.0)(jsdom@24.1.0))
'@testing-library/user-event': 14.5.2(@testing-library/dom@9.3.4)
'@vitest/expect': 1.3.1
'@vitest/spy': 1.6.0
@@ -14730,21 +14822,23 @@ snapshots:
- jest
- vitest
- '@storybook/theming@8.1.5(react-dom@18.3.1)(react@18.3.1)':
+ '@storybook/theming@8.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1)
'@storybook/client-logger': 8.1.5
'@storybook/global': 5.0.0
memoizerific: 1.11.3
+ optionalDependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@storybook/theming@8.1.9(react-dom@18.3.1)(react@18.3.1)':
+ '@storybook/theming@8.1.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1)
'@storybook/client-logger': 8.1.9
'@storybook/global': 5.0.0
memoizerific: 1.11.3
+ optionalDependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -14849,7 +14943,7 @@ snapshots:
'@swc/core-win32-x64-msvc@1.5.7':
optional: true
- '@swc/core@1.5.24':
+ '@swc/core@1.5.24(@swc/helpers@0.5.11)':
dependencies:
'@swc/counter': 0.1.3
'@swc/types': 0.1.7
@@ -14864,8 +14958,9 @@ snapshots:
'@swc/core-win32-arm64-msvc': 1.5.24
'@swc/core-win32-ia32-msvc': 1.5.24
'@swc/core-win32-x64-msvc': 1.5.24
+ '@swc/helpers': 0.5.11
- '@swc/core@1.5.7':
+ '@swc/core@1.5.7(@swc/helpers@0.5.11)':
dependencies:
'@swc/counter': 0.1.3
'@swc/types': 0.1.7
@@ -14880,6 +14975,7 @@ snapshots:
'@swc/core-win32-arm64-msvc': 1.5.7
'@swc/core-win32-ia32-msvc': 1.5.7
'@swc/core-win32-x64-msvc': 1.5.7
+ '@swc/helpers': 0.5.11
'@swc/counter@0.1.3': {}
@@ -14887,10 +14983,10 @@ snapshots:
dependencies:
tslib: 2.6.2
- '@swc/jest@0.2.36(@swc/core@1.5.7)':
+ '@swc/jest@0.2.36(@swc/core@1.5.7(@swc/helpers@0.5.11))':
dependencies:
'@jest/create-cache-key-function': 29.7.0
- '@swc/core': 1.5.7
+ '@swc/core': 1.5.7(@swc/helpers@0.5.11)
'@swc/counter': 0.1.3
jsonc-parser: 3.2.1
@@ -14924,23 +15020,23 @@ snapshots:
'@tanstack/query-core': 5.40.0
react: 18.3.1
- '@tanstack/react-router@1.34.9(react-dom@18.3.1)(react@18.3.1)':
+ '@tanstack/react-router@1.34.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@tanstack/history': 1.31.16
- '@tanstack/react-store': 0.2.1(react-dom@18.3.1)(react@18.3.1)
+ '@tanstack/react-store': 0.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
- '@tanstack/react-store@0.2.1(react-dom@18.3.1)(react@18.3.1)':
+ '@tanstack/react-store@0.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@tanstack/store': 0.1.3
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
use-sync-external-store: 1.2.2(react@18.3.1)
- '@tanstack/react-table@8.17.3(react-dom@18.3.1)(react@18.3.1)':
+ '@tanstack/react-table@8.17.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@tanstack/table-core': 8.17.3
react: 18.3.1
@@ -14957,7 +15053,7 @@ snapshots:
prettier: 3.3.0
zod: 3.23.8
- '@tanstack/router-vite-plugin@1.34.8(vite@5.2.12)':
+ '@tanstack/router-vite-plugin@1.34.8(vite@5.2.12(@types/node@20.14.1))':
dependencies:
'@babel/core': 7.24.6
'@babel/generator': 7.24.6
@@ -14973,7 +15069,7 @@ snapshots:
'@types/babel__generator': 7.6.8
'@types/babel__template': 7.4.4
'@types/babel__traverse': 7.20.6
- '@vitejs/plugin-react': 4.3.0(vite@5.2.12)
+ '@vitejs/plugin-react': 4.3.0(vite@5.2.12(@types/node@20.14.1))
zod: 3.23.8
transitivePeerDependencies:
- supports-color
@@ -14983,17 +15079,6 @@ snapshots:
'@tanstack/table-core@8.17.3': {}
- '@testing-library/dom@10.1.0':
- dependencies:
- '@babel/code-frame': 7.24.7
- '@babel/runtime': 7.24.7
- '@types/aria-query': 5.0.4
- aria-query: 5.3.0
- chalk: 4.1.2
- dom-accessibility-api: 0.5.16
- lz-string: 1.5.0
- pretty-format: 27.5.1
-
'@testing-library/dom@9.3.4':
dependencies:
'@babel/code-frame': 7.24.6
@@ -15005,7 +15090,7 @@ snapshots:
lz-string: 1.5.0
pretty-format: 27.5.1
- '@testing-library/jest-dom@6.4.5(jest@29.7.0)(vitest@1.6.0)':
+ '@testing-library/jest-dom@6.4.5(@jest/globals@29.7.0)(jest@29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0))(vitest@1.6.0(@types/node@20.14.1)(@vitest/ui@1.6.0)(jsdom@24.1.0))':
dependencies:
'@adobe/css-tools': 4.3.3
'@babel/runtime': 7.24.6
@@ -15013,12 +15098,14 @@ snapshots:
chalk: 3.0.0
css.escape: 1.5.1
dom-accessibility-api: 0.6.3
- jest: 29.7.0(@types/node@20.14.1)
lodash: 4.17.21
redent: 3.0.0
+ optionalDependencies:
+ '@jest/globals': 29.7.0
+ jest: 29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0)
vitest: 1.6.0(@types/node@20.14.1)(@vitest/ui@1.6.0)(jsdom@24.1.0)
- '@testing-library/react@14.3.1(react-dom@18.3.1)(react@18.3.1)':
+ '@testing-library/react@14.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.24.6
'@testing-library/dom': 9.3.4
@@ -15026,10 +15113,6 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@testing-library/user-event@14.5.2(@testing-library/dom@10.1.0)':
- dependencies:
- '@testing-library/dom': 10.1.0
-
'@testing-library/user-event@14.5.2(@testing-library/dom@9.3.4)':
dependencies:
'@testing-library/dom': 9.3.4
@@ -15275,7 +15358,7 @@ snapshots:
dependencies:
'@types/yargs-parser': 21.0.3
- '@typescript-eslint/eslint-plugin@7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.4.5)':
+ '@typescript-eslint/eslint-plugin@7.12.0(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)':
dependencies:
'@eslint-community/regexpp': 4.10.1
'@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.4.5)
@@ -15288,6 +15371,7 @@ snapshots:
ignore: 5.3.1
natural-compare: 1.4.0
ts-api-utils: 1.3.0(typescript@5.4.5)
+ optionalDependencies:
typescript: 5.4.5
transitivePeerDependencies:
- supports-color
@@ -15300,6 +15384,7 @@ snapshots:
'@typescript-eslint/visitor-keys': 7.12.0
debug: 4.3.5
eslint: 8.57.0
+ optionalDependencies:
typescript: 5.4.5
transitivePeerDependencies:
- supports-color
@@ -15321,6 +15406,7 @@ snapshots:
debug: 4.3.5
eslint: 8.57.0
ts-api-utils: 1.3.0(typescript@5.4.5)
+ optionalDependencies:
typescript: 5.4.5
transitivePeerDependencies:
- supports-color
@@ -15338,6 +15424,7 @@ snapshots:
is-glob: 4.0.3
semver: 7.6.2
tsutils: 3.21.0(typescript@5.4.5)
+ optionalDependencies:
typescript: 5.4.5
transitivePeerDependencies:
- supports-color
@@ -15352,6 +15439,7 @@ snapshots:
minimatch: 9.0.4
semver: 7.6.2
ts-api-utils: 1.3.0(typescript@5.4.5)
+ optionalDependencies:
typescript: 5.4.5
transitivePeerDependencies:
- supports-color
@@ -15392,7 +15480,7 @@ snapshots:
'@typescript-eslint/types': 7.12.0
eslint-visitor-keys: 3.4.3
- '@uidotdev/usehooks@2.4.1(react-dom@18.3.1)(react@18.3.1)':
+ '@uidotdev/usehooks@2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -15472,14 +15560,14 @@ snapshots:
d3-time-format: 4.1.0
internmap: 2.0.3
- '@vitejs/plugin-react-swc@3.7.0(vite@5.2.12)':
+ '@vitejs/plugin-react-swc@3.7.0(@swc/helpers@0.5.11)(vite@5.2.12(@types/node@20.14.1))':
dependencies:
- '@swc/core': 1.5.24
+ '@swc/core': 1.5.24(@swc/helpers@0.5.11)
vite: 5.2.12(@types/node@20.14.1)
transitivePeerDependencies:
- '@swc/helpers'
- '@vitejs/plugin-react@4.3.0(vite@5.2.12)':
+ '@vitejs/plugin-react@4.3.0(vite@5.2.12(@types/node@20.14.1))':
dependencies:
'@babel/core': 7.24.6
'@babel/plugin-transform-react-jsx-self': 7.24.6(@babel/core@7.24.6)
@@ -15490,7 +15578,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@vitest/coverage-istanbul@1.6.0(vitest@1.6.0)':
+ '@vitest/coverage-istanbul@1.6.0(vitest@1.6.0(@types/node@20.14.1)(@vitest/ui@1.6.0)(jsdom@24.1.0))':
dependencies:
debug: 4.3.5
istanbul-lib-coverage: 3.2.2
@@ -15730,13 +15818,13 @@ snapshots:
dependencies:
'@babel/core': 7.24.7
- babel-jest@29.7.0(@babel/core@7.24.6):
+ babel-jest@29.7.0(@babel/core@7.24.7):
dependencies:
- '@babel/core': 7.24.6
+ '@babel/core': 7.24.7
'@jest/transform': 29.7.0
'@types/babel__core': 7.20.5
babel-plugin-istanbul: 6.1.1
- babel-preset-jest: 29.6.3(@babel/core@7.24.6)
+ babel-preset-jest: 29.6.3(@babel/core@7.24.7)
chalk: 4.1.2
graceful-fs: 4.2.11
slash: 3.0.0
@@ -15761,8 +15849,8 @@ snapshots:
babel-plugin-jest-hoist@29.6.3:
dependencies:
- '@babel/template': 7.24.6
- '@babel/types': 7.24.6
+ '@babel/template': 7.24.7
+ '@babel/types': 7.24.7
'@types/babel__core': 7.20.5
'@types/babel__traverse': 7.20.6
@@ -15812,11 +15900,27 @@ snapshots:
'@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.6)
'@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.6)
- babel-preset-jest@29.6.3(@babel/core@7.24.6):
+ babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.7):
dependencies:
- '@babel/core': 7.24.6
+ '@babel/core': 7.24.7
+ '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7)
+ '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.7)
+ '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.7)
+ '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7)
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7)
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.7)
+
+ babel-preset-jest@29.6.3(@babel/core@7.24.7):
+ dependencies:
+ '@babel/core': 7.24.7
babel-plugin-jest-hoist: 29.6.3
- babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.6)
+ babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.7)
balanced-match@0.4.2: {}
@@ -16052,10 +16156,10 @@ snapshots:
clsx@2.1.1: {}
- cmdk@1.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1):
+ cmdk@1.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
- '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
transitivePeerDependencies:
@@ -16164,13 +16268,13 @@ snapshots:
path-type: 4.0.0
yaml: 1.10.2
- create-jest@29.7.0(@types/node@20.14.1):
+ create-jest@29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0):
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
- jest-config: 29.7.0(@types/node@20.14.1)
+ jest-config: 29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0)
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -16279,7 +16383,9 @@ snapshots:
decimal.js@10.4.3: {}
- dedent@1.5.3: {}
+ dedent@1.5.3(babel-plugin-macros@3.1.0):
+ optionalDependencies:
+ babel-plugin-macros: 3.1.0
deep-eql@4.1.3:
dependencies:
@@ -16552,6 +16658,18 @@ snapshots:
optionalDependencies:
source-map: 0.6.1
+ eslint-plugin-react-compiler@0.0.0-experimental-0998c1e-20240625(eslint@8.57.0):
+ dependencies:
+ '@babel/core': 7.24.7
+ '@babel/parser': 7.24.7
+ '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.24.7)
+ eslint: 8.57.0
+ hermes-parser: 0.20.1
+ zod: 3.23.8
+ zod-validation-error: 3.3.0(zod@3.23.8)
+ transitivePeerDependencies:
+ - supports-color
+
eslint-plugin-react-hooks@4.6.2(eslint@8.57.0):
dependencies:
eslint: 8.57.0
@@ -16874,11 +16992,13 @@ snapshots:
fraction.js@4.3.7: {}
- framer-motion@11.2.10(react-dom@18.3.1)(react@18.3.1):
+ framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
+ tslib: 2.6.2
+ optionalDependencies:
+ '@emotion/is-prop-valid': 1.2.2
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- tslib: 2.6.2
fresh@0.5.2: {}
@@ -16921,7 +17041,7 @@ snapshots:
get-caller-file@2.0.5: {}
get-dom-document@0.1.3(jsdom@24.1.0):
- dependencies:
+ optionalDependencies:
jsdom: 24.1.0
get-func-name@2.0.2: {}
@@ -17102,6 +17222,12 @@ snapshots:
property-information: 5.6.0
space-separated-tokens: 1.1.5
+ hermes-estree@0.20.1: {}
+
+ hermes-parser@0.20.1:
+ dependencies:
+ hermes-estree: 0.20.1
+
hoist-non-react-statics@3.3.2:
dependencies:
react-is: 16.13.1
@@ -17415,7 +17541,7 @@ snapshots:
istanbul-lib-instrument@5.2.1:
dependencies:
- '@babel/core': 7.24.6
+ '@babel/core': 7.24.7
'@babel/parser': 7.24.7
'@istanbuljs/schema': 0.1.3
istanbul-lib-coverage: 3.2.2
@@ -17488,7 +17614,7 @@ snapshots:
jest-util: 29.7.0
p-limit: 3.1.0
- jest-circus@29.7.0:
+ jest-circus@29.7.0(babel-plugin-macros@3.1.0):
dependencies:
'@jest/environment': 29.7.0
'@jest/expect': 29.7.0
@@ -17497,7 +17623,7 @@ snapshots:
'@types/node': 20.14.1
chalk: 4.1.2
co: 4.6.0
- dedent: 1.5.3
+ dedent: 1.5.3(babel-plugin-macros@3.1.0)
is-generator-fn: 2.1.0
jest-each: 29.7.0
jest-matcher-utils: 29.7.0
@@ -17514,16 +17640,16 @@ snapshots:
- babel-plugin-macros
- supports-color
- jest-cli@29.7.0(@types/node@20.14.1):
+ jest-cli@29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0):
dependencies:
- '@jest/core': 29.7.0
+ '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
- create-jest: 29.7.0(@types/node@20.14.1)
+ create-jest: 29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0)
exit: 0.1.2
import-local: 3.1.0
- jest-config: 29.7.0(@types/node@20.14.1)
+ jest-config: 29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0)
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@@ -17533,19 +17659,18 @@ snapshots:
- supports-color
- ts-node
- jest-config@29.7.0(@types/node@20.14.1):
+ jest-config@29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0):
dependencies:
- '@babel/core': 7.24.6
+ '@babel/core': 7.24.7
'@jest/test-sequencer': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.14.1
- babel-jest: 29.7.0(@babel/core@7.24.6)
+ babel-jest: 29.7.0(@babel/core@7.24.7)
chalk: 4.1.2
ci-info: 3.9.0
deepmerge: 4.3.1
glob: 7.2.3
graceful-fs: 4.2.11
- jest-circus: 29.7.0
+ jest-circus: 29.7.0(babel-plugin-macros@3.1.0)
jest-environment-node: 29.7.0
jest-get-type: 29.6.3
jest-regex-util: 29.6.3
@@ -17558,6 +17683,8 @@ snapshots:
pretty-format: 29.7.0
slash: 3.0.0
strip-json-comments: 3.1.1
+ optionalDependencies:
+ '@types/node': 20.14.1
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@@ -17645,11 +17772,11 @@ snapshots:
'@types/node': 20.14.1
jest-util: 29.7.0
- jest-playwright-preset@4.0.0(jest-circus@29.7.0)(jest-environment-node@29.7.0)(jest-runner@29.7.0)(jest@29.7.0):
+ jest-playwright-preset@4.0.0(jest-circus@29.7.0(babel-plugin-macros@3.1.0))(jest-environment-node@29.7.0)(jest-runner@29.7.0)(jest@29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0)):
dependencies:
expect-playwright: 0.8.0
- jest: 29.7.0(@types/node@20.14.1)
- jest-circus: 29.7.0
+ jest: 29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0)
+ jest-circus: 29.7.0(babel-plugin-macros@3.1.0)
jest-environment-node: 29.7.0
jest-process-manager: 0.4.0
jest-runner: 29.7.0
@@ -17662,7 +17789,7 @@ snapshots:
- supports-color
jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
- dependencies:
+ optionalDependencies:
jest-resolve: 29.7.0
jest-process-manager@0.4.0:
@@ -17802,11 +17929,11 @@ snapshots:
leven: 3.1.0
pretty-format: 29.7.0
- jest-watch-typeahead@2.2.2(jest@29.7.0):
+ jest-watch-typeahead@2.2.2(jest@29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0)):
dependencies:
ansi-escapes: 6.2.1
chalk: 5.3.0
- jest: 29.7.0(@types/node@20.14.1)
+ jest: 29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0)
jest-regex-util: 29.6.3
jest-watcher: 29.7.0
slash: 5.1.0
@@ -17831,12 +17958,12 @@ snapshots:
merge-stream: 2.0.0
supports-color: 8.1.1
- jest@29.7.0(@types/node@20.14.1):
+ jest@29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0):
dependencies:
- '@jest/core': 29.7.0
+ '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)
'@jest/types': 29.6.3
import-local: 3.1.0
- jest-cli: 29.7.0(@types/node@20.14.1)
+ jest-cli: 29.7.0(@types/node@20.14.1)(babel-plugin-macros@3.1.0)
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@@ -17868,7 +17995,7 @@ snapshots:
dependencies:
argparse: 2.0.1
- jscodeshift@0.15.2(@babel/preset-env@7.24.7):
+ jscodeshift@0.15.2(@babel/preset-env@7.24.7(@babel/core@7.24.7)):
dependencies:
'@babel/core': 7.24.7
'@babel/parser': 7.24.7
@@ -17877,7 +18004,6 @@ snapshots:
'@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.7)
'@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.24.7)
'@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.7)
- '@babel/preset-env': 7.24.7(@babel/core@7.24.7)
'@babel/preset-flow': 7.24.7(@babel/core@7.24.7)
'@babel/preset-typescript': 7.24.7(@babel/core@7.24.7)
'@babel/register': 7.24.6(@babel/core@7.24.7)
@@ -17891,6 +18017,8 @@ snapshots:
recast: 0.23.9
temp: 0.8.4
write-file-atomic: 2.4.3
+ optionalDependencies:
+ '@babel/preset-env': 7.24.7(@babel/core@7.24.7)
transitivePeerDependencies:
- supports-color
@@ -18199,7 +18327,7 @@ snapshots:
neo-async@2.6.2: {}
- next-themes@0.3.0(react-dom@18.3.1)(react@18.3.1):
+ next-themes@0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -18531,8 +18659,9 @@ snapshots:
postcss-load-config@4.0.2(postcss@8.4.38):
dependencies:
lilconfig: 3.1.1
- postcss: 8.4.38
yaml: 2.4.3
+ optionalDependencies:
+ postcss: 8.4.38
postcss-nested@6.0.1(postcss@8.4.38):
dependencies:
@@ -18782,7 +18911,7 @@ snapshots:
iconv-lite: 0.4.24
unpipe: 1.0.0
- react-colorful@5.6.1(react-dom@18.3.1)(react@18.3.1):
+ react-colorful@5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -18828,7 +18957,7 @@ snapshots:
react: 18.3.1
scheduler: 0.23.2
- react-element-to-jsx-string@15.0.0(react-dom@18.3.1)(react@18.3.1):
+ react-element-to-jsx-string@15.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
'@base2/pretty-print-object': 1.0.1
is-plain-object: 5.0.0
@@ -18840,12 +18969,13 @@ snapshots:
dependencies:
react: 18.3.1
- react-i18next@14.1.2(i18next@23.11.5)(react-dom@18.3.1)(react@18.3.1):
+ react-i18next@14.1.2(i18next@23.11.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
'@babel/runtime': 7.24.6
html-parse-stringify: 3.0.1
i18next: 23.11.5
react: 18.3.1
+ optionalDependencies:
react-dom: 18.3.1(react@18.3.1)
react-is@16.13.1: {}
@@ -18866,47 +18996,51 @@ snapshots:
react-remove-scroll-bar@2.3.6(@types/react@18.3.3)(react@18.3.1):
dependencies:
- '@types/react': 18.3.3
react: 18.3.1
react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1)
tslib: 2.6.2
+ optionalDependencies:
+ '@types/react': 18.3.3
react-remove-scroll@2.5.10(@types/react@18.3.3)(react@18.3.1):
dependencies:
- '@types/react': 18.3.3
react: 18.3.1
react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1)
react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1)
tslib: 2.6.2
use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1)
use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
react-remove-scroll@2.5.5(@types/react@18.3.3)(react@18.3.1):
dependencies:
- '@types/react': 18.3.3
react: 18.3.1
react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1)
react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1)
tslib: 2.6.2
use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1)
use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
- react-resizable-panels@2.0.19(react-dom@18.3.1)(react@18.3.1):
+ react-resizable-panels@2.0.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- react-simple-animate@3.5.2(react-dom@18.3.1):
+ react-simple-animate@3.5.2(react-dom@18.3.1(react@18.3.1)):
dependencies:
react-dom: 18.3.1(react@18.3.1)
react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1):
dependencies:
- '@types/react': 18.3.3
get-nonce: 1.0.1
invariant: 2.2.4
react: 18.3.1
tslib: 2.6.2
+ optionalDependencies:
+ '@types/react': 18.3.3
react-textarea-autosize@8.5.3(@types/react@18.3.3)(react@18.3.1):
dependencies:
@@ -18917,7 +19051,7 @@ snapshots:
transitivePeerDependencies:
- '@types/react'
- react-use-websocket@4.8.1(react-dom@18.3.1)(react@18.3.1):
+ react-use-websocket@4.8.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -19045,7 +19179,7 @@ snapshots:
dependencies:
es6-error: 4.1.1
- remirror@2.0.39(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0):
+ remirror@2.0.39(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)(prettier@3.3.2):
dependencies:
'@babel/runtime': 7.24.6
'@remirror/core': 2.0.19(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)
@@ -19060,7 +19194,7 @@ snapshots:
'@remirror/extension-bold': 2.0.13(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)
'@remirror/extension-callout': 2.0.15(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)
'@remirror/extension-code': 2.0.13(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)
- '@remirror/extension-code-block': 2.0.18(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)
+ '@remirror/extension-code-block': 2.0.18(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)(prettier@3.3.2)
'@remirror/extension-codemirror5': 2.0.13(@remirror/pm@2.0.8)(@types/codemirror@5.60.15)(@types/node@20.14.1)(codemirror@5.65.16)(jsdom@24.1.0)
'@remirror/extension-collaboration': 2.0.13(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)
'@remirror/extension-columns': 2.0.14(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)
@@ -19108,13 +19242,15 @@ snapshots:
'@remirror/pm': 2.0.8
'@remirror/preset-core': 2.0.16(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)
'@remirror/preset-formatting': 2.0.14(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)
- '@remirror/preset-wysiwyg': 2.0.19(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)
+ '@remirror/preset-wysiwyg': 2.0.19(@remirror/pm@2.0.8)(@types/node@20.14.1)(jsdom@24.1.0)(prettier@3.3.2)
'@remirror/theme': 2.0.9(@remirror/pm@2.0.8)
'@types/codemirror': 5.60.15
'@types/refractor': 3.4.1
codemirror: 5.65.16
refractor: 3.6.0
yjs: 13.6.15
+ optionalDependencies:
+ prettier: 3.3.2
transitivePeerDependencies:
- '@types/node'
- jsdom
@@ -19326,7 +19462,7 @@ snapshots:
slash@5.1.0: {}
- sonner@1.4.41(react-dom@18.3.1)(react@18.3.1):
+ sonner@1.4.41(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -19403,9 +19539,9 @@ snapshots:
store2@2.14.3: {}
- storybook@8.1.9(react-dom@18.3.1)(react@18.3.1):
+ storybook@8.1.9(@babel/preset-env@7.24.7(@babel/core@7.24.7))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
- '@storybook/cli': 8.1.9(react-dom@18.3.1)(react@18.3.1)
+ '@storybook/cli': 8.1.9(@babel/preset-env@7.24.7(@babel/core@7.24.7))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
transitivePeerDependencies:
- '@babel/preset-env'
- bufferutil
@@ -19672,7 +19808,7 @@ snapshots:
ts-interface-checker@0.1.13: {}
tsconfck@3.1.0(typescript@5.4.5):
- dependencies:
+ optionalDependencies:
typescript: 5.4.5
tsconfig-paths@4.2.0:
@@ -19808,9 +19944,10 @@ snapshots:
use-callback-ref@1.3.2(@types/react@18.3.3)(react@18.3.1):
dependencies:
- '@types/react': 18.3.3
react: 18.3.1
tslib: 2.6.2
+ optionalDependencies:
+ '@types/react': 18.3.3
use-composed-ref@1.3.0(react@18.3.1):
dependencies:
@@ -19824,21 +19961,24 @@ snapshots:
use-isomorphic-layout-effect@1.1.2(@types/react@18.3.3)(react@18.3.1):
dependencies:
- '@types/react': 18.3.3
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.3
use-latest@1.2.1(@types/react@18.3.3)(react@18.3.1):
dependencies:
- '@types/react': 18.3.3
react: 18.3.1
use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.3)(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1):
dependencies:
- '@types/react': 18.3.3
detect-node-es: 1.1.0
react: 18.3.1
tslib: 2.6.2
+ optionalDependencies:
+ '@types/react': 18.3.3
use-sync-external-store@1.2.0(react@18.3.1):
dependencies:
@@ -19877,9 +20017,9 @@ snapshots:
vary@1.1.2: {}
- vaul@0.9.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1):
+ vaul@0.9.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
- '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
transitivePeerDependencies:
@@ -19903,11 +20043,12 @@ snapshots:
- supports-color
- terser
- vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@5.2.12):
+ vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@5.2.12(@types/node@20.14.1)):
dependencies:
debug: 4.3.5
globrex: 0.1.2
tsconfck: 3.1.0(typescript@5.4.5)
+ optionalDependencies:
vite: 5.2.12(@types/node@20.14.1)
transitivePeerDependencies:
- supports-color
@@ -19915,27 +20056,24 @@ snapshots:
vite@5.2.12(@types/node@20.14.1):
dependencies:
- '@types/node': 20.14.1
esbuild: 0.20.2
postcss: 8.4.38
rollup: 4.18.0
optionalDependencies:
+ '@types/node': 20.14.1
fsevents: 2.3.3
vitest@1.6.0(@types/node@20.14.1)(@vitest/ui@1.6.0)(jsdom@24.1.0):
dependencies:
- '@types/node': 20.14.1
'@vitest/expect': 1.6.0
'@vitest/runner': 1.6.0
'@vitest/snapshot': 1.6.0
'@vitest/spy': 1.6.0
- '@vitest/ui': 1.6.0(vitest@1.6.0)
'@vitest/utils': 1.6.0
acorn-walk: 8.3.2
chai: 4.4.1
debug: 4.3.5
execa: 8.0.1
- jsdom: 24.1.0
local-pkg: 0.5.0
magic-string: 0.30.10
pathe: 1.1.2
@@ -19947,6 +20085,10 @@ snapshots:
vite: 5.2.12(@types/node@20.14.1)
vite-node: 1.6.0(@types/node@20.14.1)
why-is-node-running: 2.2.2
+ optionalDependencies:
+ '@types/node': 20.14.1
+ '@vitest/ui': 1.6.0(vitest@1.6.0)
+ jsdom: 24.1.0
transitivePeerDependencies:
- less
- lightningcss
@@ -20109,7 +20251,7 @@ snapshots:
xtend@4.0.2: {}
- y-prosemirror@1.2.5(prosemirror-model@1.21.1)(prosemirror-state@1.4.3)(prosemirror-view@1.33.7)(y-protocols@1.0.6)(yjs@13.6.15):
+ y-prosemirror@1.2.5(prosemirror-model@1.21.1)(prosemirror-state@1.4.3)(prosemirror-view@1.33.7)(y-protocols@1.0.6(yjs@13.6.15))(yjs@13.6.15):
dependencies:
lib0: 0.2.94
prosemirror-model: 1.21.1
@@ -20174,10 +20316,15 @@ snapshots:
yocto-queue@1.0.0: {}
+ zod-validation-error@3.3.0(zod@3.23.8):
+ dependencies:
+ zod: 3.23.8
+
zod@3.23.8: {}
zustand@4.5.2(@types/react@18.3.3)(react@18.3.1):
dependencies:
+ use-sync-external-store: 1.2.0(react@18.3.1)
+ optionalDependencies:
'@types/react': 18.3.3
react: 18.3.1
- use-sync-external-store: 1.2.0(react@18.3.1)
diff --git a/dashboard/public/locales/en.json b/dashboard/public/locales/en.json
@@ -38,6 +38,13 @@
"mux": "Mux",
"fragment": "Fragment",
"enable": "Enable",
+ "enabled": "Enabled",
+ "activated": "Activated",
+ "unlimited": "Unlimited",
+ "left": "Left",
+ "reached": "Reached",
+ "inactive": "Inactive",
+ "active": "Active",
"disable": "Disable",
"close": "Close",
"save": "Save",
@@ -140,6 +147,7 @@
}
},
"users": {
+ "data_limit_reached": "Data Limit Reached",
"note-placeholder": "Additional information about user",
"data_limit": "Data Limit",
"traffic": "Traffic",
@@ -148,15 +156,16 @@
"online_at": "Last Use",
"expire_date": "Expire Date",
"unlimited": "Unlimited",
+ "never": "Never",
"limited": "Limited",
"data_limit_method": "Data Limit",
- "determined_expire": "Determined",
+ "fixed_date": "Fixed Date",
"expire_method": "Expiration",
- "onhold_expire": "On Hold",
+ "on_first_use": "On first use",
"reset_usage": "Reset Usage",
"revoke_subscription": "Revoke Subscription",
- "on_hold_expire_duration": "On Hold",
- "on_hold_timeout": "On Hold Timeout",
+ "usage_duration": "Usage Duration",
+ "activation_deadline": "Activation Deadline",
"settings": {
"subscription_link": {
"copied": "Subscription Link Copied",
diff --git a/dashboard/src/components/awaiting/index.tsx b/dashboard/src/components/awaiting/index.tsx
@@ -1,10 +1,10 @@
import { type FC } from "react";
interface AwaitingProps {
- isFetching: boolean;
- isNotFound: boolean;
- NotFound: JSX.Element;
- Skeleton: JSX.Element;
+ isFetching?: boolean;
+ isNotFound?: boolean;
+ NotFound?: JSX.Element;
+ Skeleton?: JSX.Element;
Component: JSX.Element;
}
diff --git a/dashboard/src/components/boolean-pill/index.tsx b/dashboard/src/components/boolean-pill/index.tsx
@@ -0,0 +1,16 @@
+import type { FC } from "react";
+import { Badge } from "@marzneshin/components";
+
+interface BooleanPillProps {
+ active: boolean;
+ activeLabel: string;
+ inactiveLabel: string;
+}
+
+export const BooleanPill: FC<BooleanPillProps> = ({ active, activeLabel, inactiveLabel }) => {
+ return (
+ <Badge variant={active ? "positive" : "destructive"}>
+ {active ? activeLabel : inactiveLabel}
+ </Badge>
+ )
+}
diff --git a/dashboard/src/components/index.ts b/dashboard/src/components/index.ts
@@ -14,3 +14,5 @@ export * from "./loading";
export * from "./entity-field-card";
export * from "./logo";
export * from "./awaiting";
+export * from "./boolean-pill";
+export * from "./info-table";
diff --git a/dashboard/src/components/info-table/circular-progress-bar.tsx b/dashboard/src/components/info-table/circular-progress-bar.tsx
@@ -0,0 +1,23 @@
+import { CircularProgress } from "@nextui-org/progress";
+import {
+ TableCell,
+ TableRow,
+} from "@marzneshin/components";
+import { useTranslation } from "react-i18next";
+import type { FC } from "react";
+
+export const CircularProgressBarRow: FC<{
+ label: string;
+ value: number;
+ limit: number | undefined;
+}> = ({ label, value, limit }) => {
+ const { t } = useTranslation()
+ return (
+ <TableRow>
+ <TableCell>{label}</TableCell>
+ <TableCell>
+ {limit ? <CircularProgress size="sm" value={(value / limit) * 100} /> : t("unlimited")}
+ </TableCell>
+ </TableRow>
+ )
+};
diff --git a/dashboard/src/components/info-table/date-table-row.tsx b/dashboard/src/components/info-table/date-table-row.tsx
@@ -0,0 +1,14 @@
+import { FC } from "react";
+import { TableRowWithCell } from "./table-row-with-cell";
+import { format, isValid } from "date-fns";
+
+export const DateTableRow: FC<{ label: string; date?: Date | null | string }> = ({
+ label,
+ date,
+}) => {
+ let formattedDate = "";
+ if (date && isValid(new Date(date))) {
+ formattedDate = format(date, "PPP");
+ }
+ return <TableRowWithCell label={label} value={formattedDate} />;
+};
diff --git a/dashboard/src/components/info-table/index.ts b/dashboard/src/components/info-table/index.ts
@@ -0,0 +1,3 @@
+export * from "./date-table-row"
+export * from "./table-row-with-cell"
+export * from "./circular-progress-bar"
diff --git a/dashboard/src/components/info-table/table-row-with-cell.tsx b/dashboard/src/components/info-table/table-row-with-cell.tsx
@@ -0,0 +1,15 @@
+import {
+ TableCell,
+ TableRow,
+} from "@marzneshin/components";
+import { FC } from "react";
+
+export const TableRowWithCell: FC<{
+ label: string;
+ value?: string | number | JSX.Element | null;
+}> = ({ label, value }) => (
+ <TableRow>
+ <TableCell>{label}</TableCell>
+ <TableCell>{value}</TableCell>
+ </TableRow>
+);
diff --git a/dashboard/src/features/hosts/dialogs/settings/index.tsx b/dashboard/src/features/hosts/dialogs/settings/index.tsx
@@ -6,9 +6,7 @@ import {
SheetTitle,
Table,
TableBody,
- TableCell,
- TableHead,
- TableRow,
+ TableRowWithCell,
} from "@marzneshin/components"
import { useTranslation } from "react-i18next"
import { HostType } from "../.."
@@ -37,62 +35,13 @@ export const HostSettingsDialog: FC<HostsSettingsDialogProps> = ({ onOpenChange,
</SheetHeader>
<Table>
<TableBody>
- <TableRow>
- <TableHead>
- {t('remark')}
- </TableHead>
- <TableCell>
- {entity.remark}
- </TableCell>
- </TableRow>
- <TableRow>
- <TableHead>
- {t('address')}
- </TableHead>
- <TableCell>
- {entity.address}
- </TableCell>
- </TableRow>
- <TableRow>
- <TableHead>
- {t('port')}
- </TableHead>
- <TableCell>
- {entity.port}
- </TableCell>
- </TableRow>
- <TableRow>
- <TableHead>
- {t('host')}
- </TableHead>
- <TableCell>
- {entity.host}
- </TableCell>
- </TableRow>
- <TableRow>
- <TableHead>
- {t('path')}
- </TableHead>
- <TableCell>
- {entity.path}
- </TableCell>
- </TableRow>
- <TableRow>
- <TableHead>
- {t('sni')}
- </TableHead>
- <TableCell>
- {entity.sni}
- </TableCell>
- </TableRow>
- <TableRow>
- <TableHead>
- {t('alpn')}
- </TableHead>
- <TableCell>
- {entity.alpn}
- </TableCell>
- </TableRow>
+ <TableRowWithCell label={t('remark')} value={entity.remark} />
+ <TableRowWithCell label={t('address')} value={entity.address} />
+ <TableRowWithCell label={t('port')} value={entity.port} />
+ <TableRowWithCell label={t('host')} value={entity.host} />
+ <TableRowWithCell label={t('path')} value={entity.path} />
+ <TableRowWithCell label={t('sni')} value={entity.sni} />
+ <TableRowWithCell label={t('alpn')} value={entity.alpn} />
</TableBody>
</Table>
</SheetContent>
diff --git a/dashboard/src/features/services/tables/users/columns.tsx b/dashboard/src/features/services/tables/users/columns.tsx
@@ -3,11 +3,12 @@ import { DataTableColumnHeader } from "@marzneshin/components/data-table/column-
import i18n from "@marzneshin/features/i18n"
import {
UserType,
- UsersStatus,
- UsersStatusBadge
+ UserActivatedPill,
+ UserEnabledPill,
+ UserExpirationValue,
+ userTrafficSortingFn,
} from "@marzneshin/features/users"
import { CircularProgress } from "@nextui-org/progress";
-import { format } from "date-fns";
import { Badge } from "@marzneshin/components";
export const columns: ColumnDef<UserType>[] = [
@@ -16,9 +17,24 @@ export const columns: ColumnDef<UserType>[] = [
header: ({ column }) => <DataTableColumnHeader title={i18n.t('username')} column={column} />,
},
{
- accessorKey: 'status',
- header: ({ column }) => <DataTableColumnHeader title={i18n.t('status')} column={column} />,
- cell: ({ row }) => <UsersStatusBadge status={UsersStatus[row.original.status ? row.original.status : 'error']} />,
+ accessorKey: "activated",
+ header: ({ column }) => (
+ <DataTableColumnHeader
+ title={i18n.t("activated")}
+ column={column}
+ />
+ ),
+ cell: ({ row }) => <UserActivatedPill user={row.original} />,
+ },
+ {
+ accessorKey: "enabled",
+ header: ({ column }) => (
+ <DataTableColumnHeader
+ title={i18n.t("enabled")}
+ column={column}
+ />
+ ),
+ cell: ({ row }) => <UserEnabledPill user={row.original} />,
},
{
accessorKey: "used_traffic",
@@ -35,19 +51,16 @@ export const columns: ColumnDef<UserType>[] = [
return <Badge>No Limit</Badge>
}
},
- sortingFn: (rowA, rowB) => {
- if (rowA.original.data_limit && rowB.original.data_limit) {
- const rowAUsedTraffic = (rowA.original.used_traffic / rowA.original.data_limit) * 100
- const rowBUsedTraffic = (rowA.original.used_traffic / rowA.original.data_limit) * 100
- return rowAUsedTraffic > rowBUsedTraffic ? 1 : rowBUsedTraffic > rowAUsedTraffic ? -1 : 0
- } else {
- return 0
- }
- }
+ sortingFn: (rowA, rowB) => userTrafficSortingFn(rowA.original, rowB.original)
},
{
- accessorKey: 'expire',
- header: ({ column }) => <DataTableColumnHeader title={i18n.t('expire')} column={column} />,
- cell: ({ row }) => row.original.expire && format(row.original.expire, "PPP")
- }
+ accessorKey: "expire",
+ header: ({ column }) => (
+ <DataTableColumnHeader
+ title={i18n.t("page.users.expire_date")}
+ column={column}
+ />
+ ),
+ cell: ({ row }) => <UserExpirationValue user={row.original} />,
+ },
];
diff --git a/dashboard/src/features/users/components/dialogs/mutation/fields/activation-deadline.tsx b/dashboard/src/features/users/components/dialogs/mutation/fields/activation-deadline.tsx
@@ -0,0 +1,7 @@
+
+import { DateField } from "@marzneshin/features/users";
+import { FC } from "react";
+
+export const ActivationDeadlineField: FC = () => {
+ return <DateField name="activation_deadline" label="page.users.activation_deadline" />;
+};
diff --git a/dashboard/src/features/users/components/dialogs/mutation/fields/expire-date.tsx b/dashboard/src/features/users/components/dialogs/mutation/fields/expire-date.tsx
@@ -2,5 +2,5 @@ import { DateField } from "@marzneshin/features/users";
import { FC } from "react";
export const ExpireDateField: FC = () => {
- return <DateField name="expire" label="page.users.expire_date" />;
+ return <DateField name="expire_date" label="page.users.expire_date" />;
};
diff --git a/dashboard/src/features/users/components/dialogs/mutation/fields/index.ts b/dashboard/src/features/users/components/dialogs/mutation/fields/index.ts
@@ -4,5 +4,5 @@ export * from "./note"
export * from "./services"
export * from "./data-limit-reset-strategy"
export * from "./username"
-export * from "./onhold-timeout"
-export * from "./onhold-expire-duration"
+export * from "./activation-deadline"
+export * from "./usage-duration"
diff --git a/dashboard/src/features/users/components/dialogs/mutation/fields/onhold-timeout.tsx b/dashboard/src/features/users/components/dialogs/mutation/fields/onhold-timeout.tsx
@@ -1,7 +0,0 @@
-
-import { DateField } from "@marzneshin/features/users";
-import { FC } from "react";
-
-export const OnHoldTimeoutField: FC = () => {
- return <DateField name="on_hold_timeout" label="page.users.on_hold_timeout" />;
-};
diff --git a/dashboard/src/features/users/components/dialogs/mutation/fields/onhold-expire-duration.tsx b/dashboard/src/features/users/components/dialogs/mutation/fields/usage-duration.tsx
rename from dashboard/src/features/users/components/dialogs/mutation/fields/onhold-expire-duration.tsx
rename to dashboard/src/features/users/components/dialogs/mutation/fields/usage-duration.tsx
@@ -6,28 +6,28 @@ import {
FormLabel,
FormMessage
} from '@marzneshin/components';
-import { FC, useEffect, useState } from 'react'
+import { type FC, useEffect, useState } from 'react'
import { useFormContext } from 'react-hook-form';
import { useTranslation } from 'react-i18next';
-export const OnHoldExpireDurationField: FC = () => {
+export const UsageDurationField: FC = () => {
const form = useFormContext();
const { t } = useTranslation();
- const defaultDuration = (form.getValues('on_hold_expire_duration') ?? 0) / 86400;
+ const defaultDuration = (form.getValues('usage_duration') ?? 0) / 86400;
const [duration, setDuration] = useState<number>(defaultDuration);
useEffect(() => {
- form.setValue('on_hold_expire_duration', duration * 86400);
+ form.setValue('usage_duration', duration * 86400);
}, [form, duration]);
return (
<FormField
control={form.control}
- name="on_hold_expire_duration"
+ name="usage_duration"
render={({ field }) => (
<FormItem>
- <FormLabel>{t('page.users.on_hold_expire_duration')} ({t('days')})</FormLabel>
+ <FormLabel>{t('page.users.usage_duration')} ({t('days')})</FormLabel>
<FormControl>
<Input
{...field}
diff --git a/dashboard/src/features/users/components/dialogs/mutation/index.tsx b/dashboard/src/features/users/components/dialogs/mutation/index.tsx
@@ -16,9 +16,8 @@ import {
DATA_LIMIT_METRIC,
useUsersCreationMutation,
useUsersUpdateMutation,
+ UserSchema,
} from "@marzneshin/features/users";
-
-import { UserSchema } from "./schema";
import { UsernameField, NoteField, ServicesField } from "./fields";
import { useMutationDialog } from "@marzneshin/hooks";
import { DataLimitFields, ExpirationMethodFields } from "./sections";
@@ -40,14 +39,10 @@ export const UsersMutationDialog: FC<UsersMutationDialogProps> = ({
const getDefaultValues = useCallback(
(): UserMutationType => ({
service_ids: [],
- data_limit: undefined,
- expire: null,
+ expire_strategy: "fixed_date",
username: "",
data_limit_reset_strategy: "no_reset",
- status: "active",
note: "",
- on_hold_expire_duration: 0,
- on_hold_timeout: undefined,
}),
[],
);
@@ -72,8 +67,8 @@ export const UsersMutationDialog: FC<UsersMutationDialogProps> = ({
return (
<Dialog open={open} onOpenChange={onOpenChange} defaultOpen={true}>
<DialogContent className="min-w-full h-full md:h-auto md:min-w-[42rem]">
- <ScrollArea className="flex flex-col justify-between h-full">
- <DialogHeader>
+ <ScrollArea className="flex flex-col justify-between h-full ">
+ <DialogHeader className="mb-3">
<DialogTitle className="text-primary">
{entity
? t("page.users.dialogs.edition.title")
@@ -81,15 +76,15 @@ export const UsersMutationDialog: FC<UsersMutationDialogProps> = ({
</DialogTitle>
</DialogHeader>
<Form {...form}>
- <form onSubmit={handleSubmit} className=" m-2">
+ <form onSubmit={handleSubmit} >
<div className="flex-col grid-cols-2 gap-2 sm:flex md:grid h-full">
- <div>
+ <div className="space-y-3">
<UsernameField disabled={!!entity?.username} />
- <Separator className="my-3"/>
+ <Separator />
<DataLimitFields />
- <Separator className="my-3"/>
+ <Separator />
<ExpirationMethodFields entity={entity} />
- <Separator className="my-3"/>
+ <Separator />
<NoteField />
</div>
<VStack>
diff --git a/dashboard/src/features/users/components/dialogs/mutation/schema.ts b/dashboard/src/features/users/components/dialogs/mutation/schema.ts
@@ -1,20 +0,0 @@
-import { z } from 'zod';
-import { DATA_LIMIT_METRIC } from '@marzneshin/features/users';
-
-export const UserSchema = z.object({
- username: z.string().min(1, { message: 'Username is required' }),
- note: z.string().nullable(),
- data_limit: z
- .union([z.string().transform((str) => Number(str) * DATA_LIMIT_METRIC), z.number()])
- .refine(val => val >= 0, { message: 'The minimum number is 0' })
- .nullable()
- .optional()
- .transform((val) => val ?? 0),
- expire: z.string().or(z.number()).nullable().optional(),
- data_limit_reset_strategy: z.string().nullable().optional(),
- status: z.string(),
- on_hold_expire_duration: z.number().nullable().optional(),
- on_hold_timeout: z.string().nullable().optional(),
- service_ids: z.array(z.number().or(z.string())).nonempty({ message: 'At least one service is required' })
- .transform((v) => v.map(Number)),
-});
diff --git a/dashboard/src/features/users/components/dialogs/mutation/sections/data-limit/use-data-limit.ts b/dashboard/src/features/users/components/dialogs/mutation/sections/data-limit/use-data-limit.ts
@@ -3,20 +3,21 @@ import { useFormContext } from "react-hook-form";
export const useDataLimit = () => {
const form = useFormContext();
- const data_limit = form.watch("data_limit");
+ const dataLimit = form.watch("data_limit");
- const [isDataLimitEnabled, setIsDataLimitEnabled] = useState(data_limit !== 0);
+ const [isDataLimitEnabled, setIsDataLimitEnabled] = useState(dataLimit !== 0);
useEffect(() => {
- setIsDataLimitEnabled(data_limit !== 0);
- }, [data_limit]);
+ setIsDataLimitEnabled(dataLimit !== 0);
+ }, [dataLimit]);
useEffect(() => {
if (!isDataLimitEnabled) {
form.setValue("data_limit", 0);
form.setValue("data_limit_reset_strategy", "no_reset");
}
- }, [isDataLimitEnabled, form]);
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, [isDataLimitEnabled]);
return { isDataLimitEnabled, setIsDataLimitEnabled };
};
diff --git a/dashboard/src/features/users/components/dialogs/mutation/sections/expiration-method/expiration-method.strategy.ts b/dashboard/src/features/users/components/dialogs/mutation/sections/expiration-method/expiration-method.strategy.ts
@@ -0,0 +1,56 @@
+import { useFormContext } from "react-hook-form";
+import { ExpireStrategy } from "@marzneshin/features/users";
+
+class ExpirationMethodErrorClear {
+ protected clearErrors(form: ReturnType<typeof useFormContext>) {
+ form.clearErrors("expire_date");
+ form.clearErrors("usage_duration");
+ form.clearErrors("activation_deadline");
+ }
+}
+
+abstract class ExpirationMethodStrategy {
+ abstract apply(form: ReturnType<typeof useFormContext>): void;
+}
+
+export class FirstUseStrategy
+ extends ExpirationMethodErrorClear
+ implements ExpirationMethodStrategy {
+
+ apply(form: ReturnType<typeof useFormContext>) {
+ form.setValue("expire_strategy", "start_on_first_use");
+ form.setValue("expire", undefined);
+ this.clearErrors(form);
+ }
+}
+
+export class NeverStrategy
+ extends ExpirationMethodErrorClear
+ implements ExpirationMethodStrategy {
+
+ apply(form: ReturnType<typeof useFormContext>) {
+ form.setValue("expire_strategy", 'never');
+ form.setValue("expire_date", undefined);
+ form.setValue("activation_deadline", undefined);
+ form.setValue("usage_duration", undefined);
+ this.clearErrors(form);
+ }
+}
+
+export class FixedStrategy
+ extends ExpirationMethodErrorClear
+ implements ExpirationMethodStrategy {
+
+ apply(form: ReturnType<typeof useFormContext>) {
+ form.setValue("expire_strategy", 'fixed_date');
+ form.setValue("on_hold_expire_duration", 0);
+ form.setValue("activation_deadline", null);
+ this.clearErrors(form);
+ }
+}
+
+export const strategies: { [key in ExpireStrategy]: ExpirationMethodStrategy } = {
+ start_on_first_use: new FirstUseStrategy(),
+ never: new NeverStrategy(),
+ fixed_date: new FixedStrategy(),
+};
diff --git a/dashboard/src/features/users/components/dialogs/mutation/sections/expiration-method/index.tsx b/dashboard/src/features/users/components/dialogs/mutation/sections/expiration-method/index.tsx
@@ -5,19 +5,19 @@ import {
TabsContent,
FormLabel
} from '@marzneshin/components';
-import {
+import type {
UserMutationType,
+ ExpireStrategy,
} from "@marzneshin/features/users";
import {
ExpireDateField,
- OnHoldTimeoutField,
- OnHoldExpireDurationField,
+ ActivationDeadlineField,
+ UsageDurationField,
} from "@marzneshin/features/users/components/dialogs/mutation/fields";
import { TabsList } from "@radix-ui/react-tabs";
import { useTranslation } from "react-i18next";
import {
useExpirationMethodTabs,
- type ExpirationMethodStrategy
} from "./use-expiration-method-tabs";
interface ExpirationMethodProps {
@@ -32,7 +32,7 @@ export const ExpirationMethodFields: FC<ExpirationMethodProps> = ({ entity }) =>
} = useExpirationMethodTabs({ entity });
const handleTabChange = (value: string) => {
- setSelectedExpirationMethodTab(value as ExpirationMethodStrategy);
+ setSelectedExpirationMethodTab(value as ExpireStrategy);
};
return (
@@ -43,31 +43,31 @@ export const ExpirationMethodFields: FC<ExpirationMethodProps> = ({ entity }) =>
<Tabs
defaultValue={defaultExpirationMethodTab}
onValueChange={handleTabChange}
- className="mt-2 w-full"
+ className="w-full"
>
<TabsList className="flex flex-row items-center p-1 w-full rounded-md bg-accent">
<TabsTrigger
className="w-full"
- value="determined">
- {t('page.users.determined_expire')}
+ value="fixed_date">
+ {t('page.users.fixed_date')}
</TabsTrigger>
<TabsTrigger
className="w-full"
- value="onhold">
- {t('page.users.onhold_expire')}
+ value="start_on_first_use">
+ {t('page.users.on_first_use')}
</TabsTrigger>
<TabsTrigger
className="w-full"
- value="unlimited">
- {t('page.users.unlimited')}
+ value="never">
+ {t('page.users.never')}
</TabsTrigger>
</TabsList>
- <TabsContent value="determined">
+ <TabsContent value="fixed_date">
<ExpireDateField />
</TabsContent>
- <TabsContent value="onhold">
- <OnHoldExpireDurationField />
- <OnHoldTimeoutField />
+ <TabsContent value="start_on_first_use">
+ <UsageDurationField />
+ <ActivationDeadlineField />
</TabsContent>
</Tabs>
</>
diff --git a/dashboard/src/features/users/components/dialogs/mutation/sections/expiration-method/use-expiration-method-tabs.ts b/dashboard/src/features/users/components/dialogs/mutation/sections/expiration-method/use-expiration-method-tabs.ts
@@ -1,45 +1,23 @@
-import { UserMutationType } from "@marzneshin/features/users";
-import { useEffect, useState } from "react";
+import { UserMutationType, ExpireStrategy } from "@marzneshin/features/users";
+import { useState, useEffect } from "react";
import { useFormContext } from "react-hook-form";
+import { strategies } from "./expiration-method.strategy"
-export type ExpirationMethodStrategy = "onhold" | "determined" | "unlimited";
-
-const getUserExpirationMethod = (entity: UserMutationType): ExpirationMethodStrategy => {
- if (entity.status === "on_hold") return 'onhold';
- if (entity.expire != null) return 'determined';
- return 'unlimited';
-};
export const useExpirationMethodTabs = ({ entity }: { entity: UserMutationType | null }) => {
const form = useFormContext();
- const defaultExpirationMethodTab = entity ? getUserExpirationMethod(entity) : 'determined';
- const [selectedExpirationMethodTab, setSelectedExpirationMethodTab] = useState<ExpirationMethodStrategy>(defaultExpirationMethodTab);
+ const defaultExpirationMethodTab = entity ? entity.expire_strategy : 'fixed_date';
+ const [selectedExpirationMethodTab, setSelectedExpirationMethodTab] = useState<ExpireStrategy>(defaultExpirationMethodTab);
useEffect(() => {
- form.setValue("status", selectedExpirationMethodTab === 'onhold' ? 'on_hold' : 'active');
-
- if (selectedExpirationMethodTab === 'onhold') {
- form.setValue("expire", undefined);
- } else if (selectedExpirationMethodTab === "unlimited") {
- form.setValue("expire", 0);
- form.setValue("on_hold_expire_duration", undefined);
- form.setValue("on_hold_timeout", undefined);
- } else {
- form.setValue("on_hold_expire_duration", 0);
- form.setValue("on_hold_timeout", null);
- }
-
- form.clearErrors("expire");
- form.clearErrors("on_hold_expire_duration");
- form.clearErrors("on_hold_timeout");
-
- // eslint-disable-next-line
+ strategies[selectedExpirationMethodTab as ExpireStrategy].apply(form);
+ // eslint-disable-next-line react-hooks/exhaustive-deps
}, [selectedExpirationMethodTab]);
return {
- selectedExpirationMethodTab,
+ selectedExpirationMethodTab: selectedExpirationMethodTab,
defaultExpirationMethodTab,
- setSelectedExpirationMethodTab
+ setSelectedExpirationMethodTab,
};
};
diff --git a/dashboard/src/features/users/components/dialogs/settings/index.tsx b/dashboard/src/features/users/components/dialogs/settings/index.tsx
@@ -9,23 +9,29 @@ import {
TabsContent,
TabsList,
TabsTrigger,
+ Awaiting,
} from "@marzneshin/components";
-import { UserServicesTable } from "@marzneshin/features/users";
import {
+ UserServicesTable,
useUserUsageResetCmd,
type UserType
} from "@marzneshin/features/users";
import { type FC, useEffect } from "react";
import { useTranslation } from "react-i18next";
-import { QRCodeSection, UserInfoTable } from "./user-info";
-import { SubscriptionActions } from "./user-info/subscription-actions";
-import { UserStatusEnableButton } from "./user-info/user-status-enable-button";
+import {
+ UserStatusEnableButton,
+ SubscriptionActions,
+ QRCodeSection,
+ UserInfoTable
+} from "./user-info";
+import { UserInfoSkeleton } from "./skeleton";
interface UsersSettingsDialogProps {
onOpenChange: (state: boolean) => void;
open: boolean;
- entity: UserType;
+ entity: UserType | null;
onClose: () => void;
+ isPending: boolean;
}
export const UsersSettingsDialog: FC<UsersSettingsDialogProps> = ({
@@ -33,6 +39,7 @@ export const UsersSettingsDialog: FC<UsersSettingsDialogProps> = ({
open,
entity,
onClose,
+ isPending,
}) => {
const { t } = useTranslation();
const { mutate: resetUsage } = useUserUsageResetCmd();
@@ -43,44 +50,50 @@ export const UsersSettingsDialog: FC<UsersSettingsDialogProps> = ({
return (
<Sheet open={open} onOpenChange={onOpenChange}>
- <SheetContent className="sm:min-w-full md:min-w-[700px]">
- <ScrollArea className="flex flex-col gap-4 m-3 h-full">
- <SheetHeader className="my-1">
- <SheetTitle>{t("settings")}</SheetTitle>
- </SheetHeader>
- <Tabs defaultValue="info" className="w-full h-full">
- <TabsList className="w-full bg-accent">
- <TabsTrigger className="w-full" value="info">
- {t("user_info")}
- </TabsTrigger>
- <TabsTrigger className="w-full" value="services">
- {t("services")}
- </TabsTrigger>
- <TabsTrigger className="w-full" value="subscription">
- {t("subscription")}
- </TabsTrigger>
- </TabsList>
- <TabsContent
- value="info"
- className="flex flex-col gap-2 w-full h-full"
- >
- <UserInfoTable entity={entity} />
- <div className="flex flex-row justify-center items-center gap-2">
- <Button className="w-1/2" onClick={() => resetUsage(entity)}>
- {t("page.users.reset_usage")}
- </Button>
- <UserStatusEnableButton user={entity} />
- </div>
- </TabsContent>
- <TabsContent value="services">
- <UserServicesTable user={entity} />
- </TabsContent>
- <TabsContent value="subscription">
- <QRCodeSection entity={entity} />
- <SubscriptionActions entity={entity} />
- </TabsContent>
- </Tabs>
- </ScrollArea>
+ <SheetContent className="sm:min-w-full md:min-w-[700px] space-y-5">
+ <SheetHeader >
+ <SheetTitle>{t("settings")}</SheetTitle>
+ </SheetHeader>
+ <Awaiting
+ Component={entity ? (
+ <ScrollArea className="flex flex-col gap-4 h-full">
+ <Tabs defaultValue="info" className="w-full h-full">
+ <TabsList className="w-full bg-accent">
+ <TabsTrigger className="w-full" value="info">
+ {t("user_info")}
+ </TabsTrigger>
+ <TabsTrigger className="w-full" value="services">
+ {t("services")}
+ </TabsTrigger>
+ <TabsTrigger className="w-full" value="subscription">
+ {t("subscription")}
+ </TabsTrigger>
+ </TabsList>
+ <TabsContent
+ value="info"
+ className="flex flex-col gap-2 w-full h-full"
+ >
+ <UserInfoTable user={entity} />
+ <div className="hstack justify-center items-center gap-2">
+ <Button className="w-1/2" onClick={() => resetUsage(entity)}>
+ {t("page.users.reset_usage")}
+ </Button>
+ <UserStatusEnableButton user={entity} />
+ </div>
+ </TabsContent>
+ <TabsContent value="services">
+ <UserServicesTable user={entity} />
+ </TabsContent>
+ <TabsContent value="subscription">
+ <QRCodeSection entity={entity} />
+ <SubscriptionActions entity={entity} />
+ </TabsContent>
+ </Tabs>
+ </ScrollArea>
+ ) : (<div>Not Found</div>)}
+ Skeleton={<UserInfoSkeleton />}
+ isFetching={isPending}
+ />
</SheetContent>
</Sheet>
);
diff --git a/dashboard/src/features/users/components/dialogs/settings/skeleton.tsx b/dashboard/src/features/users/components/dialogs/settings/skeleton.tsx
@@ -0,0 +1,39 @@
+import { Skeleton } from "@marzneshin/components";
+
+export const UserInfoSkeleton = () => {
+ return (
+ <div className="p-5 bg-gray-900 rounded-lg w-96">
+ <h2 className="text-white mb-5">
+ <Skeleton className="h-6 w-24" />
+ </h2>
+ <div className="mb-2">
+ <Skeleton className="h-5 w-36" />
+ </div>
+ <div className="mb-2">
+ <Skeleton className="h-5 w-24" />
+ </div>
+ <div className="mb-2">
+ <Skeleton className="h-5 w-24" />
+ </div>
+ <div className="mb-2">
+ <Skeleton className="h-5 w-40" />
+ </div>
+ <div className="mb-2">
+ <Skeleton className="h-5 w-24" />
+ </div>
+ <div className="mb-2">
+ <Skeleton className="h-5 w-24" />
+ </div>
+ <div className="mb-2">
+ <Skeleton className="h-5 w-32" />
+ </div>
+ <div className="mb-2">
+ <Skeleton className="h-5 w-24" />
+ </div>
+ <div className="flex justify-between mt-5">
+ <Skeleton className="h-10 w-28" />
+ <Skeleton className="h-10 w-28" />
+ </div>
+ </div>
+ );
+};
diff --git a/dashboard/src/features/users/components/dialogs/settings/user-info/index.ts b/dashboard/src/features/users/components/dialogs/settings/user-info/index.ts
@@ -1,3 +1,4 @@
export * from './table'
+export * from './subscription-actions'
export * from './user-status-enable-button'
export * from './qrcode'
diff --git a/dashboard/src/features/users/components/dialogs/settings/user-info/table.tsx b/dashboard/src/features/users/components/dialogs/settings/user-info/table.tsx
@@ -5,63 +5,23 @@ import {
CardTitle,
Table,
TableBody,
- TableCell,
- TableRow,
+ TableRowWithCell,
+ DateTableRow,
} from "@marzneshin/components";
import { FC } from "react";
import {
- UserType,
- UsersStatus,
- UsersStatusBadge,
+ type UserProp,
+ UserEnabledPill,
+ UserUsedTraffic,
+ UserActivatedPill,
+ UserDataLimitReachedPill,
} from "@marzneshin/features/users";
-import { CircularProgress } from "@nextui-org/progress";
import { useTranslation } from "react-i18next";
-import { format, isDate, isValid } from "date-fns";
-interface UserInfoTableProps {
- entity: UserType;
-}
-
-const TableRowWithCell: FC<{
- label: string;
- value: string | number | JSX.Element;
-}> = ({ label, value }) => (
- <TableRow>
- <TableCell>{label}</TableCell>
- <TableCell>{value}</TableCell>
- </TableRow>
-);
-
-const DateTableRow: FC<{ label: string; date: Date | string }> = ({
- label,
- date,
-}) => {
- let formattedDate = "";
- if (date && isValid(date)) {
- formattedDate = format(date, "PPP");
- }
- return <TableRowWithCell label={label} value={formattedDate} />;
-};
-
-const CircularProgressBarRow: FC<{
- label: string;
- value: number;
- limit: number;
-}> = ({ label, value, limit }) => (
- <TableRow>
- <TableCell>{label}</TableCell>
- <TableCell>
- <CircularProgress size="sm" value={(value / limit) * 100} />
- </TableCell>
- </TableRow>
-);
-
-export const UserInfoTable: FC<UserInfoTableProps> = ({ entity }) => {
+export const UserInfoTable: FC<UserProp> = ({ user: entity }) => {
const { t } = useTranslation();
- const expireDate = entity.expire
- ? isDate(entity.expire)
- ? entity.expire
- : new Date(entity.expire)
+ const expireDate = entity.expire_date
+ ? new Date(entity.expire_date)
: null;
return (
@@ -74,35 +34,48 @@ export const UserInfoTable: FC<UserInfoTableProps> = ({ entity }) => {
<TableBody>
<TableRowWithCell label={t("username")} value={entity.username} />
<TableRowWithCell
- label={t("status")}
- value={<UsersStatusBadge status={UsersStatus[entity.status]} />}
+ label={t("enabled")}
+ value={<UserEnabledPill user={entity} />}
/>
- {expireDate && entity.on_hold_expire_duration === 0 ? (
- <DateTableRow
- label={t("page.users.expire_date")}
- date={expireDate}
- />
- ) : (
- <>
- <TableRowWithCell
- label={t("page.users.on_hold_expire_duration")}
- value={entity.on_hold_expire_duration}
+ <TableRowWithCell
+ label={t("activated")}
+ value={<UserActivatedPill user={entity} />}
+ />
+ {{
+ fixed_date: (
+ <DateTableRow
+ label={t("page.users.expire_date")}
+ date={expireDate}
/>
- {entity.on_hold_timeout && (
+ ),
+ start_on_first_use: (
+ <>
+ <TableRowWithCell
+ label={t("page.users.usage_duration")}
+ value={(entity.usage_duration ? entity.usage_duration : 0) / 86400}
+ />
<DateTableRow
- label={t("page.users.expire_date")}
- date={entity.on_hold_timeout}
+ label={t("page.users.activation_deadline")}
+ date={entity.activation_deadline}
/>
- )}
- </>
- )}
- {entity.data_limit && (
- <CircularProgressBarRow
- label={t("page.users.used_traffic")}
- value={entity.used_traffic}
- limit={entity.data_limit}
- />
- )}
+ </>
+ ),
+ never: (
+ <TableRowWithCell
+ label={t("page.users.expire_method")}
+ value={t('never')}
+ />
+ )
+ }[entity.expire_strategy]}
+
+ <TableRowWithCell
+ label={t("page.users.used_traffic")}
+ value={<UserUsedTraffic user={entity} />}
+ />
+ <TableRowWithCell
+ label={t("page.users.data_limit_reached")}
+ value={<UserDataLimitReachedPill user={entity} />}
+ />
<DateTableRow
label={t("page.users.online_at")}
date={entity.online_at}
diff --git a/dashboard/src/features/users/components/index.ts b/dashboard/src/features/users/components/index.ts
@@ -6,3 +6,5 @@ export * from './used-user-traffic'
export * from "./tables"
export * from "./dialogs"
export * from "./widgets"
+export * from "./pills"
+export * from "./user-expiration-value"
diff --git a/dashboard/src/features/users/components/pills/index.ts b/dashboard/src/features/users/components/pills/index.ts
@@ -0,0 +1,4 @@
+export * from "./user-enabled-pill";
+export * from "./user-activated-pill";
+export * from "./user-data-limit-reached-pill";
+export * from "./user-expire-strategy-pill";
diff --git a/dashboard/src/features/users/components/pills/user-activated-pill.tsx b/dashboard/src/features/users/components/pills/user-activated-pill.tsx
@@ -0,0 +1,15 @@
+import { type FC } from "react";
+import { BooleanPill } from "@marzneshin/components";
+import { useTranslation } from "react-i18next";
+import { UserProp } from "@marzneshin/features/users";
+
+export const UserActivatedPill: FC<UserProp> = ({ user }) => {
+ const { t } = useTranslation();
+ return (
+ <BooleanPill
+ active={user.activated}
+ activeLabel={t('active')}
+ inactiveLabel={t('inactive')}
+ />
+ )
+}
diff --git a/dashboard/src/features/users/components/pills/user-data-limit-reached-pill.tsx b/dashboard/src/features/users/components/pills/user-data-limit-reached-pill.tsx
@@ -0,0 +1,15 @@
+import { type FC } from "react";
+import { BooleanPill } from "@marzneshin/components";
+import { useTranslation } from "react-i18next";
+import { UserProp } from "@marzneshin/features/users";
+
+export const UserDataLimitReachedPill: FC<UserProp> = ({ user }) => {
+ const { t } = useTranslation();
+ return (
+ <BooleanPill
+ active={!user.data_limit_reached}
+ activeLabel={t('left')}
+ inactiveLabel={t('reached')}
+ />
+ )
+}
diff --git a/dashboard/src/features/users/components/pills/user-enabled-pill.tsx b/dashboard/src/features/users/components/pills/user-enabled-pill.tsx
@@ -0,0 +1,15 @@
+import { type FC } from "react";
+import { BooleanPill } from "@marzneshin/components";
+import { useTranslation } from "react-i18next";
+import { UserProp } from "@marzneshin/features/users";
+
+export const UserEnabledPill: FC<UserProp> = ({ user }) => {
+ const { t } = useTranslation();
+ return (
+ <BooleanPill
+ active={user.enabled}
+ activeLabel={t('enabled')}
+ inactiveLabel={t('disabled')}
+ />
+ )
+}
diff --git a/dashboard/src/features/users/components/pills/user-expire-strategy-pill.tsx b/dashboard/src/features/users/components/pills/user-expire-strategy-pill.tsx
@@ -0,0 +1,25 @@
+
+import { type FC } from "react";
+import { Badge } from "@marzneshin/components";
+import { useTranslation } from "react-i18next";
+import { UserProp } from "@marzneshin/features/users";
+
+export const UserExpireStrategyPill: FC<UserProp> = ({ user }) => {
+ const { t } = useTranslation();
+ const label = {
+ start_on_first_use: t("page.users.on_first_use"),
+ fixed_date: t("page.users.fixed_date"),
+ never: t("page.users.never"),
+ }[user.expire_strategy]
+ const variant = {
+ start_on_first_use: "royal",
+ fixed_date: "warning",
+ never: "disabled",
+ }[user.expire_strategy]
+ return (
+ <Badge variant={variant as "royal" | "disabled" | "warning"}>
+ {label}
+ </Badge>
+ )
+}
+
diff --git a/dashboard/src/features/users/components/tables/users/columns.tsx b/dashboard/src/features/users/components/tables/users/columns.tsx
@@ -1,10 +1,12 @@
import type { ColumnDef } from "@tanstack/react-table";
-import type { UserType } from "@marzneshin/features/users";
import {
- UsersStatusBadge,
- UsersStatus,
+ type UserType,
OnlineStatus,
UserUsedTraffic,
+ UserActivatedPill,
+ UserEnabledPill,
+ UserExpireStrategyPill,
+ UserExpirationValue
} from "@marzneshin/features/users";
import { DataTableColumnHeader } from "@marzneshin/components/data-table/column-header";
import i18n from "@marzneshin/features/i18n";
@@ -15,7 +17,6 @@ import {
} from "@marzneshin/components";
import { LinkIcon } from "lucide-react";
import { getSubscriptionLink } from "@marzneshin/utils";
-import { format } from "date-fns";
interface ColumnAction {
onDelete: (user: UserType) => void;
@@ -36,14 +37,15 @@ export const columns = (actions: ColumnAction): ColumnDef<UserType>[] => [
),
},
{
- accessorKey: "status",
+ accessorKey: "activated",
+ enableSorting: false,
header: ({ column }) => (
- <DataTableColumnHeader title={i18n.t("status")} column={column} />
- ),
- cell: ({ row }) => (
- <UsersStatusBadge status={UsersStatus[row.original.status]} />
+ <DataTableColumnHeader
+ title={i18n.t("activated")}
+ column={column}
+ />
),
- enableSorting: false,
+ cell: ({ row }) => <UserActivatedPill user={row.original} />,
},
{
accessorKey: "used_traffic",
@@ -56,17 +58,36 @@ export const columns = (actions: ColumnAction): ColumnDef<UserType>[] => [
cell: ({ row }) => <UserUsedTraffic user={row.original} />,
},
{
- accessorKey: "expire",
+ accessorKey: "enabled",
+ enableSorting: false,
+ header: ({ column }) => (
+ <DataTableColumnHeader
+ title={i18n.t("enabled")}
+ column={column}
+ />
+ ),
+ cell: ({ row }) => <UserEnabledPill user={row.original} />,
+ },
+ {
+ accessorKey: "expire_strategy",
+ header: ({ column }) => (
+ <DataTableColumnHeader
+ title={i18n.t("page.users.expire_method")}
+ column={column}
+ />
+ ),
+ cell: ({ row }) => <UserExpireStrategyPill user={row.original} />,
+ enableSorting: false,
+ },
+ {
+ accessorKey: "expire_date",
header: ({ column }) => (
<DataTableColumnHeader
title={i18n.t("page.users.expire_date")}
column={column}
/>
),
- cell: ({ row }) =>
- row.original.expire
- ? format(row.original.expire.toLocaleString(), "PPP")
- : "Unlimited",
+ cell: ({ row }) => <UserExpirationValue user={row.original} />,
},
{
id: "actions",
diff --git a/dashboard/src/features/users/components/user-expiration-value.tsx b/dashboard/src/features/users/components/user-expiration-value.tsx
@@ -0,0 +1,14 @@
+import { format } from "date-fns";
+import { type FC } from 'react'
+import { UserProp } from "@marzneshin/features/users";
+import { useTranslation } from "react-i18next";
+
+export const UserExpirationValue: FC<UserProp> = ({ user }) => {
+ const { t } = useTranslation();
+ return ({
+ start_on_first_use: user.usage_duration && `${(user.usage_duration / 86400)} Day`,
+ fixed_date: user.expire_date && format(user.expire_date?.toLocaleString(), "PPP"),
+ never: t('never'),
+ }[user.expire_strategy])
+}
+
diff --git a/dashboard/src/features/users/contexts/router.ts b/dashboard/src/features/users/contexts/router.ts
@@ -2,7 +2,8 @@ import { createContext, useContext } from "react";
import { UserType } from "@marzneshin/features/users";
interface RouterUserContextProps {
- user: UserType;
+ user: UserType | null;
+ isPending?: boolean;
}
export const RouterUserContext = createContext<RouterUserContextProps | null>(null);
diff --git a/dashboard/src/features/users/domain/index.ts b/dashboard/src/features/users/domain/index.ts
@@ -0,0 +1 @@
+export * from "./user-traffic-sorting-fn"
diff --git a/dashboard/src/features/users/domain/user-traffic-sorting-fn.ts b/dashboard/src/features/users/domain/user-traffic-sorting-fn.ts
@@ -0,0 +1,13 @@
+import { UserType } from "@marzneshin/features/users";
+
+export const userTrafficSortingFn = (userA: UserType, userB: UserType) => {
+ if (userA.data_limit && userB.data_limit) {
+ const rowAUsedTraffic = (userA.used_traffic / userA.data_limit) * 100
+ const rowBUsedTraffic = (userB.used_traffic / userB.data_limit) * 100
+ return (
+ rowAUsedTraffic > rowBUsedTraffic
+ && rowAUsedTraffic !== rowBUsedTraffic
+ ) ? 1 : -1
+ }
+ return 0
+}
diff --git a/dashboard/src/features/users/index.ts b/dashboard/src/features/users/index.ts
@@ -3,3 +3,4 @@ export * from './types'
export * from './components'
export * from './constants'
export * from './contexts/router'
+export * from "./domain"
diff --git a/dashboard/src/features/users/services/user-status.mutate.ts b/dashboard/src/features/users/services/user-status.mutate.ts
@@ -13,7 +13,7 @@ interface UsersStatusEnabledQuery {
}
export async function userStatusEnabled({ user, enabled }: UsersStatusEnabledQuery): Promise<UserMutationType> {
- const action = enabled ? 'enable' : 'disable'
+ const action = enabled ? 'enable' : 'disable';
return fetch(`/users/${user.username}/${action}`, { method: 'post' }).then((user) => {
return user;
});
@@ -34,6 +34,7 @@ const handleSuccess = (value: UserMutationType) => {
description: i18n.t('events.user_status.success.desc')
})
queryClient.invalidateQueries({ queryKey: [UsersStatusEnabledFetchKey] })
+ queryClient.invalidateQueries({ queryKey: [UsersStatusEnabledFetchKey, value.username] })
}
diff --git a/dashboard/src/features/users/services/user.query.ts b/dashboard/src/features/users/services/user.query.ts
@@ -1,4 +1,4 @@
-import { useQuery } from "@tanstack/react-query";
+import { queryOptions, useQuery } from "@tanstack/react-query";
import { fetch } from "@marzneshin/utils";
import type { UserType } from "../types";
@@ -10,6 +10,14 @@ export async function fetchUser({
export const UserQueryFetchKey = "users";
+export const userQueryOptions = ({ username }: { username: string }) => {
+ return queryOptions({
+ queryKey: [UserQueryFetchKey, username],
+ queryFn: fetchUser,
+ initialData: null,
+ });
+};
+
export const useUserQuery = ({ username }: { username: string }) => {
return useQuery({
queryKey: [UserQueryFetchKey, username],
diff --git a/dashboard/src/features/users/services/users.query.ts b/dashboard/src/features/users/services/users.query.ts
@@ -8,7 +8,7 @@ import {
EntityQueryKeyType
} from "@marzneshin/features/entity-table";
-export type SortUserBy = "username" | "used_traffic" | "data_limit" | "expire" | "created_at"
+export type SortUserBy = "username" | "used_traffic" | "data_limit" | "expire_date" | "created_at"
export async function fetchUsers({ queryKey }: EntityQueryKeyType): FetchEntityReturn<UserType> {
return fetch(`/users`, {
diff --git a/dashboard/src/features/users/types/data-limit-reset-strategy.ts b/dashboard/src/features/users/types/data-limit-reset-strategy.ts
@@ -0,0 +1,8 @@
+
+export type DataLimitResetStrategy =
+ | 'no_reset'
+ | 'day'
+ | 'week'
+ | 'month'
+ | 'year';
+
diff --git a/dashboard/src/features/users/types/expire-strategy.ts b/dashboard/src/features/users/types/expire-strategy.ts
@@ -0,0 +1 @@
+export type ExpireStrategy = "never" | "fixed_date" | "start_on_first_use";
diff --git a/dashboard/src/features/users/types/index.ts b/dashboard/src/features/users/types/index.ts
@@ -1,49 +1,5 @@
-export type DataLimitResetStrategy =
- | 'no_reset'
- | 'day'
- | 'week'
- | 'month'
- | 'year';
-
-export type Status =
- | 'active'
- | 'disabled'
- | 'limited'
- | 'expired'
- | 'on_hold'
- | 'error'
- | 'connecting'
- | 'healthy'
- | 'unhealthy'
- | 'connected';
-
-export interface UserType {
- on_hold_timeout: Date | string | undefined;
- on_hold_expire_duration: number;
- expire: Date | string | null;
- data_limit: number | null | undefined;
- data_limit_reset_strategy: DataLimitResetStrategy;
- lifetime_used_traffic: number;
- enabled: boolean;
- username: string;
- used_traffic: number;
- status: Status;
- links: string[];
- subscription_url: string;
- service_ids: number[];
- note: string;
- online_at: string;
-}
-
-export type UserMutationType = Pick<
- UserType,
- | 'service_ids'
- | 'expire'
- | 'data_limit'
- | 'data_limit_reset_strategy'
- | 'on_hold_timeout'
- | 'on_hold_expire_duration'
- | 'username'
- | 'status'
- | 'note'
->;
+export * from "./user"
+export * from "./user-prop"
+export * from "./schema"
+export * from "./expire-strategy"
+export * from "./data-limit-reset-strategy"
diff --git a/dashboard/src/features/users/types/schema.ts b/dashboard/src/features/users/types/schema.ts
@@ -0,0 +1,36 @@
+import { z } from 'zod';
+import { DATA_LIMIT_METRIC } from '@marzneshin/features/users';
+
+export const UserSchema = z.object({
+ username: z.string().min(1, { message: 'Username is required' }),
+ note: z.string().nullable(),
+ data_limit: z
+ .union([z.string().transform((str) => Number(str) * DATA_LIMIT_METRIC), z.number()])
+ .refine(val => val >= 0, { message: 'The minimum number is 0' })
+ .transform((val) => val ?? 0)
+ .nullable()
+ .optional(),
+ data_limit_reset_strategy: z
+ .enum(["no_reset", "day", "week", "month", "year"])
+ .or(z.number())
+ .or(z.string())
+ .nullable().optional(),
+ expire_strategy: z.enum(["never", "fixed_date", "start_on_first_use"]),
+ usage_duration: z.number().nullable().optional(),
+ activation_deadline: z
+ .string()
+ .or(z.date())
+ .nullable()
+ .optional(),
+ expire_date: z
+ .string()
+ .or(z.date())
+ .nullable()
+ .optional(),
+ service_ids: z
+ .array(z.number().or(z.string()))
+ .nonempty({ message: 'At least one service is required' })
+ .transform((v) => v.map(Number)),
+});
+
+export type UserMutationType = z.infer<typeof UserSchema>;
diff --git a/dashboard/src/features/users/types/user-prop.ts b/dashboard/src/features/users/types/user-prop.ts
@@ -0,0 +1,5 @@
+import { UserType } from "@marzneshin/features/users";
+
+export interface UserProp {
+ user: UserType;
+}
diff --git a/dashboard/src/features/users/types/user.ts b/dashboard/src/features/users/types/user.ts
@@ -0,0 +1,28 @@
+import { DataLimitResetStrategy } from "./data-limit-reset-strategy"
+import { ExpireStrategy } from "./expire-strategy"
+
+export interface UserType {
+ expire_strategy: ExpireStrategy;
+ usage_duration?: number | null;
+ activation_deadline?: Date | string | null;
+ expire_date?: Date | string | null;
+ data_limit?: number;
+ data_limit_reset_strategy: DataLimitResetStrategy;
+ lifetime_used_traffic: number;
+ used_traffic: number;
+ sub_updated_at?: Date | string;
+ sub_last_user_agent?: string;
+ enabled: boolean;
+ activated: boolean;
+ is_active: boolean;
+ expired: boolean;
+ data_limit_reached: boolean;
+ username: string;
+ created_at: string | Date;
+ links: string[];
+ subscription_url: string;
+ service_ids: number[];
+ note: string;
+ online_at: string;
+}
+
diff --git a/dashboard/src/routes/_dashboard/users/$userId.tsx b/dashboard/src/routes/_dashboard/users/$userId.tsx
@@ -1,46 +1,36 @@
import {
createFileRoute,
- defer,
- Await,
Outlet,
} from "@tanstack/react-router";
+import { useSuspenseQuery } from "@tanstack/react-query";
+import { queryClient } from "@marzneshin/utils";
import {
RouterUserContext,
- fetchUser,
+ userQueryOptions,
} from "@marzneshin/features/users";
-import { Suspense } from "react";
+import { Suspense, useMemo } from "react";
import {
AlertDialog,
AlertDialogContent,
- Loading
} from "@marzneshin/components";
const UserProvider = () => {
- const { user } = Route.useLoaderData()
+ const { username } = Route.useLoaderData()
+ const { data: user, isPending } = useSuspenseQuery(userQueryOptions({ username }))
+ const value = useMemo(() => ({ user, isPending }), [user, isPending])
return (
- <Suspense fallback={<Loading />}>
- <Await promise={user}>
- {(user) => (
- <RouterUserContext.Provider value={{ user }}>
- <Suspense>
- <Outlet />
- </Suspense>
- </RouterUserContext.Provider>
- )}
- </Await>
- </Suspense>
+ <RouterUserContext.Provider value={ }>
+ <Suspense>
+ <Outlet />
+ </Suspense>
+ </RouterUserContext.Provider>
)
}
export const Route = createFileRoute('/_dashboard/users/$userId')({
loader: async ({ params }) => {
- const userPromise = fetchUser({
- queryKey: ["users", params.userId]
- });
-
- return {
- user: defer(userPromise)
- }
+ queryClient.ensureQueryData(userQueryOptions({ username: params.userId }))
+ return { username: params.userId };
},
errorComponent: () => (
<AlertDialog open={true}>
diff --git a/dashboard/src/routes/_dashboard/users/$userId/delete.tsx b/dashboard/src/routes/_dashboard/users/$userId/delete.tsx
@@ -13,7 +13,7 @@ const UserDelete = () => {
const value = useRouterUserContext()
const navigate = useNavigate({ from: "/users/$userId/delete" });
- return value && (
+ return !!(value?.user) && (
<UsersDeleteConfirmationDialog
open={deleteDialogOpen}
onOpenChange={setDeleteDialogOpen}
diff --git a/dashboard/src/routes/_dashboard/users/$userId/index.tsx b/dashboard/src/routes/_dashboard/users/$userId/index.tsx
@@ -18,6 +18,7 @@ const UserOpen = () => {
open={settingsDialogOpen}
onOpenChange={setSettingsDialogOpen}
entity={value.user}
+ isPending={!!value.isPending}
onClose={() => navigate({ to: "/users" })}
/>
);
diff --git a/dashboard/src/utils/compose-refs.ts b/dashboard/src/utils/compose-refs.ts
@@ -1,8 +1,6 @@
-// @see https://github.com/radix-ui/primitives/blob/main/packages/react/compose-refs/src/composeRefs.tsx
+import React from "react";
-import * as React from "react"
-
-type PossibleRef<T> = React.Ref<T> | undefined
+type PossibleRef<T> = React.Ref<T> | undefined;
/**
* Set a given ref to a given value
@@ -10,9 +8,9 @@ type PossibleRef<T> = React.Ref<T> | undefined
*/
function setRef<T>(ref: PossibleRef<T>, value: T) {
if (typeof ref === "function") {
- ref(value)
+ ref(value);
} else if (ref !== null && ref !== undefined) {
- (ref as React.MutableRefObject<T>).current = value
+ (ref as React.MutableRefObject<T>).current = value;
}
}
@@ -21,7 +19,9 @@ function setRef<T>(ref: PossibleRef<T>, value: T) {
* Accepts callback refs and RefObject(s)
*/
function composeRefs<T>(...refs: PossibleRef<T>[]) {
- return (node: T) => refs.forEach((ref) => setRef(ref, node))
+ return (node: T) => {
+ refs.forEach((ref) => setRef(ref, node));
+ };
}
/**
@@ -29,8 +29,9 @@ function composeRefs<T>(...refs: PossibleRef<T>[]) {
* Accepts callback refs and RefObject(s)
*/
function useComposedRefs<T>(...refs: PossibleRef<T>[]) {
- // eslint-disable-next-line react-hooks/exhaustive-deps
- return React.useCallback(composeRefs(...refs), refs)
+ return React.useCallback((node: T) => {
+ refs.forEach((ref) => setRef(ref, node));
+ }, [refs]);
}
-export { composeRefs, useComposedRefs }
+export { composeRefs, useComposedRefs };