diff --git a/backend/.gitignore b/backend/.gitignore
new file mode 100644
index 000000000..204bc3b72
--- /dev/null
+++ b/backend/.gitignore
@@ -0,0 +1,26 @@
+# Python
+__pycache__/
+*.py[cod]
+*$py.class
+*.so
+.Python
+venv/
+env/
+ENV/
+.venv
+
+# FastAPI
+.pytest_cache/
+.coverage
+htmlcov/
+
+# IDE
+.vscode/
+.idea/
+*.swp
+*.swo
+*~
+
+# OS
+.DS_Store
+Thumbs.db
diff --git a/backend/Dockerfile b/backend/Dockerfile
new file mode 100644
index 000000000..57b5e3ee6
--- /dev/null
+++ b/backend/Dockerfile
@@ -0,0 +1,12 @@
+# Backend Dockerfile for FastAPI
+FROM python:3.11
+
+WORKDIR /app
+
+COPY requirements.txt .
+
+RUN pip install --no-cache-dir -r requirements.txt
+
+COPY app ./app
+
+CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
\ No newline at end of file
diff --git a/backend/README.md b/backend/README.md
new file mode 100644
index 000000000..b7be9d2f0
--- /dev/null
+++ b/backend/README.md
@@ -0,0 +1,160 @@
+# FastAPI Backend for Berry React Admin Template
+
+This is a FastAPI backend that provides API endpoints for the Berry React Admin Template frontend.
+
+## Features
+
+- **GET /api/hello** - Returns a greeting message
+- **POST /api/hello** - Accepts a message and echoes it back
+- **GET /api/users** - Returns a list of sample users
+- **POST /api/users** - Creates a new user and adds it to the in-memory list
+- CORS support for `http://localhost:3000` (React frontend)
+
+## Prerequisites
+
+- Python 3.8 or higher
+- pip (Python package installer)
+
+## Installation
+
+1. Navigate to the backend directory:
+```bash
+cd backend
+```
+
+2. Create a virtual environment (recommended):
+```bash
+python3 -m venv venv
+```
+
+3. Activate the virtual environment:
+ - On Linux/Mac:
+ ```bash
+ source venv/bin/activate
+ ```
+ - On Windows:
+ ```bash
+ venv\Scripts\activate
+ ```
+
+4. Install the dependencies:
+```bash
+pip install -r requirements.txt
+```
+
+## Running the Backend
+
+Start the FastAPI server using uvicorn:
+
+```bash
+uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
+```
+
+The server will start at `http://localhost:8000`
+
+## API Endpoints
+
+### GET /api/hello
+
+Returns a greeting message.
+
+**Response:**
+```json
+{
+ "message": "Hello from FastAPI!"
+}
+```
+
+**Example:**
+```bash
+curl http://localhost:8000/api/hello
+```
+
+### POST /api/hello
+
+Accepts a message and echoes it back.
+
+**Request Body:**
+```json
+{
+ "message": "Your custom message"
+}
+```
+
+**Response:**
+```json
+{
+ "message": "Your custom message"
+}
+```
+
+**Example:**
+```bash
+curl -X POST http://localhost:8000/api/hello \
+ -H "Content-Type: application/json" \
+ -d '{"message": "Hello from the client!"}'
+```
+
+### GET /api/users
+
+Returns a list of sample users.
+
+**Response:**
+```json
+[
+ {"id": 1, "name": "Alice"},
+ {"id": 2, "name": "Bob"}
+]
+```
+
+**Example:**
+```bash
+curl http://localhost:8000/api/users
+```
+
+### POST /api/users
+
+Creates a new user and adds it to the in-memory list.
+
+**Request Body:**
+```json
+{
+ "name": "John Doe"
+}
+```
+
+**Response:**
+```json
+{
+ "id": 3,
+ "name": "John Doe"
+}
+```
+
+**Example:**
+```bash
+curl -X POST http://localhost:8000/api/users \
+ -H "Content-Type: application/json" \
+ -d '{"name": "John Doe"}'
+```
+
+## Interactive API Documentation
+
+FastAPI automatically generates interactive API documentation:
+
+- **Swagger UI**: http://localhost:8000/docs
+- **ReDoc**: http://localhost:8000/redoc
+
+## Development
+
+The `--reload` flag enables auto-reload on code changes, which is useful during development.
+
+## Integration with React Frontend
+
+The backend is configured to accept requests from the React frontend running on `http://localhost:3000`. Make sure both the backend and frontend are running simultaneously for proper integration.
+
+To start the React frontend, navigate to the `vite` directory and run:
+```bash
+npm install # or yarn install
+npm start # or yarn start
+```
diff --git a/backend/app/.env b/backend/app/.env
new file mode 100644
index 000000000..99106bf2b
--- /dev/null
+++ b/backend/app/.env
@@ -0,0 +1 @@
+JWT_SECRET_KEY=jc8tcjEaszesrR7xzVdb30y6PCEbKzSBfuFa4k0y-7l37BzXufYDmjO-D94cKNI3TIuFYONOFUrwBMNxYuZkcw
\ No newline at end of file
diff --git a/backend/app/database.py b/backend/app/database.py
new file mode 100644
index 000000000..7c322b331
--- /dev/null
+++ b/backend/app/database.py
@@ -0,0 +1,18 @@
+from sqlalchemy import create_engine
+from sqlalchemy.orm import sessionmaker, declarative_base
+
+SQLALCHEMY_DATABASE_URL = "sqlite:///./app.db"
+
+engine = create_engine(
+ SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
+)
+SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
+
+Base = declarative_base()
+
+def get_db():
+ db = SessionLocal()
+ try:
+ yield db
+ finally:
+ db.close()
\ No newline at end of file
diff --git a/backend/app/main.py b/backend/app/main.py
new file mode 100644
index 000000000..be8effcfa
--- /dev/null
+++ b/backend/app/main.py
@@ -0,0 +1,233 @@
+from fastapi import FastAPI, Depends, HTTPException, status
+from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
+from fastapi.middleware.cors import CORSMiddleware
+from pydantic import BaseModel
+from typing import List, Optional
+from jose import JWTError, jwt
+from passlib.context import CryptContext
+from datetime import datetime, timedelta
+from sqlalchemy.orm import Session
+from app.database import get_db, engine
+from app.models import Hello, Base, Sample, TesteUser, User
+import os
+from dotenv import load_dotenv
+
+# Load variables from .env into environment
+load_dotenv()
+
+# Create tables
+Base.metadata.create_all(bind=engine)
+
+app = FastAPI()
+
+# --- Pydantic schemas (for request/response only!) ---
+class MessageRequest(BaseModel):
+ message: str
+
+class HelloResponse(BaseModel):
+ id: int
+ message: str
+ class Config:
+ orm_mode = True
+
+class TesteUserRequest(BaseModel):
+ name: str
+
+class TesteUserResponse(BaseModel):
+ id: int
+ name: str
+ class Config:
+ orm_mode = True
+
+class SampleSchema(BaseModel):
+ name: str
+ description: Optional[str] = None
+
+class SampleResponse(SampleSchema):
+ id: int
+ class Config:
+ orm_mode = True
+
+
+class UserInDB(BaseModel):
+ hashed_password: str
+
+# CONFIGURATION
+# python -c "import secrets; print(secrets.token_urlsafe(64))"
+SECRET_KEY = os.environ["JWT_SECRET_KEY"]
+ALGORITHM = "HS256"
+ACCESS_TOKEN_EXPIRE_MINUTES = 60
+
+# Password hashing
+pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
+
+oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
+
+# Dummy database
+fake_users_db = {
+ "leandro": {
+ "username": "leandro",
+ "full_name": "Leandro Afonso",
+ "email": "leandro@gix.com",
+ "hashed_password": pwd_context.hash("123"),
+ "disabled": False,
+ },
+ "joao": {
+ "username": "joao",
+ "full_name": "Joao Teste",
+ "email": "joao@gix.com",
+ "hashed_password": pwd_context.hash("123"),
+ "disabled": False,
+ }
+}
+
+# CORS setup
+app.add_middleware(
+ CORSMiddleware,
+ allow_origins=["http://localhost:3000"],
+ allow_credentials=True,
+ allow_methods=["*"],
+ allow_headers=["*"],
+)
+
+@app.get("/api/hello", response_model=List[HelloResponse])
+async def get_hellos(db: Session = Depends(get_db)):
+ return db.query(Hello).all()
+
+@app.get("/api/users", response_model=List[TesteUserResponse])
+async def get_users(db: Session = Depends(get_db)):
+ return db.query(TesteUser).all()
+
+@app.post("/api/hello", response_model=HelloResponse)
+async def post_hello(request: MessageRequest, db: Session = Depends(get_db)):
+ hello = db.query(Hello).first()
+ if not hello:
+ hello = Hello(message=request.message)
+ db.add(hello)
+ else:
+ hello.message = request.message
+ db.commit()
+ db.refresh(hello)
+ return hello
+
+@app.post("/api/users", response_model=TesteUserResponse)
+async def create_user(request: TesteUserRequest, db: Session = Depends(get_db)):
+ user = TesteUser(name=request.name)
+ db.add(user)
+ db.commit()
+ db.refresh(user)
+ return user
+
+@app.post("/api/samples/", response_model=SampleResponse)
+async def create_sample(sample: SampleSchema, db: Session = Depends(get_db)):
+ db_sample = Sample(**sample.dict())
+ db.add(db_sample)
+ db.commit()
+ db.refresh(db_sample)
+ return db_sample
+
+@app.get("/api/samples/", response_model=List[SampleResponse])
+async def read_samples(db: Session = Depends(get_db)):
+ return db.query(Sample).all()
+
+@app.get("/api/samples/{sample_id}", response_model=SampleResponse)
+async def read_sample(sample_id: int, db: Session = Depends(get_db)):
+ sample = db.query(Sample).filter(Sample.id == sample_id).first()
+ if not sample:
+ raise HTTPException(status_code=404, detail="Sample not found")
+ return sample
+
+@app.put("/api/samples/{sample_id}", response_model=SampleResponse)
+async def update_sample(sample_id: int, sample: SampleSchema, db: Session = Depends(get_db)):
+ db_sample = db.query(Sample).filter(Sample.id == sample_id).first()
+ if not db_sample:
+ raise HTTPException(status_code=404, detail="Sample not found")
+ db_sample.name = sample.name
+ db_sample.description = sample.description
+ db.commit()
+ db.refresh(db_sample)
+ return db_sample
+
+@app.delete("/api/samples/{sample_id}")
+async def delete_sample(sample_id: int, db: Session = Depends(get_db)):
+ db_sample = db.query(Sample).filter(Sample.id == sample_id).first()
+ if not db_sample:
+ raise HTTPException(status_code=404, detail="Sample not found")
+ db.delete(db_sample)
+ db.commit()
+ return {"ok": True}
+
+
+
+
+# Utility functions
+def verify_password(plain_password, hashed_password):
+ print(plain_password)
+
+ return pwd_context.verify(plain_password, hashed_password)
+
+def get_user(db, username: str):
+ if username in db:
+ return UserInDB(**db[username])
+
+def authenticate_user(db, username: str, password: str):
+ user = get_user(db, username)
+ if not user:
+ return False
+ if not verify_password(password, user.hashed_password):
+ return False
+ return user
+
+def create_access_token(data: dict, expires_delta: timedelta | None = None):
+ to_encode = data.copy()
+ if expires_delta:
+ expire = datetime.utcnow() + expires_delta
+ else:
+ expire = datetime.utcnow() + timedelta(minutes=15)
+ to_encode.update({"exp": expire})
+ return jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
+
+# Dependency to get current user from token
+async def get_current_user(token: str = Depends(oauth2_scheme)):
+ credentials_exception = HTTPException(
+ status_code=status.HTTP_401_UNAUTHORIZED,
+ detail="Could not validate credentials",
+ headers={"WWW-Authenticate": "Bearer"},
+ )
+ try:
+ payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
+ username: str = payload.get("sub")
+ if username is None:
+ raise credentials_exception
+ except JWTError:
+ raise credentials_exception
+ user = get_user(fake_users_db, username)
+ if user is None:
+ raise credentials_exception
+ return user
+
+async def get_current_active_user(current_user: User = Depends(get_current_user)):
+ if current_user.disabled:
+ raise HTTPException(status_code=400, detail="Inactive user")
+ return current_user
+
+# Token endpoint
+@app.post("/token")
+async def login_for_access_token(form_data: OAuth2PasswordRequestForm = Depends()):
+ user = authenticate_user(fake_users_db, form_data.username, form_data.password)
+ if not user:
+ raise HTTPException(
+ status_code=status.HTTP_401_UNAUTHORIZED,
+ detail="Incorrect username or password",
+ headers={"WWW-Authenticate": "Bearer"},
+ )
+ access_token_expires = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)
+ access_token = create_access_token(
+ data={"sub": user.username}, expires_delta=access_token_expires
+ )
+ return {"access_token": access_token, "token_type": "bearer"}
+
+# Protected endpoint
+@app.get("/users/me", response_model=User)
+async def read_users_me(current_user: User = Depends(get_current_active_user)):
+ return current_user
\ No newline at end of file
diff --git a/backend/app/models.py b/backend/app/models.py
new file mode 100644
index 000000000..c7816538b
--- /dev/null
+++ b/backend/app/models.py
@@ -0,0 +1,26 @@
+from sqlalchemy.orm import Mapped, mapped_column
+from app.database import Base
+
+class Hello(Base):
+ __tablename__ = "hello"
+ id: Mapped[int] = mapped_column(primary_key=True, index=True)
+ message: Mapped[str] = mapped_column(index=True)
+
+class Sample(Base):
+ __tablename__ = "samples"
+ id: Mapped[int] = mapped_column(primary_key=True, index=True)
+ name: Mapped[str] = mapped_column(index=True)
+ description: Mapped[str | None] = mapped_column(nullable=True)
+
+class TesteUser(Base):
+ __tablename__ = "teste_users"
+ id: Mapped[int] = mapped_column(primary_key=True, index=True)
+ name: Mapped[str] = mapped_column(index=True)
+
+class User(Base):
+ __tablename__ = "users"
+ id: Mapped[int] = mapped_column(primary_key=True)
+ username: Mapped[str] = mapped_column(unique=True, nullable=False)
+ full_name: Mapped[str | None] = mapped_column(nullable=True)
+ email: Mapped[str | None] = mapped_column(nullable=True)
+ disabled: Mapped[bool] = mapped_column(default=False)
\ No newline at end of file
diff --git a/backend/requirements.txt b/backend/requirements.txt
new file mode 100644
index 000000000..78202378d
--- /dev/null
+++ b/backend/requirements.txt
@@ -0,0 +1,7 @@
+fastapi
+sqlalchemy
+python-jose
+passlib[bcrypt]
+uvicorn[standard]
+pydantic
+python-dotenv
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 000000000..85f2b1792
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,30 @@
+version: "3.8"
+services:
+ backend:
+ build:
+ context: ./backend
+ command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
+ ports:
+ - "8000:8000"
+ volumes:
+ - ./backend/app:/app/app
+ - ./backend/.env:/app/.env
+ - ./backend/requirements.txt:/app/requirements.txt
+ environment:
+ - PYTHONUNBUFFERED=1
+ restart: unless-stopped
+
+ frontend:
+ build:
+ context: ./vite
+ command: npm run dev -- --host 0.0.0.0
+ ports:
+ - "3000:3000"
+ volumes:
+ - ./vite:/app
+ - /app/node_modules
+ environment:
+ - CHOKIDAR_USEPOLLING=true
+ restart: unless-stopped
+ depends_on:
+ - backend
\ No newline at end of file
diff --git a/remix/.eslintrc b/remix/.eslintrc
deleted file mode 100644
index a8898055c..000000000
--- a/remix/.eslintrc
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "root": true,
- "env": {
- "browser": true,
- "es2021": true
- },
- "extends": ["prettier", "plugin:react/jsx-runtime", "plugin:jsx-a11y/recommended", "plugin:react-hooks/recommended"],
- "settings": {
- "import/resolver": {
- "node": {
- "moduleDirectory": ["node_modules", "src/"]
- }
- }
- },
- "parser": "@babel/eslint-parser",
- "parserOptions": {
- "ecmaFeatures": {
- "experimentalObjectRestSpread": true,
- "impliedStrict": true
- },
- "ecmaVersion": 12
- },
- "plugins": ["prettier", "react", "react-hooks"],
- "rules": {
- "react/jsx-filename-extension": 0,
- "no-param-reassign": 0,
- "react/prop-types": 1,
- "react/require-default-props": 0,
- "react/no-array-index-key": 0,
- "react/jsx-props-no-spreading": 0,
- "react/forbid-prop-types": 0,
- "import/order": 0,
- "no-console": 0,
- "jsx-a11y/anchor-is-valid": 0,
- "prefer-destructuring": 0,
- "no-shadow": 0,
- "no-unused-vars": [
- 1,
- {
- "ignoreRestSiblings": false
- }
- ],
- "prettier/prettier": [
- 2,
- {
- "bracketSpacing": true,
- "printWidth": 140,
- "singleQuote": true,
- "trailingComma": "none",
- "tabWidth": 4,
- "useTabs": false,
- "endOfLine": "auto"
- }
- ]
- }
-}
diff --git a/remix/.gitignore b/remix/.gitignore
deleted file mode 100644
index 3f7bf98da..000000000
--- a/remix/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-node_modules
-
-/.cache
-/build
-/public/build
-.env
diff --git a/remix/.prettierrc b/remix/.prettierrc
deleted file mode 100644
index 67601586d..000000000
--- a/remix/.prettierrc
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "bracketSpacing": true,
- "printWidth": 140,
- "singleQuote": true,
- "trailingComma": "none",
- "tabWidth": 4,
- "useTabs": false
-}
diff --git a/remix/README.md b/remix/README.md
deleted file mode 100644
index bf7b3ffe2..000000000
--- a/remix/README.md
+++ /dev/null
@@ -1,57 +0,0 @@
-# Welcome to Remix!
-
-- [Remix Docs](https://remix.run/docs)
-
-## Development
-
-From your terminal:
-
-```sh
-npm install
-```
-
-```sh
-npm run dev
-```
-
-This starts your app in development mode, rebuilding assets on file changes.
-
-## Deployment
-
-First, build your app for production:
-
-```sh
-npm run build
-```
-
-Then run the app in production mode:
-
-```sh
-npm start
-```
-
-Now you'll need to pick a host to deploy it to.
-
-### DIY
-
-If you're familiar with deploying node applications, the built-in Remix app server is production-ready.
-
-Make sure to deploy the output of `remix build`
-
-- `build/`
-- `public/build/`
-
-### Using a Template
-
-When you ran `npx create-remix@latest` there were a few choices for hosting. You can run that again to create a new project, then copy over your `app/` folder to the new project that's pre-configured for your target server.
-
-```sh
-cd ..
-# create a new project, and pick a pre-configured host
-npx create-remix@latest
-cd my-new-remix-app
-# remove the new project's app (not the old one!)
-rm -rf app
-# copy your app over
-cp -R ../my-old-remix-app/app app
-```
diff --git a/remix/app/assets/images/auth/auth-blue-card.svg b/remix/app/assets/images/auth/auth-blue-card.svg
deleted file mode 100644
index 6c9fe3e73..000000000
--- a/remix/app/assets/images/auth/auth-blue-card.svg
+++ /dev/null
@@ -1,65 +0,0 @@
-
diff --git a/remix/app/assets/images/auth/auth-pattern-dark.svg b/remix/app/assets/images/auth/auth-pattern-dark.svg
deleted file mode 100644
index aa0e4ab22..000000000
--- a/remix/app/assets/images/auth/auth-pattern-dark.svg
+++ /dev/null
@@ -1,39 +0,0 @@
-
diff --git a/remix/app/assets/images/auth/auth-pattern.svg b/remix/app/assets/images/auth/auth-pattern.svg
deleted file mode 100644
index b7ac8e278..000000000
--- a/remix/app/assets/images/auth/auth-pattern.svg
+++ /dev/null
@@ -1,39 +0,0 @@
-
diff --git a/remix/app/assets/images/auth/auth-purple-card.svg b/remix/app/assets/images/auth/auth-purple-card.svg
deleted file mode 100644
index c724e0a32..000000000
--- a/remix/app/assets/images/auth/auth-purple-card.svg
+++ /dev/null
@@ -1,69 +0,0 @@
-
diff --git a/remix/app/assets/images/auth/auth-signup-blue-card.svg b/remix/app/assets/images/auth/auth-signup-blue-card.svg
deleted file mode 100644
index ebb8e85f9..000000000
--- a/remix/app/assets/images/auth/auth-signup-blue-card.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/remix/app/assets/images/auth/auth-signup-white-card.svg b/remix/app/assets/images/auth/auth-signup-white-card.svg
deleted file mode 100644
index 56b97e200..000000000
--- a/remix/app/assets/images/auth/auth-signup-white-card.svg
+++ /dev/null
@@ -1,40 +0,0 @@
-
diff --git a/remix/app/assets/images/icons/earning.svg b/remix/app/assets/images/icons/earning.svg
deleted file mode 100644
index e877b599e..000000000
--- a/remix/app/assets/images/icons/earning.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/remix/app/assets/images/icons/social-google.svg b/remix/app/assets/images/icons/social-google.svg
deleted file mode 100644
index 2231ce986..000000000
--- a/remix/app/assets/images/icons/social-google.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/remix/app/assets/images/logo-dark.svg b/remix/app/assets/images/logo-dark.svg
deleted file mode 100644
index 50adaf925..000000000
--- a/remix/app/assets/images/logo-dark.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
diff --git a/remix/app/assets/images/logo-white.svg b/remix/app/assets/images/logo-white.svg
deleted file mode 100644
index 7d82d3d42..000000000
--- a/remix/app/assets/images/logo-white.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
diff --git a/remix/app/assets/images/logo.svg b/remix/app/assets/images/logo.svg
deleted file mode 100644
index 79eb9bd9d..000000000
--- a/remix/app/assets/images/logo.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
diff --git a/remix/app/assets/images/maintenance/img-error-bg-dark.svg b/remix/app/assets/images/maintenance/img-error-bg-dark.svg
deleted file mode 100644
index ba7f72ae9..000000000
--- a/remix/app/assets/images/maintenance/img-error-bg-dark.svg
+++ /dev/null
@@ -1,34 +0,0 @@
-
diff --git a/remix/app/assets/images/maintenance/img-error-bg.svg b/remix/app/assets/images/maintenance/img-error-bg.svg
deleted file mode 100644
index 57af439c9..000000000
--- a/remix/app/assets/images/maintenance/img-error-bg.svg
+++ /dev/null
@@ -1,34 +0,0 @@
-
diff --git a/remix/app/assets/images/maintenance/img-error-blue.svg b/remix/app/assets/images/maintenance/img-error-blue.svg
deleted file mode 100644
index a72084386..000000000
--- a/remix/app/assets/images/maintenance/img-error-blue.svg
+++ /dev/null
@@ -1,43 +0,0 @@
-
diff --git a/remix/app/assets/images/maintenance/img-error-purple.svg b/remix/app/assets/images/maintenance/img-error-purple.svg
deleted file mode 100644
index 12904c1a8..000000000
--- a/remix/app/assets/images/maintenance/img-error-purple.svg
+++ /dev/null
@@ -1,42 +0,0 @@
-
diff --git a/remix/app/assets/images/maintenance/img-error-text.svg b/remix/app/assets/images/maintenance/img-error-text.svg
deleted file mode 100644
index 16ed50aaf..000000000
--- a/remix/app/assets/images/maintenance/img-error-text.svg
+++ /dev/null
@@ -1,27 +0,0 @@
-
diff --git a/remix/app/assets/images/users/user-round.svg b/remix/app/assets/images/users/user-round.svg
deleted file mode 100644
index db47c4ba8..000000000
--- a/remix/app/assets/images/users/user-round.svg
+++ /dev/null
@@ -1,15 +0,0 @@
-
diff --git a/remix/app/components/authentication/AuthCardWrapper.js b/remix/app/components/authentication/AuthCardWrapper.js
deleted file mode 100644
index 2f047f39c..000000000
--- a/remix/app/components/authentication/AuthCardWrapper.js
+++ /dev/null
@@ -1,33 +0,0 @@
-// material-ui
-import { Box } from '@mui/material';
-
-// project import
-import MainCard from 'ui-component/cards/MainCard';
-
-//types
-import PropTypes from 'prop-types';
-
-// ==============================|| AUTHENTICATION CARD WRAPPER ||============================== //
-
-const AuthCardWrapper = ({ children, ...other }) => (
- *': {
- flexGrow: 1,
- flexBasis: '50%'
- }
- }}
- content={false}
- {...other}
- >
- {children}
-
-);
-
-AuthCardWrapper.propTypes = {
- children: PropTypes.node
-};
-
-export default AuthCardWrapper;
diff --git a/remix/app/components/authentication/AuthWrapper1.js b/remix/app/components/authentication/AuthWrapper1.js
deleted file mode 100644
index a78e971aa..000000000
--- a/remix/app/components/authentication/AuthWrapper1.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// material-ui
-import { styled } from '@mui/material/styles';
-
-// ==============================|| AUTHENTICATION 1 WRAPPER ||============================== //
-
-const AuthWrapper1 = styled('div')(({ theme }) => ({
- backgroundColor: theme.palette.primary.light,
- minHeight: '100vh'
-}));
-
-export default AuthWrapper1;
diff --git a/remix/app/components/authentication/auth-forms/AuthLogin.js b/remix/app/components/authentication/auth-forms/AuthLogin.js
deleted file mode 100644
index 7dd687a0b..000000000
--- a/remix/app/components/authentication/auth-forms/AuthLogin.js
+++ /dev/null
@@ -1,247 +0,0 @@
-import { useState } from 'react';
-import { useSelector } from 'react-redux';
-
-// material-ui
-import { useTheme } from '@mui/material/styles';
-import {
- Box,
- Button,
- Checkbox,
- Divider,
- FormControl,
- FormControlLabel,
- FormHelperText,
- Grid,
- IconButton,
- InputAdornment,
- InputLabel,
- OutlinedInput,
- Stack,
- Typography,
- useMediaQuery
-} from '@mui/material';
-
-// third party
-import * as Yup from 'yup';
-import { Formik } from 'formik';
-
-// project imports
-import useScriptRef from 'hooks/useScriptRef';
-import AnimateButton from 'ui-component/extended/AnimateButton';
-
-// assets
-import Visibility from '@mui/icons-material/Visibility';
-import VisibilityOff from '@mui/icons-material/VisibilityOff';
-
-import Google from 'assets/images/icons/social-google.svg';
-
-// ============================|| FIREBASE - LOGIN ||============================ //
-
-const FirebaseLogin = ({ ...others }) => {
- const theme = useTheme();
- const scriptedRef = useScriptRef();
- const matchDownSM = useMediaQuery(theme.breakpoints.down('md'));
- const customization = useSelector((state) => state.customization);
- const [checked, setChecked] = useState(true);
-
- const googleHandler = async () => {
- console.error('Login');
- };
-
- const [showPassword, setShowPassword] = useState(false);
- const handleClickShowPassword = () => {
- setShowPassword(!showPassword);
- };
-
- const handleMouseDownPassword = (event) => {
- event.preventDefault();
- };
-
- return (
- <>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sign in with Email address
-
-
-
-
- {
- try {
- if (scriptedRef.current) {
- setStatus({ success: true });
- setSubmitting(false);
- }
- } catch (err) {
- console.error(err);
- if (scriptedRef.current) {
- setStatus({ success: false });
- setErrors({ submit: err.message });
- setSubmitting(false);
- }
- }
- }}
- >
- {({ errors, handleBlur, handleChange, handleSubmit, isSubmitting, touched, values }) => (
-
- )}
-
- >
- );
-};
-
-export default FirebaseLogin;
diff --git a/remix/app/components/authentication/auth-forms/AuthRegister.js b/remix/app/components/authentication/auth-forms/AuthRegister.js
deleted file mode 100644
index ebadd12e7..000000000
--- a/remix/app/components/authentication/auth-forms/AuthRegister.js
+++ /dev/null
@@ -1,306 +0,0 @@
-import { Link } from '@remix-run/react';
-import { useState, useEffect } from 'react';
-import { useSelector } from 'react-redux';
-
-// material-ui
-import { useTheme } from '@mui/material/styles';
-import {
- Box,
- Button,
- Checkbox,
- Divider,
- FormControl,
- FormControlLabel,
- FormHelperText,
- Grid,
- IconButton,
- InputAdornment,
- InputLabel,
- OutlinedInput,
- TextField,
- Typography,
- useMediaQuery
-} from '@mui/material';
-
-// third party
-import * as Yup from 'yup';
-import { Formik } from 'formik';
-
-// project imports
-import useScriptRef from 'hooks/useScriptRef';
-import Google from 'assets/images/icons/social-google.svg';
-import AnimateButton from 'ui-component/extended/AnimateButton';
-import { strengthColor, strengthIndicator } from 'utils/password-strength';
-
-// assets
-import Visibility from '@mui/icons-material/Visibility';
-import VisibilityOff from '@mui/icons-material/VisibilityOff';
-
-// ===========================|| FIREBASE - REGISTER ||=========================== //
-
-const FirebaseRegister = ({ ...others }) => {
- const theme = useTheme();
- const scriptedRef = useScriptRef();
- const matchDownSM = useMediaQuery(theme.breakpoints.down('md'));
- const customization = useSelector((state) => state.customization);
- const [showPassword, setShowPassword] = useState(false);
- const [checked, setChecked] = useState(true);
-
- const [strength, setStrength] = useState(0);
- const [level, setLevel] = useState();
-
- const googleHandler = async () => {
- console.error('Register');
- };
-
- const handleClickShowPassword = () => {
- setShowPassword(!showPassword);
- };
-
- const handleMouseDownPassword = (event) => {
- event.preventDefault();
- };
-
- const changePassword = (value) => {
- const temp = strengthIndicator(value);
- setStrength(temp);
- setLevel(strengthColor(temp));
- };
-
- useEffect(() => {
- changePassword('123456');
- }, []);
-
- return (
- <>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sign up with Email address
-
-
-
-
- {
- try {
- if (scriptedRef.current) {
- setStatus({ success: true });
- setSubmitting(false);
- }
- } catch (err) {
- console.error(err);
- if (scriptedRef.current) {
- setStatus({ success: false });
- setErrors({ submit: err.message });
- setSubmitting(false);
- }
- }
- }}
- >
- {({ errors, handleBlur, handleChange, handleSubmit, isSubmitting, touched, values }) => (
-
- )}
-
- >
- );
-};
-
-export default FirebaseRegister;
diff --git a/remix/app/components/dashboard/BajajAreaChartCard.client.js b/remix/app/components/dashboard/BajajAreaChartCard.client.js
deleted file mode 100644
index 7062090e9..000000000
--- a/remix/app/components/dashboard/BajajAreaChartCard.client.js
+++ /dev/null
@@ -1,63 +0,0 @@
-import { useEffect } from 'react';
-import { useSelector } from 'react-redux';
-
-// material-ui
-import { useTheme } from '@mui/material/styles';
-import { Card, Grid, Typography } from '@mui/material';
-
-// project imports
-import chartData from './chart-data/bajaj-area-chart';
-
-// third-party
-import ApexCharts from 'apexcharts';
-import Chart from 'react-apexcharts';
-
-// ===========================|| DASHBOARD DEFAULT - BAJAJ AREA CHART CARD ||=========================== //
-
-const BajajAreaChartCard = () => {
- const theme = useTheme();
- const customization = useSelector((state) => state.customization);
- const { navType } = customization;
-
- const orangeDark = theme.palette.secondary[800];
-
- useEffect(() => {
- const newSupportChart = {
- ...chartData.options,
- colors: [orangeDark],
- tooltip: {
- theme: 'light'
- }
- };
- ApexCharts.exec(`support-chart`, 'updateOptions', newSupportChart);
- }, [navType, orangeDark]);
-
- return (
-
-
-
-
-
-
- Bajaj Finery
-
-
-
-
- $1839.00
-
-
-
-
-
-
- 10% Profit
-
-
-
-
-
- );
-};
-
-export default BajajAreaChartCard;
diff --git a/remix/app/components/dashboard/EarningCard.js b/remix/app/components/dashboard/EarningCard.js
deleted file mode 100644
index 9e10e2010..000000000
--- a/remix/app/components/dashboard/EarningCard.js
+++ /dev/null
@@ -1,189 +0,0 @@
-import { useState } from 'react';
-
-// material-ui
-import { styled, useTheme } from '@mui/material/styles';
-import { Avatar, Box, Grid, Menu, MenuItem, Typography } from '@mui/material';
-
-// project imports
-import MainCard from 'ui-component/cards/MainCard';
-import SkeletonEarningCard from 'ui-component/cards/Skeleton/EarningCard';
-
-// types
-import PropTypes from 'prop-types';
-
-// assets
-import EarningIcon from 'assets/images/icons/earning.svg';
-import MoreHorizIcon from '@mui/icons-material/MoreHoriz';
-import ArrowUpwardIcon from '@mui/icons-material/ArrowUpward';
-import GetAppTwoToneIcon from '@mui/icons-material/GetAppOutlined';
-import FileCopyTwoToneIcon from '@mui/icons-material/FileCopyOutlined';
-import PictureAsPdfTwoToneIcon from '@mui/icons-material/PictureAsPdfOutlined';
-import ArchiveTwoToneIcon from '@mui/icons-material/ArchiveOutlined';
-
-const CardWrapper = styled(MainCard)(({ theme }) => ({
- backgroundColor: theme.palette.secondary.dark,
- color: '#fff',
- overflow: 'hidden',
- position: 'relative',
- '&:after': {
- content: '""',
- position: 'absolute',
- width: 210,
- height: 210,
- background: theme.palette.secondary[800],
- borderRadius: '50%',
- top: -85,
- right: -95,
- [theme.breakpoints.down('sm')]: {
- top: -105,
- right: -140
- }
- },
- '&:before': {
- content: '""',
- position: 'absolute',
- width: 210,
- height: 210,
- background: theme.palette.secondary[800],
- borderRadius: '50%',
- top: -125,
- right: -15,
- opacity: 0.5,
- [theme.breakpoints.down('sm')]: {
- top: -155,
- right: -70
- }
- }
-}));
-
-// ===========================|| DASHBOARD DEFAULT - EARNING CARD ||=========================== //
-
-const EarningCard = ({ isLoading }) => {
- const theme = useTheme();
-
- const [anchorEl, setAnchorEl] = useState(null);
-
- const handleClick = (event) => {
- setAnchorEl(event.currentTarget);
- };
-
- const handleClose = () => {
- setAnchorEl(null);
- };
-
- return (
- <>
- {isLoading ? (
-
- ) : (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $500.00
-
-
-
-
-
-
-
-
-
-
-
- Total Earning
-
-
-
-
-
- )}
- >
- );
-};
-
-EarningCard.propTypes = {
- isLoading: PropTypes.bool
-};
-
-export default EarningCard;
diff --git a/remix/app/components/dashboard/PopularCard.js b/remix/app/components/dashboard/PopularCard.js
deleted file mode 100644
index aea21f493..000000000
--- a/remix/app/components/dashboard/PopularCard.js
+++ /dev/null
@@ -1,311 +0,0 @@
-import { useState } from 'react';
-
-// material-ui
-import { useTheme } from '@mui/material/styles';
-import { Avatar, Button, CardActions, CardContent, Divider, Grid, Menu, MenuItem, Typography } from '@mui/material';
-
-// project imports
-import { gridSpacing } from 'store/constant';
-import MainCard from 'ui-component/cards/MainCard';
-import SkeletonPopularCard from 'ui-component/cards/Skeleton/PopularCard';
-import BajajAreaChartCard from './BajajAreaChartCard.client';
-
-// types
-import PropTypes from 'prop-types';
-
-// assets
-import ChevronRightOutlinedIcon from '@mui/icons-material/ChevronRightOutlined';
-import MoreHorizOutlinedIcon from '@mui/icons-material/MoreHorizOutlined';
-import KeyboardArrowUpOutlinedIcon from '@mui/icons-material/KeyboardArrowUpOutlined';
-import KeyboardArrowDownOutlinedIcon from '@mui/icons-material/KeyboardArrowDownOutlined';
-
-// ==============================|| DASHBOARD DEFAULT - POPULAR CARD ||============================== //
-
-const PopularCard = ({ isLoading }) => {
- const theme = useTheme();
-
- const [anchorEl, setAnchorEl] = useState(null);
-
- const handleClick = (event) => {
- setAnchorEl(event.currentTarget);
- };
-
- const handleClose = () => {
- setAnchorEl(null);
- };
-
- return (
- <>
- {isLoading ? (
-
- ) : (
-
-
-
-
-
-
- Popular Stocks
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bajaj Finery
-
-
-
-
-
-
- $1839.00
-
-
-
-
-
-
-
-
-
-
-
-
-
- 10% Profit
-
-
-
-
-
-
-
-
-
- TTML
-
-
-
-
-
-
- $100.00
-
-
-
-
-
-
-
-
-
-
-
-
-
- 10% loss
-
-
-
-
-
-
-
-
-
- Reliance
-
-
-
-
-
-
- $200.00
-
-
-
-
-
-
-
-
-
-
-
-
-
- 10% Profit
-
-
-
-
-
-
-
-
-
- TTML
-
-
-
-
-
-
- $189.00
-
-
-
-
-
-
-
-
-
-
-
-
-
- 10% loss
-
-
-
-
-
-
-
-
-
- Stolon
-
-
-
-
-
-
- $189.00
-
-
-
-
-
-
-
-
-
-
-
-
-
- 10% loss
-
-
-
-
-
-
-
-
-
-
- )}
- >
- );
-};
-
-PopularCard.propTypes = {
- isLoading: PropTypes.bool
-};
-
-export default PopularCard;
diff --git a/remix/app/components/dashboard/TotalGrowthBarCard.js b/remix/app/components/dashboard/TotalGrowthBarCard.js
deleted file mode 100644
index b81b19ee1..000000000
--- a/remix/app/components/dashboard/TotalGrowthBarCard.js
+++ /dev/null
@@ -1,84 +0,0 @@
-import { useState } from 'react';
-
-// material-ui
-import { Grid, MenuItem, TextField, Typography } from '@mui/material';
-
-// project imports
-import { gridSpacing } from 'store/constant';
-import MainCard from 'ui-component/cards/MainCard';
-import SkeletonTotalGrowthBarChart from 'ui-component/cards/Skeleton/TotalGrowthBarChart';
-import TotalGrowthBarChart from './TotalGrowthBarChart.client';
-
-// types
-import PropTypes from 'prop-types';
-
-const status = [
- {
- value: 'today',
- label: 'Today'
- },
- {
- value: 'month',
- label: 'This Month'
- },
- {
- value: 'year',
- label: 'This Year'
- }
-];
-
-// ==============================|| DASHBOARD DEFAULT - TOTAL GROWTH BAR CHART CARD ||============================== //
-
-const TotalGrowthBarCard = ({ isLoading }) => {
- const [value, setValue] = useState('today');
-
- return (
- <>
- {isLoading ? (
-
- ) : (
-
-
-
-
-
-
-
- Total Growth
-
-
- $2,324.00
-
-
-
-
- setValue(e.target.value)}
- >
- {status.map((option) => (
-
- ))}
-
-
-
-
-
-
-
-
-
- )}
- >
- );
-};
-
-TotalGrowthBarCard.propTypes = {
- isLoading: PropTypes.bool
-};
-
-export default TotalGrowthBarCard;
diff --git a/remix/app/components/dashboard/TotalGrowthBarChart.client.js b/remix/app/components/dashboard/TotalGrowthBarChart.client.js
deleted file mode 100644
index 1a5a7c8be..000000000
--- a/remix/app/components/dashboard/TotalGrowthBarChart.client.js
+++ /dev/null
@@ -1,82 +0,0 @@
-import { useEffect } from 'react';
-import { useSelector } from 'react-redux';
-
-// material-ui
-import { useTheme } from '@mui/material/styles';
-
-// third-party
-import ApexCharts from 'apexcharts';
-import Chart from 'react-apexcharts';
-
-// chart data
-import chartData from './chart-data/total-growth-bar-chart';
-
-// types
-import PropTypes from 'prop-types';
-
-// ==============================|| DASHBOARD DEFAULT - TOTAL GROWTH BAR CHART ||============================== //
-
-const TotalGrowthBarChart = ({ isLoading }) => {
- const theme = useTheme();
- const customization = useSelector((state) => state.customization);
-
- const { navType } = customization;
- const { primary } = theme.palette.text;
- const darkLight = theme.palette.dark.light;
- const grey200 = theme.palette.grey[200];
- const grey500 = theme.palette.grey[500];
-
- const primary200 = theme.palette.primary[200];
- const primaryDark = theme.palette.primary.dark;
- const secondaryMain = theme.palette.secondary.main;
- const secondaryLight = theme.palette.secondary.light;
-
- useEffect(() => {
- const newChartData = {
- ...chartData.options,
- colors: [primary200, primaryDark, secondaryMain, secondaryLight],
- xaxis: {
- labels: {
- style: {
- colors: [primary, primary, primary, primary, primary, primary, primary, primary, primary, primary, primary, primary]
- }
- }
- },
- yaxis: {
- labels: {
- style: {
- colors: [primary]
- }
- }
- },
- grid: {
- borderColor: grey200
- },
- tooltip: {
- theme: 'light'
- },
- legend: {
- labels: {
- colors: grey500
- }
- }
- };
-
- // do not load chart when loading
- if (!isLoading) {
- ApexCharts.exec(`bar-chart`, 'updateOptions', newChartData);
- }
- }, [navType, primary200, primaryDark, secondaryMain, secondaryLight, primary, darkLight, grey200, isLoading, grey500]);
-
- return (
- <>
-
- >
- );
-};
-
-TotalGrowthBarChart.propTypes = {
- isLoading: PropTypes.bool
-};
-
-export default TotalGrowthBarChart;
diff --git a/remix/app/components/dashboard/TotalIncomeDarkCard.js b/remix/app/components/dashboard/TotalIncomeDarkCard.js
deleted file mode 100644
index b9eb67dc1..000000000
--- a/remix/app/components/dashboard/TotalIncomeDarkCard.js
+++ /dev/null
@@ -1,100 +0,0 @@
-// material-ui
-import { styled, useTheme } from '@mui/material/styles';
-import { Avatar, Box, List, ListItem, ListItemAvatar, ListItemText, Typography } from '@mui/material';
-
-// project imports
-import MainCard from 'ui-component/cards/MainCard';
-import TotalIncomeCard from 'ui-component/cards/Skeleton/TotalIncomeCard';
-
-// assets
-import TableChartOutlinedIcon from '@mui/icons-material/TableChartOutlined';
-
-// types
-import PropTypes from 'prop-types';
-
-// styles
-const CardWrapper = styled(MainCard)(({ theme }) => ({
- backgroundColor: theme.palette.primary.dark,
- color: theme.palette.primary.light,
- overflow: 'hidden',
- position: 'relative',
- '&:after': {
- content: '""',
- position: 'absolute',
- width: 210,
- height: 210,
- background: `linear-gradient(210.04deg, ${theme.palette.primary[200]} -50.94%, rgba(144, 202, 249, 0) 83.49%)`,
- borderRadius: '50%',
- top: -30,
- right: -180
- },
- '&:before': {
- content: '""',
- position: 'absolute',
- width: 210,
- height: 210,
- background: `linear-gradient(140.9deg, ${theme.palette.primary[200]} -14.02%, rgba(144, 202, 249, 0) 77.58%)`,
- borderRadius: '50%',
- top: -160,
- right: -130
- }
-}));
-
-// ==============================|| DASHBOARD - TOTAL INCOME DARK CARD ||============================== //
-
-const TotalIncomeDarkCard = ({ isLoading }) => {
- const theme = useTheme();
-
- return (
- <>
- {isLoading ? (
-
- ) : (
-
-
-
-
-
-
-
-
-
-
- $203k
-
- }
- secondary={
-
- Total Income
-
- }
- />
-
-
-
-
- )}
- >
- );
-};
-
-TotalIncomeDarkCard.propTypes = {
- isLoading: PropTypes.bool
-};
-
-export default TotalIncomeDarkCard;
diff --git a/remix/app/components/dashboard/TotalIncomeLightCard.js b/remix/app/components/dashboard/TotalIncomeLightCard.js
deleted file mode 100644
index 0f66e014c..000000000
--- a/remix/app/components/dashboard/TotalIncomeLightCard.js
+++ /dev/null
@@ -1,100 +0,0 @@
-// material-ui
-import { useTheme, styled } from '@mui/material/styles';
-import { Avatar, Box, List, ListItem, ListItemAvatar, ListItemText, Typography } from '@mui/material';
-
-// project imports
-import MainCard from 'ui-component/cards/MainCard';
-import TotalIncomeCard from 'ui-component/cards/Skeleton/TotalIncomeCard';
-
-// assets
-import StorefrontTwoToneIcon from '@mui/icons-material/StorefrontTwoTone';
-
-// types
-import PropTypes from 'prop-types';
-
-// styles
-const CardWrapper = styled(MainCard)(({ theme }) => ({
- overflow: 'hidden',
- position: 'relative',
- '&:after': {
- content: '""',
- position: 'absolute',
- width: 210,
- height: 210,
- background: `linear-gradient(210.04deg, ${theme.palette.warning.dark} -50.94%, rgba(144, 202, 249, 0) 83.49%)`,
- borderRadius: '50%',
- top: -30,
- right: -180
- },
- '&:before': {
- content: '""',
- position: 'absolute',
- width: 210,
- height: 210,
- background: `linear-gradient(140.9deg, ${theme.palette.warning.dark} -14.02%, rgba(144, 202, 249, 0) 70.50%)`,
- borderRadius: '50%',
- top: -160,
- right: -130
- }
-}));
-
-// ==============================|| DASHBOARD - TOTAL INCOME LIGHT CARD ||============================== //
-
-const TotalIncomeLightCard = ({ isLoading }) => {
- const theme = useTheme();
-
- return (
- <>
- {isLoading ? (
-
- ) : (
-
-
-
-
-
-
-
-
-
- $203k}
- secondary={
-
- Total Income
-
- }
- />
-
-
-
-
- )}
- >
- );
-};
-
-TotalIncomeLightCard.propTypes = {
- isLoading: PropTypes.bool
-};
-
-export default TotalIncomeLightCard;
diff --git a/remix/app/components/dashboard/TotalOrderLineCard.js b/remix/app/components/dashboard/TotalOrderLineCard.js
deleted file mode 100644
index ab04d3bb7..000000000
--- a/remix/app/components/dashboard/TotalOrderLineCard.js
+++ /dev/null
@@ -1,190 +0,0 @@
-import { useState } from 'react';
-
-// material-ui
-import { useTheme, styled } from '@mui/material/styles';
-import { Avatar, Box, Button, Grid, Typography } from '@mui/material';
-
-// project imports
-import MainCard from 'ui-component/cards/MainCard';
-import SkeletonTotalOrderCard from 'ui-component/cards/Skeleton/EarningCard';
-import TotalOrderLineChartCard from './TotalOrderLineChartCard.client';
-
-// assets
-import LocalMallOutlinedIcon from '@mui/icons-material/LocalMallOutlined';
-import ArrowDownwardIcon from '@mui/icons-material/ArrowDownward';
-
-// types
-import PropTypes from 'prop-types';
-
-const CardWrapper = styled(MainCard)(({ theme }) => ({
- backgroundColor: theme.palette.primary.dark,
- color: '#fff',
- overflow: 'hidden',
- position: 'relative',
- '&>div': {
- position: 'relative',
- zIndex: 5
- },
- '&:after': {
- content: '""',
- position: 'absolute',
- width: 210,
- height: 210,
- background: theme.palette.primary[800],
- borderRadius: '50%',
- zIndex: 1,
- top: -85,
- right: -95,
- [theme.breakpoints.down('sm')]: {
- top: -105,
- right: -140
- }
- },
- '&:before': {
- content: '""',
- position: 'absolute',
- zIndex: 1,
- width: 210,
- height: 210,
- background: theme.palette.primary[800],
- borderRadius: '50%',
- top: -125,
- right: -15,
- opacity: 0.5,
- [theme.breakpoints.down('sm')]: {
- top: -155,
- right: -70
- }
- }
-}));
-
-// ==============================|| DASHBOARD - TOTAL ORDER LINE CHART CARD ||============================== //
-
-const TotalOrderLineCard = ({ isLoading }) => {
- const theme = useTheme();
-
- const [timeValue, setTimeValue] = useState(false);
- const handleChangeTime = (event, newValue) => {
- setTimeValue(newValue);
- };
-
- return (
- <>
- {isLoading ? (
-
- ) : (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {timeValue ? (
-
- $108
-
- ) : (
-
- $961
-
- )}
-
-
-
-
-
-
-
-
- Total Order
-
-
-
-
-
-
-
-
-
-
-
-
- )}
- >
- );
-};
-
-TotalOrderLineCard.propTypes = {
- isLoading: PropTypes.bool
-};
-
-export default TotalOrderLineCard;
diff --git a/remix/app/components/dashboard/TotalOrderLineChartCard.client.js b/remix/app/components/dashboard/TotalOrderLineChartCard.client.js
deleted file mode 100644
index 00b9e7ffc..000000000
--- a/remix/app/components/dashboard/TotalOrderLineChartCard.client.js
+++ /dev/null
@@ -1,21 +0,0 @@
-// third-party
-import Chart from 'react-apexcharts';
-
-// chart data
-import ChartDataMonth from './chart-data/total-order-month-line-chart';
-import ChartDataYear from './chart-data/total-order-year-line-chart';
-
-// types
-import PropTypes from 'prop-types';
-
-// ==============================|| DASHBOARD - TOTAL ORDER LINE CHART CARD ||============================== //
-
-const TotalOrderLineChartCard = ({ timeValue }) => {
- return <>{timeValue ? : }>;
-};
-
-TotalOrderLineChartCard.propTypes = {
- timeValue: PropTypes.bool
-};
-
-export default TotalOrderLineChartCard;
diff --git a/remix/app/components/dashboard/chart-data/bajaj-area-chart.js b/remix/app/components/dashboard/chart-data/bajaj-area-chart.js
deleted file mode 100644
index ebcf4b250..000000000
--- a/remix/app/components/dashboard/chart-data/bajaj-area-chart.js
+++ /dev/null
@@ -1,42 +0,0 @@
-// ===========================|| DASHBOARD - BAJAJ AREA CHART ||=========================== //
-
-const chartData = {
- type: 'area',
- height: 95,
- options: {
- chart: {
- id: 'support-chart',
- sparkline: {
- enabled: true
- }
- },
- dataLabels: {
- enabled: false
- },
- stroke: {
- curve: 'smooth',
- width: 1
- },
- tooltip: {
- fixed: {
- enabled: false
- },
- x: {
- show: false
- },
- y: {
- title: 'Ticket '
- },
- marker: {
- show: false
- }
- }
- },
- series: [
- {
- data: [0, 15, 10, 50, 30, 40, 25]
- }
- ]
-};
-
-export default chartData;
diff --git a/remix/app/components/dashboard/chart-data/total-growth-bar-chart.js b/remix/app/components/dashboard/chart-data/total-growth-bar-chart.js
deleted file mode 100644
index 0bc1ab0b8..000000000
--- a/remix/app/components/dashboard/chart-data/total-growth-bar-chart.js
+++ /dev/null
@@ -1,87 +0,0 @@
-// ===========================|| DASHBOARD - TOTAL GROWTH BAR CHART ||=========================== //
-
-const chartData = {
- height: 480,
- type: 'bar',
- options: {
- chart: {
- id: 'bar-chart',
- stacked: true,
- toolbar: {
- show: true
- },
- zoom: {
- enabled: true
- }
- },
- responsive: [
- {
- breakpoint: 480,
- options: {
- legend: {
- position: 'bottom',
- offsetX: -10,
- offsetY: 0
- }
- }
- }
- ],
- plotOptions: {
- bar: {
- horizontal: false,
- columnWidth: '50%'
- }
- },
- xaxis: {
- type: 'category',
- categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
- },
- legend: {
- show: true,
- fontSize: '14px',
- fontFamily: `'Roboto', sans-serif`,
- position: 'bottom',
- offsetX: 20,
- labels: {
- useSeriesColors: false
- },
- markers: {
- width: 16,
- height: 16,
- radius: 5
- },
- itemMargin: {
- horizontal: 15,
- vertical: 8
- }
- },
- fill: {
- type: 'solid'
- },
- dataLabels: {
- enabled: false
- },
- grid: {
- show: true
- }
- },
- series: [
- {
- name: 'Investment',
- data: [35, 125, 35, 35, 35, 80, 35, 20, 35, 45, 15, 75]
- },
- {
- name: 'Loss',
- data: [35, 15, 15, 35, 65, 40, 80, 25, 15, 85, 25, 75]
- },
- {
- name: 'Profit',
- data: [35, 145, 35, 35, 20, 105, 100, 10, 65, 45, 30, 10]
- },
- {
- name: 'Maintenance',
- data: [0, 0, 75, 0, 0, 115, 0, 0, 0, 0, 150, 0]
- }
- ]
-};
-export default chartData;
diff --git a/remix/app/components/dashboard/chart-data/total-order-month-line-chart.js b/remix/app/components/dashboard/chart-data/total-order-month-line-chart.js
deleted file mode 100644
index 772805b80..000000000
--- a/remix/app/components/dashboard/chart-data/total-order-month-line-chart.js
+++ /dev/null
@@ -1,52 +0,0 @@
-// ===========================|| DASHBOARD - TOTAL ORDER MONTH CHART ||=========================== //
-
-const chartData = {
- type: 'line',
- height: 90,
- options: {
- chart: {
- sparkline: {
- enabled: true
- }
- },
- dataLabels: {
- enabled: false
- },
- colors: ['#fff'],
- fill: {
- type: 'solid',
- opacity: 1
- },
- stroke: {
- curve: 'smooth',
- width: 3
- },
- yaxis: {
- min: 0,
- max: 100
- },
- tooltip: {
- theme: 'dark',
- fixed: {
- enabled: false
- },
- x: {
- show: false
- },
- y: {
- title: 'Total Order'
- },
- marker: {
- show: false
- }
- }
- },
- series: [
- {
- name: 'series1',
- data: [45, 66, 41, 89, 25, 44, 9, 54]
- }
- ]
-};
-
-export default chartData;
diff --git a/remix/app/components/dashboard/chart-data/total-order-year-line-chart.js b/remix/app/components/dashboard/chart-data/total-order-year-line-chart.js
deleted file mode 100644
index bc79ab781..000000000
--- a/remix/app/components/dashboard/chart-data/total-order-year-line-chart.js
+++ /dev/null
@@ -1,52 +0,0 @@
-// ===========================|| DASHBOARD - TOTAL ORDER YEAR CHART ||=========================== //
-
-const chartData = {
- type: 'line',
- height: 90,
- options: {
- chart: {
- sparkline: {
- enabled: true
- }
- },
- dataLabels: {
- enabled: false
- },
- colors: ['#fff'],
- fill: {
- type: 'solid',
- opacity: 1
- },
- stroke: {
- curve: 'smooth',
- width: 3
- },
- yaxis: {
- min: 0,
- max: 100
- },
- tooltip: {
- theme: 'dark',
- fixed: {
- enabled: false
- },
- x: {
- show: false
- },
- y: {
- title: 'Total Order'
- },
- marker: {
- show: false
- }
- }
- },
- series: [
- {
- name: 'series1',
- data: [35, 44, 9, 54, 45, 66, 41, 69]
- }
- ]
-};
-
-export default chartData;
diff --git a/remix/app/entry.client.js b/remix/app/entry.client.js
deleted file mode 100644
index 8d74774ae..000000000
--- a/remix/app/entry.client.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import { RemixBrowser } from '@remix-run/react';
-import { startTransition, StrictMode } from 'react';
-import { hydrateRoot } from 'react-dom/client';
-
-function hydrate() {
- startTransition(() => {
- hydrateRoot(
- document,
-
-
-
- );
- });
-}
-
-if (typeof requestIdleCallback === 'function') {
- requestIdleCallback(hydrate);
-} else {
- // Safari doesn't support requestIdleCallback
- // https://caniuse.com/requestidlecallback
- setTimeout(hydrate, 1);
-}
diff --git a/remix/app/entry.server.js b/remix/app/entry.server.js
deleted file mode 100644
index b1547ae0d..000000000
--- a/remix/app/entry.server.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import { renderToString } from 'react-dom/server';
-import { RemixServer } from '@remix-run/react';
-
-import createCache from '@emotion/cache';
-import { CacheProvider } from '@emotion/react';
-import createEmotionServer from '@emotion/server/create-instance';
-
-const key = 'custom';
-const cache = createCache({ key });
-const { extractCriticalToChunks, constructStyleTagsFromChunks } = createEmotionServer(cache);
-
-export default function handleRequest(request, responseStatusCode, responseHeaders, remixContext) {
- let markup = renderToString(
-
-
-
- );
-
- const chunks = extractCriticalToChunks(markup);
- const styles = constructStyleTagsFromChunks(chunks);
-
- markup = markup.replace('__STYLES__', styles);
-
- responseHeaders.set('Content-Type', 'text/html');
-
- return new Response('' + markup, {
- status: responseStatusCode,
- headers: responseHeaders
- });
-}
diff --git a/remix/app/error/errorPage.js b/remix/app/error/errorPage.js
deleted file mode 100644
index 5d96510f3..000000000
--- a/remix/app/error/errorPage.js
+++ /dev/null
@@ -1,124 +0,0 @@
-import { useNavigate } from '@remix-run/react';
-
-// material-ui
-import { useTheme, styled } from '@mui/material/styles';
-import { Button, Card, CardContent, CardMedia, Grid, Typography } from '@mui/material';
-
-// project imports
-import AnimateButton from 'ui-component/extended/AnimateButton';
-import { gridSpacing } from 'store/constant';
-
-// assets
-import HomeTwoToneIcon from '@mui/icons-material/HomeTwoTone';
-
-import imageBackground from 'assets/images/maintenance/img-error-bg.svg';
-import imageDarkBackground from 'assets/images/maintenance/img-error-bg-dark.svg';
-import imageBlue from 'assets/images/maintenance/img-error-blue.svg';
-import imageText from 'assets/images/maintenance/img-error-text.svg';
-import imagePurple from 'assets/images/maintenance/img-error-purple.svg';
-
-// styles
-const CardMediaWrapper = styled('div')({
- maxWidth: 720,
- margin: '0 auto',
- position: 'relative'
-});
-
-const ErrorWrapper = styled('div')({
- maxWidth: 350,
- margin: '0 auto',
- textAlign: 'center'
-});
-
-const ErrorCard = styled(Card)({
- minHeight: '100vh',
- display: 'flex',
- alignItems: 'center',
- justifyContent: 'center'
-});
-
-const CardMediaBlock = styled('img')({
- position: 'absolute',
- top: 0,
- left: 0,
- width: '100%',
- animation: '3s bounce ease-in-out infinite'
-});
-
-const CardMediaBlue = styled('img')({
- position: 'absolute',
- top: 0,
- left: 0,
- width: '100%',
- animation: '15s wings ease-in-out infinite'
-});
-
-const CardMediaPurple = styled('img')({
- position: 'absolute',
- top: 0,
- left: 0,
- width: '100%',
- animation: '12s wings ease-in-out infinite'
-});
-
-// ==============================|| ERROR PAGE ||============================== //
-
-const ErrorPage = () => {
- const theme = useTheme();
- const navigate = useNavigate();
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Something is wrong
-
-
-
-
- The page you are looking was moved, removed, renamed, or might never exist!{' '}
-
-
-
-
-
- {/* BACK TO HOME */}
-
-
-
-
-
-
-
-
- );
-};
-
-export default ErrorPage;
diff --git a/remix/app/error/index.js b/remix/app/error/index.js
deleted file mode 100644
index e2b22c988..000000000
--- a/remix/app/error/index.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import { useSelector } from 'react-redux';
-
-// material-ui
-import { CssBaseline, StyledEngineProvider } from '@mui/material';
-import { ThemeProvider } from '@mui/material/styles';
-
-// project imports
-import NavigationScroll from 'layout/NavigationScroll';
-import theme from 'themes';
-import ErrorPage from './errorPage';
-
-const Error = () => {
- const customization = useSelector((state) => state.customization);
- return (
-
-
-
-
-
-
-
-
- );
-};
-
-export default Error;
diff --git a/remix/app/hooks/useScriptRef.js b/remix/app/hooks/useScriptRef.js
deleted file mode 100644
index dd9aeb419..000000000
--- a/remix/app/hooks/useScriptRef.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import { useEffect, useRef } from 'react';
-
-// ==============================|| ELEMENT REFERENCE HOOKS ||============================== //
-
-const useScriptRef = () => {
- const scripted = useRef(true);
-
- useEffect(
- () => () => {
- scripted.current = false;
- },
- []
- );
-
- return scripted;
-};
-
-export default useScriptRef;
diff --git a/remix/app/layout/Customization/index.js b/remix/app/layout/Customization/index.js
deleted file mode 100644
index 074b23758..000000000
--- a/remix/app/layout/Customization/index.js
+++ /dev/null
@@ -1,224 +0,0 @@
-import { useState, useEffect } from 'react';
-import { useDispatch, useSelector } from 'react-redux';
-
-// material-ui
-import { useTheme } from '@mui/material/styles';
-import {
- Drawer,
- Fab,
- FormControl,
- FormControlLabel,
- Grid,
- IconButton,
- Radio,
- RadioGroup,
- Slider,
- Tooltip,
- Typography
-} from '@mui/material';
-import { IconSettings } from '../../../node_modules/@tabler/icons-react';
-
-// third-party
-import PerfectScrollbar from 'react-perfect-scrollbar';
-
-// project imports
-import { gridSpacing } from 'store/constant';
-import { SET_BORDER_RADIUS, SET_FONT_FAMILY } from 'store/actions';
-import SubCard from 'ui-component/cards/SubCard';
-import AnimateButton from 'ui-component/extended/AnimateButton';
-
-// concat 'px'
-function valueText(value) {
- return `${value}px`;
-}
-
-// ==============================|| LIVE CUSTOMIZATION ||============================== //
-
-const Customization = () => {
- const theme = useTheme();
- const dispatch = useDispatch();
- const customization = useSelector((state) => state.customization);
-
- // drawer on/off
- const [open, setOpen] = useState(false);
- const handleToggle = () => {
- setOpen(!open);
- };
-
- // state - border radius
- const [borderRadius, setBorderRadius] = useState(customization.borderRadius);
- const handleBorderRadius = (event, newValue) => {
- setBorderRadius(newValue);
- };
-
- useEffect(() => {
- dispatch({ type: SET_BORDER_RADIUS, borderRadius });
- }, [dispatch, borderRadius]);
-
- let initialFont;
- switch (customization.fontFamily) {
- case `'Inter', sans-serif`:
- initialFont = 'Inter';
- break;
- case `'Poppins', sans-serif`:
- initialFont = 'Poppins';
- break;
- case `'Roboto', sans-serif`:
- default:
- initialFont = 'Roboto';
- break;
- }
-
- // state - font family
- const [fontFamily, setFontFamily] = useState(initialFont);
- useEffect(() => {
- let newFont;
- switch (fontFamily) {
- case 'Inter':
- newFont = `'Inter', sans-serif`;
- break;
- case 'Poppins':
- newFont = `'Poppins', sans-serif`;
- break;
- case 'Roboto':
- default:
- newFont = `'Roboto', sans-serif`;
- break;
- }
- dispatch({ type: SET_FONT_FAMILY, fontFamily: newFont });
- }, [dispatch, fontFamily]);
-
- return (
- <>
- {/* toggle button */}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {/* font family */}
-
-
- setFontFamily(e.target.value)}
- name="row-radio-buttons-group"
- >
- }
- label="Roboto"
- sx={{
- '& .MuiSvgIcon-root': { fontSize: 28 },
- '& .MuiFormControlLabel-label': {
- color: theme.palette.grey[900]
- }
- }}
- />
- }
- label="Poppins"
- sx={{
- '& .MuiSvgIcon-root': { fontSize: 28 },
- '& .MuiFormControlLabel-label': {
- color: theme.palette.grey[900]
- }
- }}
- />
- }
- label="Inter"
- sx={{
- '& .MuiSvgIcon-root': { fontSize: 28 },
- '& .MuiFormControlLabel-label': {
- color: theme.palette.grey[900]
- }
- }}
- />
-
-
-
-
-
- {/* border radius */}
-
-
-
-
- 4px
-
-
-
-
-
-
-
- 24px
-
-
-
-
-
-
-
-
- >
- );
-};
-
-export default Customization;
diff --git a/remix/app/layout/MainLayout/Header/NotificationSection/NotificationList.js b/remix/app/layout/MainLayout/Header/NotificationSection/NotificationList.js
deleted file mode 100644
index 864a96972..000000000
--- a/remix/app/layout/MainLayout/Header/NotificationSection/NotificationList.js
+++ /dev/null
@@ -1,290 +0,0 @@
-// material-ui
-import { useTheme, styled } from '@mui/material/styles';
-import {
- Avatar,
- Button,
- Card,
- CardContent,
- Chip,
- Divider,
- Grid,
- List,
- ListItem,
- ListItemAvatar,
- ListItemSecondaryAction,
- ListItemText,
- Stack,
- Typography
-} from '@mui/material';
-
-// assets
-import { IconBrandTelegram, IconBuildingStore, IconMailbox, IconPhoto } from '../../../../../node_modules/@tabler/icons-react';
-import User1 from 'assets/images/users/user-round.svg';
-
-// styles
-const ListItemWrapper = styled('div')(({ theme }) => ({
- cursor: 'pointer',
- padding: 16,
- '&:hover': {
- background: theme.palette.primary?.light
- },
- '& .MuiListItem-root': {
- padding: 0
- }
-}));
-
-// ==============================|| NOTIFICATION LIST ITEM ||============================== //
-
-const NotificationList = () => {
- const theme = useTheme();
-
- const chipSX = {
- height: 24,
- padding: '0 6px'
- };
- const chipErrorSX = {
- ...chipSX,
- color: theme.palette.orange?.dark,
- backgroundColor: theme.palette.orange?.light,
- marginRight: '5px'
- };
-
- const chipWarningSX = {
- ...chipSX,
- color: theme.palette.warning?.dark,
- backgroundColor: theme.palette.warning?.light
- };
-
- const chipSuccessSX = {
- ...chipSX,
- color: theme.palette.success?.dark,
- backgroundColor: theme.palette.success?.light,
- height: 28
- };
-
- return (
-
-
-
-
-
-
-
-
-
-
-
- 2 min ago
-
-
-
-
-
-
-
- It is a long established fact that a reader will be distracted
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Store Verification Done} />
-
-
-
-
- 2 min ago
-
-
-
-
-
-
-
- We have successfully received your request.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Check Your Mail.} />
-
-
-
-
- 2 min ago
-
-
-
-
-
-
-
- All done! Now check your inbox as you're in for a sweet treat!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- John Doe} />
-
-
-
-
- 2 min ago
-
-
-
-
-
-
-
-
- Uploaded two file on
-
- 21 Jan 2020
-
-
-
-
-
-
-
-
-
-
-
-
- demo.jpg
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- John Doe} />
-
-
-
-
- 2 min ago
-
-
-
-
-
-
-
- It is a long established fact that a reader will be distracted
-
-
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default NotificationList;
diff --git a/remix/app/layout/MainLayout/Header/NotificationSection/index.js b/remix/app/layout/MainLayout/Header/NotificationSection/index.js
deleted file mode 100644
index 8a646b499..000000000
--- a/remix/app/layout/MainLayout/Header/NotificationSection/index.js
+++ /dev/null
@@ -1,225 +0,0 @@
-import { Link } from '@remix-run/react';
-import { useState, useRef, useEffect } from 'react';
-
-// material-ui
-import { useTheme } from '@mui/material/styles';
-import {
- Avatar,
- Box,
- Button,
- ButtonBase,
- CardActions,
- Chip,
- ClickAwayListener,
- Divider,
- Grid,
- Paper,
- Popper,
- Stack,
- TextField,
- Typography,
- useMediaQuery
-} from '@mui/material';
-
-// third-party
-import PerfectScrollbar from 'react-perfect-scrollbar';
-
-// project imports
-import MainCard from 'ui-component/cards/MainCard';
-import Transitions from 'ui-component/extended/Transitions';
-import NotificationList from './NotificationList';
-
-// assets
-import { IconBell } from '../../../../../node_modules/@tabler/icons-react';
-
-// notification status options
-const status = [
- {
- value: 'all',
- label: 'All Notification'
- },
- {
- value: 'new',
- label: 'New'
- },
- {
- value: 'unread',
- label: 'Unread'
- },
- {
- value: 'other',
- label: 'Other'
- }
-];
-
-// ==============================|| NOTIFICATION ||============================== //
-
-const NotificationSection = () => {
- const theme = useTheme();
- const matchesXs = useMediaQuery(theme.breakpoints.down('md'));
-
- const [open, setOpen] = useState(false);
- const [value, setValue] = useState('');
- /**
- * anchorRef is used on different componets and specifying one type leads to other components throwing an error
- * */
- const anchorRef = useRef(null);
-
- const handleToggle = () => {
- setOpen((prevOpen) => !prevOpen);
- };
-
- const handleClose = (event) => {
- if (anchorRef.current && anchorRef.current.contains(event.target)) {
- return;
- }
- setOpen(false);
- };
-
- const prevOpen = useRef(open);
- useEffect(() => {
- if (prevOpen.current === true && open === false) {
- anchorRef.current.focus();
- }
- prevOpen.current = open;
- }, [open]);
-
- const handleChange = (event) => {
- if (event?.target.value) setValue(event?.target.value);
- };
-
- return (
- <>
-
-
-
-
-
-
-
-
- {({ TransitionProps }) => (
-
-
-
-
-
-
-
-
-
- All Notification
-
-
-
-
-
- Mark as all read
-
-
-
-
-
-
-
-
-
-
- {status.map((option) => (
-
- ))}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )}
-
- >
- );
-};
-
-export default NotificationSection;
diff --git a/remix/app/layout/MainLayout/Header/ProfileSection/UpgradePlanCard.js b/remix/app/layout/MainLayout/Header/ProfileSection/UpgradePlanCard.js
deleted file mode 100644
index 1aa9e11c5..000000000
--- a/remix/app/layout/MainLayout/Header/ProfileSection/UpgradePlanCard.js
+++ /dev/null
@@ -1,68 +0,0 @@
-// material-ui
-import { styled } from '@mui/material/styles';
-import { Button, Card, CardContent, Grid, Stack, Typography } from '@mui/material';
-
-// project imports
-import AnimateButton from 'ui-component/extended/AnimateButton';
-
-// styles
-const CardStyle = styled(Card)(({ theme }) => ({
- background: theme.palette.warning.light,
- marginTop: '16px',
- marginBottom: '16px',
- overflow: 'hidden',
- position: 'relative',
- '&:after': {
- content: '""',
- position: 'absolute',
- width: '200px',
- height: '200px',
- border: '19px solid ',
- borderColor: theme.palette.warning.main,
- borderRadius: '50%',
- top: '65px',
- right: '-150px'
- },
- '&:before': {
- content: '""',
- position: 'absolute',
- width: '200px',
- height: '200px',
- border: '3px solid ',
- borderColor: theme.palette.warning.main,
- borderRadius: '50%',
- top: '145px',
- right: '-70px'
- }
-}));
-
-// ==============================|| PROFILE MENU - UPGRADE PLAN CARD ||============================== //
-
-const UpgradePlanCard = () => (
-
-
-
-
- Upgrade your plan
-
-
-
- 70% discount for 1 years
- subscriptions.
-
-
-
-
-
-
-
-
-
-
-
-
-);
-
-export default UpgradePlanCard;
diff --git a/remix/app/layout/MainLayout/Header/ProfileSection/index.js b/remix/app/layout/MainLayout/Header/ProfileSection/index.js
deleted file mode 100644
index 578e70f4a..000000000
--- a/remix/app/layout/MainLayout/Header/ProfileSection/index.js
+++ /dev/null
@@ -1,320 +0,0 @@
-import { useNavigate } from '@remix-run/react';
-import { useState, useRef, useEffect } from 'react';
-import { useSelector } from 'react-redux';
-
-// material-ui
-import { useTheme } from '@mui/material/styles';
-import {
- Avatar,
- Box,
- Card,
- CardContent,
- Chip,
- ClickAwayListener,
- Divider,
- Grid,
- InputAdornment,
- List,
- ListItemButton,
- ListItemIcon,
- ListItemText,
- OutlinedInput,
- Paper,
- Popper,
- Stack,
- Switch,
- Typography
-} from '@mui/material';
-
-// third-party
-import PerfectScrollbar from 'react-perfect-scrollbar';
-
-// project imports
-import MainCard from 'ui-component/cards/MainCard';
-import Transitions from 'ui-component/extended/Transitions';
-import UpgradePlanCard from './UpgradePlanCard';
-
-// assets
-import { IconLogout, IconSearch, IconSettings, IconUser } from '../../../../../node_modules/@tabler/icons-react';
-import User1 from 'assets/images/users/user-round.svg';
-
-// ==============================|| PROFILE MENU ||============================== //
-
-const ProfileSection = () => {
- const theme = useTheme();
- const customization = useSelector((state) => state.customization);
- const navigate = useNavigate();
-
- const [sdm, setSdm] = useState(true);
- const [value, setValue] = useState('');
- const [notification, setNotification] = useState(false);
- const [selectedIndex, setSelectedIndex] = useState(-1);
- const [open, setOpen] = useState(false);
- /**
- * anchorRef is used on different componets and specifying one type leads to other components throwing an error
- * */
- const anchorRef = useRef(null);
- const handleLogout = async () => {
- console.log('Logout');
- };
-
- const handleClose = (event) => {
- if (anchorRef.current && anchorRef.current.contains(event.target)) {
- return;
- }
- setOpen(false);
- };
-
- const handleListItemClick = (event, index, route = '') => {
- setSelectedIndex(index);
- handleClose(event);
-
- if (route && route !== '') {
- navigate(route);
- }
- };
- const handleToggle = () => {
- setOpen((prevOpen) => !prevOpen);
- };
-
- const prevOpen = useRef(open);
- useEffect(() => {
- if (prevOpen.current === true && open === false) {
- anchorRef.current.focus();
- }
-
- prevOpen.current = open;
- }, [open]);
-
- return (
- <>
-
- }
- label={}
- variant="outlined"
- ref={anchorRef}
- aria-controls={open ? 'menu-list-grow' : undefined}
- aria-haspopup="true"
- onClick={handleToggle}
- color="primary"
- />
-
- {({ TransitionProps }) => (
-
-
-
-
-
-
-
- Good Morning,
-
- Johne Doe
-
-
- Project Admin
-
- setValue(e.target.value)}
- placeholder="Search profile options"
- startAdornment={
-
-
-
- }
- aria-describedby="search-helper-text"
- inputProps={{
- 'aria-label': 'weight'
- }}
- />
-
-
-
-
-
-
-
-
-
-
-
-
- Start DND Mode
-
-
- setSdm(e.target.checked)}
- name="sdm"
- size="small"
- />
-
-
-
-
-
-
- Allow Notifications
-
-
- setNotification(e.target.checked)}
- name="sdm"
- size="small"
- />
-
-
-
-
-
-
-
-
- handleListItemClick(event, 0, '#')}
- >
-
-
-
- Account Settings} />
-
- handleListItemClick(event, 1, '#')}
- >
-
-
-
-
-
- Social Profile
-
-
-
-
-
- }
- />
-
-
-
-
-
- Logout} />
-
-
-
-
-
-
-
-
- )}
-
- >
- );
-};
-
-export default ProfileSection;
diff --git a/remix/app/layout/MainLayout/Header/SearchSection/index.js b/remix/app/layout/MainLayout/Header/SearchSection/index.js
deleted file mode 100644
index 214aef73e..000000000
--- a/remix/app/layout/MainLayout/Header/SearchSection/index.js
+++ /dev/null
@@ -1,194 +0,0 @@
-import { useState } from 'react';
-
-// material-ui
-import { useTheme, styled } from '@mui/material/styles';
-import { Avatar, Box, ButtonBase, Card, Grid, InputAdornment, OutlinedInput, Popper } from '@mui/material';
-import { shouldForwardProp } from '@mui/system';
-
-// third-party
-import PopupState, { bindPopper, bindToggle } from 'material-ui-popup-state';
-
-// types
-import PropTypes from 'prop-types';
-
-// project imports
-import Transitions from 'ui-component/extended/Transitions';
-
-// assets
-import { IconAdjustmentsHorizontal, IconSearch, IconX } from '../../../../../node_modules/@tabler/icons-react';
-
-// styles
-const PopperStyle = styled(Popper, { shouldForwardProp })(({ theme }) => ({
- zIndex: 1100,
- width: '99%',
- top: '-55px !important',
- padding: '0 12px',
- [theme.breakpoints.down('sm')]: {
- padding: '0 10px'
- }
-}));
-
-const OutlineInputStyle = styled(OutlinedInput, { shouldForwardProp })(({ theme }) => ({
- width: 434,
- marginLeft: 16,
- paddingLeft: 16,
- paddingRight: 16,
- '& input': {
- background: 'transparent !important',
- paddingLeft: '4px !important'
- },
- [theme.breakpoints.down('lg')]: {
- width: 250
- },
- [theme.breakpoints.down('md')]: {
- width: '100%',
- marginLeft: 4,
- background: '#fff'
- }
-}));
-
-const HeaderAvatarStyle = styled(Avatar, { shouldForwardProp })(({ theme }) => ({
- ...theme.typography.commonAvatar,
- ...theme.typography.mediumAvatar,
- background: theme.palette.secondary.light,
- color: theme.palette.secondary.dark,
- '&:hover': {
- background: theme.palette.secondary.dark,
- color: theme.palette.secondary.light
- }
-}));
-
-// ==============================|| SEARCH INPUT - MOBILE||============================== //
-
-const MobileSearch = ({ value, setValue, popupState }) => {
- const theme = useTheme();
-
- return (
-