cleanup
|
@ -0,0 +1,201 @@
|
|||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
# dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
share/python-wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.nox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
*.py,cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
cover/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
db.sqlite3
|
||||
db.sqlite3-journal
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
.pybuilder/
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# IPython
|
||||
profile_default/
|
||||
ipython_config.py
|
||||
|
||||
# pyenv
|
||||
# For a library or package, you might want to ignore these files since the code is
|
||||
# intended to run in multiple environments; otherwise, check them in:
|
||||
.python-version
|
||||
|
||||
# pipenv
|
||||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||
# install all needed dependencies.
|
||||
#Pipfile.lock
|
||||
|
||||
# UV
|
||||
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
|
||||
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||
# commonly ignored for libraries.
|
||||
#uv.lock
|
||||
|
||||
# poetry
|
||||
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
||||
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||
# commonly ignored for libraries.
|
||||
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
||||
#poetry.lock
|
||||
#poetry.toml
|
||||
|
||||
# pdm
|
||||
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
||||
#pdm.lock
|
||||
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
||||
# in version control.
|
||||
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
|
||||
.pdm.toml
|
||||
.pdm-python
|
||||
.pdm-build/
|
||||
|
||||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
||||
__pypackages__/
|
||||
|
||||
# Celery stuff
|
||||
celerybeat-schedule
|
||||
celerybeat.pid
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
dmypy.json
|
||||
|
||||
# Pyre type checker
|
||||
.pyre/
|
||||
|
||||
# pytype static type analyzer
|
||||
.pytype/
|
||||
|
||||
# Cython debug symbols
|
||||
cython_debug/
|
||||
|
||||
# PyCharm
|
||||
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
||||
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
||||
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||
#.idea/
|
||||
|
||||
# Abstra
|
||||
# Abstra is an AI-powered process automation framework.
|
||||
# Ignore directories containing user credentials, local state, and settings.
|
||||
# Learn more at https://abstra.io/docs
|
||||
.abstra/
|
||||
|
||||
# Visual Studio Code
|
||||
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
|
||||
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
|
||||
# and can be added to the global gitignore or merged into this file. However, if you prefer,
|
||||
# you could uncomment the following to ignore the entire vscode folder
|
||||
.vscode/
|
||||
|
||||
# Ruff stuff:
|
||||
.ruff_cache/
|
||||
|
||||
# PyPI configuration file
|
||||
.pypirc
|
||||
|
||||
# Cursor
|
||||
# Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
|
||||
# exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
|
||||
# refer to https://docs.cursor.com/context/ignore-files
|
||||
.cursorignore
|
||||
.cursorindexingignore
|
||||
|
||||
|
||||
poetry.lock
|
||||
datings.db
|
||||
.env.local
|
||||
pwd.txt
|
|
@ -0,0 +1 @@
|
|||
/home/lera/.cache/trunk/repos/f4b10994d6ff347dfcb62d83cc717268/actions
|
|
@ -0,0 +1 @@
|
|||
/home/lera/.cache/trunk/repos/f4b10994d6ff347dfcb62d83cc717268/logs
|
|
@ -0,0 +1 @@
|
|||
/home/lera/.cache/trunk/repos/f4b10994d6ff347dfcb62d83cc717268/notifications
|
|
@ -0,0 +1 @@
|
|||
/home/lera/.cache/trunk/repos/f4b10994d6ff347dfcb62d83cc717268/out
|
|
@ -0,0 +1 @@
|
|||
/home/lera/.cache/trunk/repos/f4b10994d6ff347dfcb62d83cc717268/tools
|
|
@ -0,0 +1 @@
|
|||
OPENAPI_URL=""
|
|
@ -0,0 +1,42 @@
|
|||
################
|
||||
# Stage: Build #
|
||||
################
|
||||
|
||||
FROM python:3.13-slim AS build
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Export poetry dependencies to file
|
||||
RUN pip install --upgrade pip
|
||||
RUN pip install poetry poetry-plugin-export
|
||||
RUN poetry self update
|
||||
COPY pyproject.toml ./
|
||||
RUN poetry export --without-hashes --format requirements.txt --output /app/requirements.txt
|
||||
|
||||
#####################
|
||||
# Stage: Production #
|
||||
#####################
|
||||
FROM python:3.13-slim AS prod
|
||||
|
||||
# ENV PYTHONPATH=/app
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Copy requirements from build stage, and install them
|
||||
COPY --from=build /app/requirements.txt .
|
||||
|
||||
RUN pip install --upgrade pip
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
COPY . .
|
||||
|
||||
# Create a non-root user to run the web server
|
||||
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
|
||||
USER appuser
|
||||
|
||||
# Run server
|
||||
EXPOSE 8001
|
||||
# CMD ["gunicorn", "--bind", "0.0.0.0:8001", "main_package.app:app"]
|
||||
# CMD ["uvicorn", "main_package.app:app", "--reload", "--host", "0.0.0.0", "--port", "8001", "--proxy-headers"]
|
||||
CMD ["fastapi", "run", "main_package/app.py", "--reload", "--port", "8001", "--proxy-headers"]
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
docker-build.sh
|
||||
|
||||
docker-up.sh
|
||||
|
||||
https://www.tutorialspoint.com/fastapi/fastapi_path_parameters.htm
|
||||
|
||||
https://eugeneyan.com/writing/how-to-set-up-html-app-with-fastapi-jinja-forms-templates/
|
||||
|
||||
https://github.com/josepaiva94/starter-fastapi-celery/tree/master/app
|
|
@ -0,0 +1,11 @@
|
|||
#!/bin/sh
|
||||
|
||||
|
||||
echo -n $( dirname -- "$( readlink -f -- "$0" )" ) > pwd.txt
|
||||
CWD=$(cat pwd.txt)
|
||||
cd "${CWD}"
|
||||
|
||||
find . -name .venv -type d -exec rm -vrf {} \;
|
||||
find . -name __pycache__ -type d -exec rm -vrf {} \;
|
||||
|
||||
echo "Finish!!!"
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
docker-compose build
|
||||
|
||||
echo "Finish!"
|
|
@ -0,0 +1,15 @@
|
|||
services:
|
||||
site:
|
||||
container_name: LeraFoxQueen
|
||||
build: .
|
||||
working_dir: /app
|
||||
image: lerafoxqueen
|
||||
ports:
|
||||
- "8001:8001"
|
||||
volumes:
|
||||
- .:/app:ro
|
||||
- ./datings.db:/app/datings.db:rw
|
||||
environment:
|
||||
- WATCHFILES_FORCE_POLLING=true
|
||||
command: fastapi run main_package/app.py --reload --port 8001 --proxy-headers
|
||||
restart: on-failure
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
docker-compose down
|
||||
|
||||
echo "Finish!"
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
docker-compose up -d
|
||||
|
||||
echo "Finish!"
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
docker-compose up
|
||||
|
||||
echo "Finish!"
|
|
@ -0,0 +1,160 @@
|
|||
import uvicorn
|
||||
# import pathlib
|
||||
import datetime
|
||||
import uuid
|
||||
from contextlib import asynccontextmanager
|
||||
|
||||
from fastapi import FastAPI, Request, HTTPException
|
||||
from fastapi.responses import HTMLResponse, JSONResponse, PlainTextResponse, FileResponse
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
from fastapi.templating import Jinja2Templates
|
||||
from fastapi_sitemap import SiteMap
|
||||
|
||||
from .database import create_tables, delete_tables
|
||||
from .router import router as datings_router
|
||||
from .validity import is_valid_uuid
|
||||
|
||||
|
||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
|
||||
|
||||
class Settings(BaseSettings):
|
||||
OPENAPI_URL: str = "/openapi.json"
|
||||
|
||||
model_config = SettingsConfigDict(
|
||||
env_file=(".env", ".env.local", ".env.prod"),
|
||||
env_file_encoding="utf-8",
|
||||
case_sensitive=True
|
||||
)
|
||||
|
||||
|
||||
settings = Settings()
|
||||
|
||||
|
||||
@asynccontextmanager
|
||||
async def lifespan(app: FastAPI):
|
||||
await create_tables()
|
||||
print("База готова")
|
||||
yield
|
||||
# await delete_tables()
|
||||
# print("База очищена")
|
||||
print("Приложение завершено")
|
||||
|
||||
|
||||
app = FastAPI(
|
||||
lifespan=lifespan, docs_url=None, redoc_url=None, openapi_url=settings.OPENAPI_URL
|
||||
)
|
||||
|
||||
favicon_path = "static/assets/img/favicons/favicon.ico"
|
||||
|
||||
templates = Jinja2Templates(directory="templates")
|
||||
|
||||
app.include_router(datings_router)
|
||||
|
||||
app.mount("/static", StaticFiles(directory="static"), name="static")
|
||||
|
||||
|
||||
@app.get("/", response_class=HTMLResponse)
|
||||
async def index(request: Request):
|
||||
|
||||
response = templates.TemplateResponse(
|
||||
"index.html", {"request": request}
|
||||
)
|
||||
sessionKey = request.cookies.get("sessionkey")
|
||||
if isinstance(sessionKey, str) and is_valid_uuid(sessionKey):
|
||||
pass
|
||||
else:
|
||||
days = 365
|
||||
expires_t_obj = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(
|
||||
days=days
|
||||
)
|
||||
expires_t_str = expires_t_obj.strftime("%a, %d %b %Y %H:%M:%S GMT")
|
||||
|
||||
response.set_cookie(
|
||||
key="sessionkey", value=str(uuid.uuid4()), expires=expires_t_str
|
||||
)
|
||||
return response
|
||||
|
||||
|
||||
@app.get("/about_me", response_class=HTMLResponse)
|
||||
async def about_me(request: Request):
|
||||
response = templates.TemplateResponse("about_me.html", {"request": request})
|
||||
sessionKey = request.cookies.get("sessionkey")
|
||||
if isinstance(sessionKey, str) and is_valid_uuid(sessionKey):
|
||||
pass
|
||||
else:
|
||||
days = 365
|
||||
expires_t_obj = datetime.datetime.now(
|
||||
datetime.timezone.utc
|
||||
) + datetime.timedelta(days=days)
|
||||
expires_t_str = expires_t_obj.strftime("%a, %d %b %Y %H:%M:%S GMT")
|
||||
|
||||
response.set_cookie(
|
||||
key="sessionkey", value=str(uuid.uuid4()), expires=expires_t_str
|
||||
)
|
||||
return response
|
||||
|
||||
|
||||
@app.get("/about_site", response_class=HTMLResponse)
|
||||
async def about_site(request: Request):
|
||||
response = templates.TemplateResponse("about_site.html", {"request": request})
|
||||
sessionKey = request.cookies.get("sessionkey")
|
||||
if isinstance(sessionKey, str) and is_valid_uuid(sessionKey):
|
||||
pass
|
||||
else:
|
||||
days = 365
|
||||
expires_t_obj = datetime.datetime.now(
|
||||
datetime.timezone.utc
|
||||
) + datetime.timedelta(days=days)
|
||||
expires_t_str = expires_t_obj.strftime("%a, %d %b %Y %H:%M:%S GMT")
|
||||
|
||||
response.set_cookie(
|
||||
key="sessionkey", value=str(uuid.uuid4()), expires=expires_t_str
|
||||
)
|
||||
return response
|
||||
|
||||
|
||||
@app.get("/favicon.ico", include_in_schema=False)
|
||||
async def favicon():
|
||||
return FileResponse(favicon_path)
|
||||
|
||||
|
||||
@app.get("/robots.txt", response_class=PlainTextResponse)
|
||||
def robots():
|
||||
data = """User-agent: *\nAllow: /\nSitemap: /sitemap.xml"""
|
||||
return data
|
||||
|
||||
|
||||
@app.exception_handler(HTTPException)
|
||||
async def http_exception_handler(request, exc):
|
||||
return JSONResponse(status_code=exc.status_code, content={"detail": exc.detail})
|
||||
|
||||
|
||||
sitemap = SiteMap(
|
||||
app=app,
|
||||
base_url="https://lerafoxqueen.ru",
|
||||
static_dirs=["static", "docs"],
|
||||
exclude_patterns=[
|
||||
"^/api/",
|
||||
"^/docs/",
|
||||
"^/datings",
|
||||
"^/api/",
|
||||
"^/admin/",
|
||||
], # optional: exclude patterns
|
||||
include_dynamic=True,
|
||||
changefreq="daily",
|
||||
priority_map={
|
||||
"/": 1.0,
|
||||
},
|
||||
gzip=True, # optional: make a gz version too
|
||||
)
|
||||
|
||||
sitemap.attach() # now GET /sitemap.xml is live
|
||||
|
||||
# @sitemap.source
|
||||
# def extra_urls():
|
||||
# yield URLInfo("https://lerafoxqueen.ru/sitemap.xml")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
uvicorn.run(app, host="0.0.0.0", port=8001)
|
|
@ -0,0 +1,49 @@
|
|||
# from datetime import datetime
|
||||
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
|
||||
from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine
|
||||
|
||||
|
||||
engine = create_async_engine("sqlite+aiosqlite:///datings.db", echo=True)
|
||||
new_session = async_sessionmaker(engine, expire_on_commit=False)
|
||||
|
||||
|
||||
class Model(DeclarativeBase):
|
||||
pass
|
||||
|
||||
|
||||
class DatingOrm(Model):
|
||||
__tablename__ = "datings"
|
||||
|
||||
id: Mapped[int] = mapped_column(primary_key=True, unique=True, autoincrement=True)
|
||||
sessionkey: Mapped[str] = mapped_column(unique=True)
|
||||
theme_name: Mapped[str]
|
||||
sender_looking_relationship: Mapped[str]
|
||||
sender_name: Mapped[str]
|
||||
sender_sex: Mapped[str]
|
||||
sender_age: Mapped[int]
|
||||
sender_city: Mapped[str]
|
||||
telegram_name: Mapped[str]
|
||||
sender_relationship: Mapped[str]
|
||||
sender_having_kids: Mapped[str]
|
||||
sender_want_to_have_kids: Mapped[str]
|
||||
interests_in_school_university: Mapped[str]
|
||||
interests_in_sports: Mapped[str]
|
||||
interests_in_work: Mapped[str]
|
||||
interests_in_your_free_time: Mapped[str]
|
||||
pets_plants_fish: Mapped[str]
|
||||
relationships_with_relatives_and_friends: Mapped[str]
|
||||
past_relationships: Mapped[str]
|
||||
life_principles_values: Mapped[str]
|
||||
goals_in_life: Mapped[str]
|
||||
message_text: Mapped[str]
|
||||
privacy_accept: Mapped[bool]
|
||||
|
||||
|
||||
async def create_tables():
|
||||
async with engine.begin() as conn:
|
||||
await conn.run_sync(Model.metadata.create_all)
|
||||
|
||||
|
||||
async def delete_tables():
|
||||
async with engine.begin() as conn:
|
||||
await conn.run_sync(Model.metadata.drop_all)
|
|
@ -0,0 +1,31 @@
|
|||
from sqlalchemy import select
|
||||
from .database import DatingOrm, new_session
|
||||
from .schemas import SDatingAdd, SDating
|
||||
|
||||
|
||||
class DatingRepository:
|
||||
@classmethod
|
||||
async def add_dating(cls, dating: SDatingAdd) -> int | None:
|
||||
async with new_session() as session:
|
||||
try:
|
||||
data = dating.model_dump()
|
||||
new_dating = DatingOrm(**data)
|
||||
|
||||
session.add(new_dating)
|
||||
await session.flush()
|
||||
await session.commit()
|
||||
return new_dating.id
|
||||
except Exception as e:
|
||||
print(e)
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
async def get_datings(cls) -> list[SDating]:
|
||||
async with new_session() as session:
|
||||
query = select(DatingOrm)
|
||||
result = await session.execute(query)
|
||||
dating_models = result.scalars().all()
|
||||
datings = [
|
||||
SDating.model_validate(dating_model) for dating_model in dating_models
|
||||
]
|
||||
return datings
|
|
@ -0,0 +1,72 @@
|
|||
from fastapi import (
|
||||
APIRouter,
|
||||
Body,
|
||||
# Cookie,
|
||||
# Depends,
|
||||
# FastAPI,
|
||||
# Form,
|
||||
# Header,
|
||||
# HTTPException,
|
||||
# Request,
|
||||
)
|
||||
from fastapi.responses import JSONResponse
|
||||
|
||||
from .repository import DatingRepository
|
||||
from .schemas import SDating, SDatingAdd, SDatingId
|
||||
|
||||
# async def get_body(request: Request):
|
||||
# content_type = request.headers.get('Content-Type')
|
||||
# if content_type is None:
|
||||
# raise HTTPException(status_code=400, detail='No Content-Type provided!')
|
||||
# elif content_type == 'application/json':
|
||||
# try:
|
||||
# return await request.json()
|
||||
# except JSONDecodeError:
|
||||
# raise HTTPException(status_code=400, detail='Invalid JSON data')
|
||||
# elif (content_type == 'application/x-www-form-urlencoded' or
|
||||
# content_type.startswith('multipart/form-data')):
|
||||
# try:
|
||||
# return await request.form()
|
||||
# except Exception:
|
||||
# raise HTTPException(status_code=400, detail='Invalid Form data')
|
||||
# else:
|
||||
# raise HTTPException(status_code=400, detail='Content-Type not supported!')
|
||||
|
||||
|
||||
router = APIRouter(
|
||||
prefix="/datings",
|
||||
tags=["Знакомства"],
|
||||
)
|
||||
|
||||
|
||||
@router.post(
|
||||
"/add",
|
||||
description="Добавляет знакомство в базу данных, а еще ....",
|
||||
summary="Добавляет знакомство в базу данных",
|
||||
response_description="Вот такой ответ придет",
|
||||
)
|
||||
# async def add_dating(dating: SDatingAdd = Body()) -> SDatingId:
|
||||
# new_dating_id = await DatingRepository.add_dating(dating)
|
||||
# return {"id": new_dating_id} # type: ignore
|
||||
|
||||
|
||||
async def add_dating(dating: SDatingAdd = Body()) -> JSONResponse:
|
||||
new_dating_id = await DatingRepository.add_dating(dating)
|
||||
content = {"id": new_dating_id} # type: ignore
|
||||
response = JSONResponse(content=content)
|
||||
return response
|
||||
|
||||
|
||||
# @router.get("/get")
|
||||
# async def get_datings() -> list[SDating]:
|
||||
# datings = await DatingRepository.get_datings()
|
||||
# return datings
|
||||
|
||||
|
||||
# async def get_datings() -> JSONResponse:
|
||||
# datings = await DatingRepository.get_datings()
|
||||
# content = dumps(datings, default=lambda o: o.__dict__) # type: ignore
|
||||
# response = JSONResponse(content=content)
|
||||
# response.set_cookie(key="fakesession", value="fake-cookie-session-value")
|
||||
# return response
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
# from datetime import datetime
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class SDatingAdd(BaseModel):
|
||||
sessionkey: str
|
||||
theme_name: str
|
||||
sender_looking_relationship: str
|
||||
sender_name: str
|
||||
sender_sex: str
|
||||
sender_age: int
|
||||
sender_city: str
|
||||
telegram_name: str
|
||||
sender_relationship: str
|
||||
sender_having_kids: str
|
||||
sender_want_to_have_kids: str
|
||||
interests_in_school_university: str
|
||||
interests_in_sports: str
|
||||
interests_in_work: str
|
||||
interests_in_your_free_time: str
|
||||
pets_plants_fish: str
|
||||
relationships_with_relatives_and_friends: str
|
||||
past_relationships: str
|
||||
life_principles_values: str
|
||||
goals_in_life: str
|
||||
message_text: str
|
||||
privacy_accept: bool
|
||||
|
||||
|
||||
class SDating(SDatingAdd):
|
||||
id: int
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
|
||||
class SDatingId(BaseModel):
|
||||
id: int
|
|
@ -0,0 +1,29 @@
|
|||
import uuid
|
||||
|
||||
|
||||
def is_valid_uuid(uuid_to_test, version=4):
|
||||
"""
|
||||
Check if uuid_to_test is a valid UUID.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
uuid_to_test : str
|
||||
version : {1, 2, 3, 4}
|
||||
|
||||
Returns
|
||||
-------
|
||||
`True` if uuid_to_test is a valid UUID, otherwise `False`.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> is_valid_uuid('c9bf9e57-1685-4c89-bafb-ff5af830be8a')
|
||||
True
|
||||
>>> is_valid_uuid('c9bf9e58')
|
||||
False
|
||||
"""
|
||||
|
||||
try:
|
||||
uuid_obj = uuid.UUID(uuid_to_test, version=version)
|
||||
except ValueError:
|
||||
return False
|
||||
return str(uuid_obj) == uuid_to_test
|
|
@ -0,0 +1,44 @@
|
|||
[project]
|
||||
name = "main_package"
|
||||
version = "0.1.0"
|
||||
description = ""
|
||||
authors = [
|
||||
{ name = "Valeria Fadeeva" },
|
||||
{ email = "valeria.fadeeva.me@gmail.com" },
|
||||
]
|
||||
license = { text = "AGPL3" }
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.13"
|
||||
dependencies = [
|
||||
"hypercorn (>=0.17.3,<0.18.0)",
|
||||
"unicorn (>=2.1.3,<3.0.0)",
|
||||
"uvicorn (>=0.34.3,<0.35.0)",
|
||||
"gunicorn (>=23.0.0,<24.0.0)",
|
||||
"fastapi[standard] (>=0.115.12,<0.116.0)",
|
||||
"aiosqlite (>=0.21.0,<0.22.0)",
|
||||
"sqlalchemy (>=2.0.41,<3.0.0)",
|
||||
"pydantic (>=2.11.5,<3.0.0)",
|
||||
"annotated-types (>=0.7.0,<0.8.0)",
|
||||
"typing-extensions (>=4.14.0,<5.0.0)",
|
||||
"python-multipart (>=0.0.20,<0.0.21)",
|
||||
"anyio (>=4.9.0,<5.0.0)",
|
||||
"click (>=8.2.1,<9.0.0)",
|
||||
"colorama (>=0.4.6,<0.5.0)",
|
||||
"greenlet (>=3.2.2,<4.0.0)",
|
||||
"h11 (>=0.16.0,<0.17.0)",
|
||||
"idna (>=3.10,<4.0)",
|
||||
"sniffio (>=1.3.1,<2.0.0)",
|
||||
"jinja2 (>=3.1.6,<4.0.0)",
|
||||
"pydantic-settings (>=2.9.1,<3.0.0)",
|
||||
"fastapi-sitemap (>=1.0.4,<2.0.0)",
|
||||
]
|
||||
package-mode = false
|
||||
packages = [{include = "main_package"}]
|
||||
|
||||
[tool.poetry.requires-plugins]
|
||||
poetry-plugin-export = ">=1.8"
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core>=2.0.0,<3.0.0"]
|
||||
build-backend = "poetry.core.masonry.api"
|
||||
package-mode = false
|
|
@ -0,0 +1,54 @@
|
|||
aiosqlite==0.21.0 ; python_version >= "3.13"
|
||||
annotated-types==0.7.0 ; python_version >= "3.13"
|
||||
anyio==4.9.0 ; python_version >= "3.13"
|
||||
certifi==2025.7.14 ; python_version >= "3.13"
|
||||
click==8.2.1 ; python_version >= "3.13"
|
||||
colorama==0.4.6 ; python_version >= "3.13"
|
||||
dnspython==2.7.0 ; python_version >= "3.13"
|
||||
email-validator==2.2.0 ; python_version >= "3.13"
|
||||
fastapi-cli==0.0.8 ; python_version >= "3.13"
|
||||
fastapi-cloud-cli==0.1.4 ; python_version >= "3.13"
|
||||
fastapi-sitemap==1.0.4 ; python_version >= "3.13"
|
||||
fastapi==0.115.12 ; python_version >= "3.13"
|
||||
greenlet==3.2.2 ; python_version >= "3.13"
|
||||
gunicorn==23.0.0 ; python_version >= "3.13"
|
||||
h11==0.16.0 ; python_version >= "3.13"
|
||||
h2==4.2.0 ; python_version >= "3.13"
|
||||
hpack==4.1.0 ; python_version >= "3.13"
|
||||
httpcore==1.0.9 ; python_version >= "3.13"
|
||||
httptools==0.6.4 ; python_version >= "3.13"
|
||||
httpx==0.28.1 ; python_version >= "3.13"
|
||||
hypercorn==0.17.3 ; python_version >= "3.13"
|
||||
hyperframe==6.1.0 ; python_version >= "3.13"
|
||||
idna==3.10 ; python_version >= "3.13"
|
||||
jinja2==3.1.6 ; python_version >= "3.13"
|
||||
markdown-it-py==3.0.0 ; python_version >= "3.13"
|
||||
markupsafe==3.0.2 ; python_version >= "3.13"
|
||||
mdurl==0.1.2 ; python_version >= "3.13"
|
||||
packaging==25.0 ; python_version >= "3.13"
|
||||
priority==2.0.0 ; python_version >= "3.13"
|
||||
pydantic-core==2.33.2 ; python_version >= "3.13"
|
||||
pydantic-settings==2.9.1 ; python_version >= "3.13"
|
||||
pydantic==2.11.5 ; python_version >= "3.13"
|
||||
pygments==2.19.2 ; python_version >= "3.13"
|
||||
python-dotenv==1.1.0 ; python_version >= "3.13"
|
||||
python-multipart==0.0.20 ; python_version >= "3.13"
|
||||
pyyaml==6.0.2 ; python_version >= "3.13"
|
||||
rich-toolkit==0.14.8 ; python_version >= "3.13"
|
||||
rich==14.1.0 ; python_version >= "3.13"
|
||||
rignore==0.6.4 ; python_version >= "3.13"
|
||||
sentry-sdk==2.33.2 ; python_version >= "3.13"
|
||||
shellingham==1.5.4 ; python_version >= "3.13"
|
||||
sniffio==1.3.1 ; python_version >= "3.13"
|
||||
sqlalchemy==2.0.41 ; python_version >= "3.13"
|
||||
starlette==0.46.2 ; python_version >= "3.13"
|
||||
typer==0.16.0 ; python_version >= "3.13"
|
||||
typing-extensions==4.14.0 ; python_version >= "3.13"
|
||||
typing-inspection==0.4.1 ; python_version >= "3.13"
|
||||
unicorn==2.1.3 ; python_version >= "3.13"
|
||||
urllib3==2.5.0 ; python_version >= "3.13"
|
||||
uvicorn==0.34.3 ; python_version >= "3.13"
|
||||
uvloop==0.21.0 ; sys_platform != "win32" and sys_platform != "cygwin" and platform_python_implementation != "PyPy" and python_version >= "3.13"
|
||||
watchfiles==1.1.0 ; python_version >= "3.13"
|
||||
websockets==15.0.1 ; python_version >= "3.13"
|
||||
wsproto==1.2.0 ; python_version >= "3.13"
|
|
@ -0,0 +1,38 @@
|
|||
#!/bin/sh
|
||||
|
||||
|
||||
echo -n $( dirname -- "$( readlink -f -- "$0" )" ) > pwd.txt
|
||||
CWD=$(cat pwd.txt)
|
||||
cd "${CWD}"
|
||||
|
||||
find . -name .venv -type d -exec rm -vrf {} \;
|
||||
find . -name __pycache__ -type d -exec rm -vrf {} \;
|
||||
|
||||
python -m venv .venv
|
||||
source "${CWD}/.venv/bin/activate"
|
||||
|
||||
pip install --upgrade pip
|
||||
pip install poetry poetry-plugin-export
|
||||
poetry lock
|
||||
poetry self update
|
||||
poetry export --without-hashes --format requirements.txt --output ./requirements.txt
|
||||
pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
pip show uvicorn | grep -E "Name:|Version:|Location:"
|
||||
pip show gunicorn | grep -E "Name:|Version:|Location:"
|
||||
pip show fastapi | grep -E "Name:|Version:|Location:"
|
||||
|
||||
pyenv local 3.13
|
||||
poetry env activate
|
||||
poetry lock
|
||||
poetry install --no-root
|
||||
|
||||
#hypercorn main_package.app:app --reload -w $(nproc) --bind 0.0.0.0:8001
|
||||
#poetry run hypercorn main_package/app:app --reload -w $(nproc) --bind 0.0.0.0:8001
|
||||
#uvicorn main_package.app:app --reload --workers $(nproc) --host 0.0.0.0 --port 8001
|
||||
#uvicorn main_package.app:app --reload --workers $(nproc) --host 127.0.0.1 --port 8001
|
||||
#gunicorn -b 0.0.0.0:8001 -k uvicorn.workers.UvicornWorker main_package.app:app
|
||||
|
||||
cd "${CWD}"
|
||||
source "${CWD}/.venv/bin/activate"
|
||||
fastapi run main_package/app.py --reload --port 8001 --proxy-headers
|
After Width: | Height: | Size: 8.3 KiB |
After Width: | Height: | Size: 8.1 KiB |
|
@ -0,0 +1,11 @@
|
|||
body {
|
||||
background-image: linear-gradient(180deg, var(--bs-secondary-bg), var(--bs-body-bg) 100px, var(--bs-body-bg));
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 960px;
|
||||
}
|
||||
|
||||
.pricing-header {
|
||||
max-width: 700px;
|
||||
}
|
|
@ -0,0 +1,182 @@
|
|||
body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: linear-gradient(135deg,
|
||||
rgba(255, 179, 179, 0.5) 0%,
|
||||
rgba(212, 76, 76, 0.658),
|
||||
rgba(231, 35, 49, 0.5) 100%);
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
background-attachment: fixed;
|
||||
}
|
||||
|
||||
.bd-placeholder-img {
|
||||
font-size: 1.125rem;
|
||||
text-anchor: middle;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.bd-placeholder-img-lg {
|
||||
font-size: 3.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.b-example-divider {
|
||||
width: 100%;
|
||||
height: 3rem;
|
||||
background-color: #0000001a;
|
||||
border: solid rgba(0, 0, 0, 0.15);
|
||||
border-width: 1px 0;
|
||||
box-shadow: inset 0 0.5em 1.5em #0000001a,
|
||||
inset 0 0.125em 0.5em #00000026;
|
||||
}
|
||||
|
||||
.b-example-vr {
|
||||
flex-shrink: 0;
|
||||
width: 1.5rem;
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.bi {
|
||||
vertical-align: -0.125em;
|
||||
fill: currentColor;
|
||||
}
|
||||
|
||||
.nav-scroller {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
height: 2.75rem;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
.nav-scroller .nav {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
padding-bottom: 1rem;
|
||||
margin-top: -1px;
|
||||
overflow-x: auto;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
.btn-bd-primary {
|
||||
--bd-violet-bg: #712cf9;
|
||||
--bd-violet-rgb: 112.520718, 44.062154, 249.437846;
|
||||
--bs-btn-font-weight: 600;
|
||||
--bs-btn-color: var(--bs-white);
|
||||
--bs-btn-bg: var(--bd-violet-bg);
|
||||
--bs-btn-border-color: var(--bd-violet-bg);
|
||||
--bs-btn-hover-color: var(--bs-white);
|
||||
--bs-btn-hover-bg: #6528e0;
|
||||
--bs-btn-hover-border-color: #6528e0;
|
||||
--bs-btn-focus-shadow-rgb: var(--bd-violet-rgb);
|
||||
--bs-btn-active-color: var(--bs-btn-hover-color);
|
||||
--bs-btn-active-bg: #5a23c8;
|
||||
--bs-btn-active-border-color: #5a23c8;
|
||||
}
|
||||
|
||||
.bd-mode-toggle {
|
||||
z-index: 1500;
|
||||
}
|
||||
|
||||
.bd-mode-toggle .bi {
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
}
|
||||
|
||||
.bd-mode-toggle .dropdown-menu .active .bi {
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
.card-min-height {
|
||||
min-height: 28rem;
|
||||
}
|
||||
|
||||
.center {
|
||||
display: flex;
|
||||
text-align: center;
|
||||
justify-content: center;
|
||||
/* align-items: center; */
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.w-100 {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Center the loader */
|
||||
#loader {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
z-index: 1;
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
margin: -76px 0 0 -76px;
|
||||
border: 16px solid #f3f3f3;
|
||||
border-radius: 50%;
|
||||
border-top: 16px solid #3498db;
|
||||
-webkit-animation: spin 2s linear infinite;
|
||||
animation: spin 2s linear infinite;
|
||||
}
|
||||
|
||||
@-webkit-keyframes spin {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
/* Add animation to "page content" */
|
||||
.animate-bottom {
|
||||
position: relative;
|
||||
-webkit-animation-name: animatebottom;
|
||||
-webkit-animation-duration: 1s;
|
||||
animation-name: animatebottom;
|
||||
animation-duration: 1s
|
||||
}
|
||||
|
||||
@-webkit-keyframes animatebottom {
|
||||
from {
|
||||
bottom: -100px;
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
to {
|
||||
bottom: 0px;
|
||||
opacity: 1
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes animatebottom {
|
||||
from {
|
||||
bottom: -100px;
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
to {
|
||||
bottom: 0;
|
||||
opacity: 1
|
||||
}
|
||||
}
|
||||
|
||||
#main_content {
|
||||
display: none;
|
||||
}
|
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 697 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 2.5 KiB |
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"name": "LeraFoxQueen : Найдём свою любовь вместе",
|
||||
"short_name": "LeraFoxQueen : Найдём свою любовь вместе",
|
||||
"description": "Найди свою любовь вместе с LeraFoxQueen",
|
||||
"orientation": "any",
|
||||
"display": "standalone",
|
||||
"dir": "auto",
|
||||
"lang": "ru-RU",
|
||||
"id": "https://LeraFoxQueen.ru",
|
||||
"start_url": "/",
|
||||
"scope": "https://LeraFoxQueen.ru/",
|
||||
"theme_color": "#7952b3",
|
||||
"background_color": "#7952b3",
|
||||
"icons": [
|
||||
{
|
||||
"src": "android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "android-chrome-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}
|
||||
]
|
||||
}
|
After Width: | Height: | Size: 8.5 KiB |
|
@ -0,0 +1,80 @@
|
|||
/*!
|
||||
* Color mode toggler for Bootstrap's docs (https://getbootstrap.com/)
|
||||
* Copyright 2011-2025 The Bootstrap Authors
|
||||
* Licensed under the Creative Commons Attribution 3.0 Unported License.
|
||||
*/
|
||||
|
||||
(() => {
|
||||
'use strict'
|
||||
|
||||
const getStoredTheme = () => localStorage.getItem('theme')
|
||||
const setStoredTheme = theme => localStorage.setItem('theme', theme)
|
||||
|
||||
const getPreferredTheme = () => {
|
||||
const storedTheme = getStoredTheme()
|
||||
if (storedTheme) {
|
||||
return storedTheme
|
||||
}
|
||||
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
|
||||
}
|
||||
|
||||
const setTheme = theme => {
|
||||
if (theme === 'auto') {
|
||||
document.documentElement.setAttribute('data-bs-theme', (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'))
|
||||
} else {
|
||||
document.documentElement.setAttribute('data-bs-theme', theme)
|
||||
}
|
||||
}
|
||||
|
||||
setTheme(getPreferredTheme())
|
||||
|
||||
const showActiveTheme = (theme, focus = false) => {
|
||||
const themeSwitcher = document.querySelector('#bd-theme')
|
||||
|
||||
if (!themeSwitcher) {
|
||||
return
|
||||
}
|
||||
|
||||
const themeSwitcherText = document.querySelector('#bd-theme-text')
|
||||
const activeThemeIcon = document.querySelector('.theme-icon-active use')
|
||||
const btnToActive = document.querySelector(`[data-bs-theme-value="${theme}"]`)
|
||||
const svgOfActiveBtn = btnToActive.querySelector('svg use').getAttribute('href')
|
||||
|
||||
document.querySelectorAll('[data-bs-theme-value]').forEach(element => {
|
||||
element.classList.remove('active')
|
||||
element.setAttribute('aria-pressed', 'false')
|
||||
})
|
||||
|
||||
btnToActive.classList.add('active')
|
||||
btnToActive.setAttribute('aria-pressed', 'true')
|
||||
activeThemeIcon.setAttribute('href', svgOfActiveBtn)
|
||||
const themeSwitcherLabel = `${themeSwitcherText.textContent} (${btnToActive.dataset.bsThemeValue})`
|
||||
themeSwitcher.setAttribute('aria-label', themeSwitcherLabel)
|
||||
|
||||
if (focus) {
|
||||
themeSwitcher.focus()
|
||||
}
|
||||
}
|
||||
|
||||
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
|
||||
const storedTheme = getStoredTheme()
|
||||
if (storedTheme !== 'light' && storedTheme !== 'dark') {
|
||||
setTheme(getPreferredTheme())
|
||||
}
|
||||
})
|
||||
|
||||
window.addEventListener('DOMContentLoaded', () => {
|
||||
showActiveTheme(getPreferredTheme())
|
||||
|
||||
document.querySelectorAll('[data-bs-theme-value]')
|
||||
.forEach(toggle => {
|
||||
toggle.addEventListener('click', () => {
|
||||
const theme = toggle.getAttribute('data-bs-theme-value')
|
||||
setStoredTheme(theme)
|
||||
setTheme(theme)
|
||||
showActiveTheme(theme, true)
|
||||
})
|
||||
})
|
||||
})
|
||||
})()
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"systemParams": "linux-x64-137",
|
||||
"modulesFolders": [
|
||||
"node_modules"
|
||||
],
|
||||
"flags": [],
|
||||
"linkedModules": [],
|
||||
"topLevelPatterns": [
|
||||
"@fortawesome/fontawesome-free@^6.7.2",
|
||||
"bootstrap@^5.3.6"
|
||||
],
|
||||
"lockfileEntries": {
|
||||
"@fortawesome/fontawesome-free@^6.7.2": "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz#8249de9b7e22fcb3ceb5e66090c30a1d5492b81a",
|
||||
"bootstrap@^5.3.6": "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.7.tgz#8640065036124d961d885d80b5945745e1154d90"
|
||||
},
|
||||
"files": [],
|
||||
"artifacts": {}
|
||||
}
|
165
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/LICENSE.txt
generated
vendored
Normal file
|
@ -0,0 +1,165 @@
|
|||
Fonticons, Inc. (https://fontawesome.com)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Font Awesome Free License
|
||||
|
||||
Font Awesome Free is free, open source, and GPL friendly. You can use it for
|
||||
commercial projects, open source projects, or really almost whatever you want.
|
||||
Full Font Awesome Free license: https://fontawesome.com/license/free.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
|
||||
|
||||
The Font Awesome Free download is licensed under a Creative Commons
|
||||
Attribution 4.0 International License and applies to all icons packaged
|
||||
as SVG and JS file types.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
# Fonts: SIL OFL 1.1 License
|
||||
|
||||
In the Font Awesome Free download, the SIL OFL license applies to all icons
|
||||
packaged as web and desktop font files.
|
||||
|
||||
Copyright (c) 2024 Fonticons, Inc. (https://fontawesome.com)
|
||||
with Reserved Font Name: "Font Awesome".
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
SIL OPEN FONT LICENSE
|
||||
Version 1.1 - 26 February 2007
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting — in part or in whole — any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
# Code: MIT License (https://opensource.org/licenses/MIT)
|
||||
|
||||
In the Font Awesome Free download, the MIT license applies to all non-font and
|
||||
non-icon files.
|
||||
|
||||
Copyright 2024 Fonticons, Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in the
|
||||
Software without restriction, including without limitation the rights to use, copy,
|
||||
modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
and to permit persons to whom the Software is furnished to do so, subject to the
|
||||
following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
# Attribution
|
||||
|
||||
Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
|
||||
Awesome Free files already contain embedded comments with sufficient
|
||||
attribution, so you shouldn't need to do anything additional when using these
|
||||
files normally.
|
||||
|
||||
We've kept attribution comments terse, so we ask that you do not actively work
|
||||
to remove them from files, especially code. They're a great way for folks to
|
||||
learn about Font Awesome.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
# Brand Icons
|
||||
|
||||
All brand icons are trademarks of their respective owners. The use of these
|
||||
trademarks does not indicate endorsement of the trademark holder by Font
|
||||
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
|
||||
to represent the company, product, or service to which they refer.**
|
38
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/README.md
generated
vendored
Normal file
|
@ -0,0 +1,38 @@
|
|||
# @fortawesome/fontawesome-free - The Official Font Awesome 6 NPM package
|
||||
|
||||
> "I came here to chew bubblegum and install Font Awesome 6 - and I'm all out of bubblegum"
|
||||
|
||||
[](https://www.npmjs.com/package/@fortawesome/fontawesome-free)
|
||||
|
||||
## Installation
|
||||
|
||||
```
|
||||
$ npm i --save @fortawesome/fontawesome-free
|
||||
```
|
||||
|
||||
Or
|
||||
|
||||
```
|
||||
$ yarn add @fortawesome/fontawesome-free
|
||||
```
|
||||
|
||||
## What's included?
|
||||
|
||||
**This package includes all the same files available through our Free and Pro CDN.**
|
||||
|
||||
* /js - All JavaScript files associated with Font Awesome 6 SVG with JS
|
||||
* /css - All CSS using the classic Web Fonts with CSS implementation
|
||||
* /sprites - SVG icons packaged in a convenient sprite
|
||||
* /scss, /less - CSS Pre-processor files for Web Fonts with CSS
|
||||
* /webfonts - Accompanying files for Web Fonts with CSS
|
||||
* /svg - Individual icon files in SVG format
|
||||
|
||||
## Documentation
|
||||
|
||||
Get started [here](https://docs.fontawesome.com/web/setup/get-started). Continue your journey [here](https://docs.fontawesome.com/web/setup/packages).
|
||||
|
||||
Or go straight to the [API documentation](https://docs.fontawesome.com/apis/javascript/get-started).
|
||||
|
||||
## Issues and support
|
||||
|
||||
Start with [GitHub issues](https://github.com/FortAwesome/Font-Awesome/issues) and ping us on [Twitter](https://twitter.com/fontawesome) if you need to.
|
7913
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/css/all.css
generated
vendored
Normal file
9
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/css/all.min.css
generated
vendored
Normal file
1609
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/css/brands.css
generated
vendored
Normal file
6
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/css/brands.min.css
generated
vendored
Normal file
6243
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/css/fontawesome.css
generated
vendored
Normal file
9
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/css/fontawesome.min.css
generated
vendored
Normal file
19
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/css/regular.css
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2024 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-style-family-classic: 'Font Awesome 6 Free';
|
||||
--fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 6 Free';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
|
||||
|
||||
.far,
|
||||
.fa-regular {
|
||||
font-weight: 400; }
|
6
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/css/regular.min.css
generated
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2024 Fonticons, Inc.
|
||||
*/
|
||||
:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}
|
19
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/css/solid.css
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2024 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-style-family-classic: 'Font Awesome 6 Free';
|
||||
--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 6 Free';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
||||
|
||||
.fas,
|
||||
.fa-solid {
|
||||
font-weight: 900; }
|
6
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/css/solid.min.css
generated
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2024 Fonticons, Inc.
|
||||
*/
|
||||
:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}
|
461
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/css/svg-with-js.css
generated
vendored
Normal file
|
@ -0,0 +1,461 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2024 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free';
|
||||
--fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free';
|
||||
--fa-font-light: normal 300 1em/1 'Font Awesome 6 Pro';
|
||||
--fa-font-thin: normal 100 1em/1 'Font Awesome 6 Pro';
|
||||
--fa-font-duotone: normal 900 1em/1 'Font Awesome 6 Duotone';
|
||||
--fa-font-duotone-regular: normal 400 1em/1 'Font Awesome 6 Duotone';
|
||||
--fa-font-duotone-light: normal 300 1em/1 'Font Awesome 6 Duotone';
|
||||
--fa-font-duotone-thin: normal 100 1em/1 'Font Awesome 6 Duotone';
|
||||
--fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands';
|
||||
--fa-font-sharp-solid: normal 900 1em/1 'Font Awesome 6 Sharp';
|
||||
--fa-font-sharp-regular: normal 400 1em/1 'Font Awesome 6 Sharp';
|
||||
--fa-font-sharp-light: normal 300 1em/1 'Font Awesome 6 Sharp';
|
||||
--fa-font-sharp-thin: normal 100 1em/1 'Font Awesome 6 Sharp';
|
||||
--fa-font-sharp-duotone-solid: normal 900 1em/1 'Font Awesome 6 Sharp Duotone';
|
||||
--fa-font-sharp-duotone-regular: normal 400 1em/1 'Font Awesome 6 Sharp Duotone';
|
||||
--fa-font-sharp-duotone-light: normal 300 1em/1 'Font Awesome 6 Sharp Duotone';
|
||||
--fa-font-sharp-duotone-thin: normal 100 1em/1 'Font Awesome 6 Sharp Duotone'; }
|
||||
|
||||
svg.svg-inline--fa:not(:root), svg.svg-inline--fa:not(:host) {
|
||||
overflow: visible;
|
||||
box-sizing: content-box; }
|
||||
|
||||
.svg-inline--fa {
|
||||
display: var(--fa-display, inline-block);
|
||||
height: 1em;
|
||||
overflow: visible;
|
||||
vertical-align: -.125em; }
|
||||
.svg-inline--fa.fa-2xs {
|
||||
vertical-align: 0.1em; }
|
||||
.svg-inline--fa.fa-xs {
|
||||
vertical-align: 0em; }
|
||||
.svg-inline--fa.fa-sm {
|
||||
vertical-align: -0.07143em; }
|
||||
.svg-inline--fa.fa-lg {
|
||||
vertical-align: -0.2em; }
|
||||
.svg-inline--fa.fa-xl {
|
||||
vertical-align: -0.25em; }
|
||||
.svg-inline--fa.fa-2xl {
|
||||
vertical-align: -0.3125em; }
|
||||
.svg-inline--fa.fa-pull-left {
|
||||
margin-right: var(--fa-pull-margin, 0.3em);
|
||||
width: auto; }
|
||||
.svg-inline--fa.fa-pull-right {
|
||||
margin-left: var(--fa-pull-margin, 0.3em);
|
||||
width: auto; }
|
||||
.svg-inline--fa.fa-li {
|
||||
width: var(--fa-li-width, 2em);
|
||||
top: 0.25em; }
|
||||
.svg-inline--fa.fa-fw {
|
||||
width: var(--fa-fw-width, 1.25em); }
|
||||
|
||||
.fa-layers svg.svg-inline--fa {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
margin: auto;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0; }
|
||||
|
||||
.fa-layers-counter, .fa-layers-text {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
text-align: center; }
|
||||
|
||||
.fa-layers {
|
||||
display: inline-block;
|
||||
height: 1em;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
vertical-align: -.125em;
|
||||
width: 1em; }
|
||||
.fa-layers svg.svg-inline--fa {
|
||||
transform-origin: center center; }
|
||||
|
||||
.fa-layers-text {
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
transform-origin: center center; }
|
||||
|
||||
.fa-layers-counter {
|
||||
background-color: var(--fa-counter-background-color, #ff253a);
|
||||
border-radius: var(--fa-counter-border-radius, 1em);
|
||||
box-sizing: border-box;
|
||||
color: var(--fa-inverse, #fff);
|
||||
line-height: var(--fa-counter-line-height, 1);
|
||||
max-width: var(--fa-counter-max-width, 5em);
|
||||
min-width: var(--fa-counter-min-width, 1.5em);
|
||||
overflow: hidden;
|
||||
padding: var(--fa-counter-padding, 0.25em 0.5em);
|
||||
right: var(--fa-right, 0);
|
||||
text-overflow: ellipsis;
|
||||
top: var(--fa-top, 0);
|
||||
transform: scale(var(--fa-counter-scale, 0.25));
|
||||
transform-origin: top right; }
|
||||
|
||||
.fa-layers-bottom-right {
|
||||
bottom: var(--fa-bottom, 0);
|
||||
right: var(--fa-right, 0);
|
||||
top: auto;
|
||||
transform: scale(var(--fa-layers-scale, 0.25));
|
||||
transform-origin: bottom right; }
|
||||
|
||||
.fa-layers-bottom-left {
|
||||
bottom: var(--fa-bottom, 0);
|
||||
left: var(--fa-left, 0);
|
||||
right: auto;
|
||||
top: auto;
|
||||
transform: scale(var(--fa-layers-scale, 0.25));
|
||||
transform-origin: bottom left; }
|
||||
|
||||
.fa-layers-top-right {
|
||||
top: var(--fa-top, 0);
|
||||
right: var(--fa-right, 0);
|
||||
transform: scale(var(--fa-layers-scale, 0.25));
|
||||
transform-origin: top right; }
|
||||
|
||||
.fa-layers-top-left {
|
||||
left: var(--fa-left, 0);
|
||||
right: auto;
|
||||
top: var(--fa-top, 0);
|
||||
transform: scale(var(--fa-layers-scale, 0.25));
|
||||
transform-origin: top left; }
|
||||
|
||||
.fa-1x {
|
||||
font-size: 1em; }
|
||||
|
||||
.fa-2x {
|
||||
font-size: 2em; }
|
||||
|
||||
.fa-3x {
|
||||
font-size: 3em; }
|
||||
|
||||
.fa-4x {
|
||||
font-size: 4em; }
|
||||
|
||||
.fa-5x {
|
||||
font-size: 5em; }
|
||||
|
||||
.fa-6x {
|
||||
font-size: 6em; }
|
||||
|
||||
.fa-7x {
|
||||
font-size: 7em; }
|
||||
|
||||
.fa-8x {
|
||||
font-size: 8em; }
|
||||
|
||||
.fa-9x {
|
||||
font-size: 9em; }
|
||||
|
||||
.fa-10x {
|
||||
font-size: 10em; }
|
||||
|
||||
.fa-2xs {
|
||||
font-size: 0.625em;
|
||||
line-height: 0.1em;
|
||||
vertical-align: 0.225em; }
|
||||
|
||||
.fa-xs {
|
||||
font-size: 0.75em;
|
||||
line-height: 0.08333em;
|
||||
vertical-align: 0.125em; }
|
||||
|
||||
.fa-sm {
|
||||
font-size: 0.875em;
|
||||
line-height: 0.07143em;
|
||||
vertical-align: 0.05357em; }
|
||||
|
||||
.fa-lg {
|
||||
font-size: 1.25em;
|
||||
line-height: 0.05em;
|
||||
vertical-align: -0.075em; }
|
||||
|
||||
.fa-xl {
|
||||
font-size: 1.5em;
|
||||
line-height: 0.04167em;
|
||||
vertical-align: -0.125em; }
|
||||
|
||||
.fa-2xl {
|
||||
font-size: 2em;
|
||||
line-height: 0.03125em;
|
||||
vertical-align: -0.1875em; }
|
||||
|
||||
.fa-fw {
|
||||
text-align: center;
|
||||
width: 1.25em; }
|
||||
|
||||
.fa-ul {
|
||||
list-style-type: none;
|
||||
margin-left: var(--fa-li-margin, 2.5em);
|
||||
padding-left: 0; }
|
||||
.fa-ul > li {
|
||||
position: relative; }
|
||||
|
||||
.fa-li {
|
||||
left: calc(-1 * var(--fa-li-width, 2em));
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
width: var(--fa-li-width, 2em);
|
||||
line-height: inherit; }
|
||||
|
||||
.fa-border {
|
||||
border-color: var(--fa-border-color, #eee);
|
||||
border-radius: var(--fa-border-radius, 0.1em);
|
||||
border-style: var(--fa-border-style, solid);
|
||||
border-width: var(--fa-border-width, 0.08em);
|
||||
padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); }
|
||||
|
||||
.fa-pull-left {
|
||||
float: left;
|
||||
margin-right: var(--fa-pull-margin, 0.3em); }
|
||||
|
||||
.fa-pull-right {
|
||||
float: right;
|
||||
margin-left: var(--fa-pull-margin, 0.3em); }
|
||||
|
||||
.fa-beat {
|
||||
animation-name: fa-beat;
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-timing-function: var(--fa-animation-timing, ease-in-out); }
|
||||
|
||||
.fa-bounce {
|
||||
animation-name: fa-bounce;
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); }
|
||||
|
||||
.fa-fade {
|
||||
animation-name: fa-fade;
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
|
||||
|
||||
.fa-beat-fade {
|
||||
animation-name: fa-beat-fade;
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
|
||||
|
||||
.fa-flip {
|
||||
animation-name: fa-flip;
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-timing-function: var(--fa-animation-timing, ease-in-out); }
|
||||
|
||||
.fa-shake {
|
||||
animation-name: fa-shake;
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-timing-function: var(--fa-animation-timing, linear); }
|
||||
|
||||
.fa-spin {
|
||||
animation-name: fa-spin;
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-duration: var(--fa-animation-duration, 2s);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-timing-function: var(--fa-animation-timing, linear); }
|
||||
|
||||
.fa-spin-reverse {
|
||||
--fa-animation-direction: reverse; }
|
||||
|
||||
.fa-pulse,
|
||||
.fa-spin-pulse {
|
||||
animation-name: fa-spin;
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-timing-function: var(--fa-animation-timing, steps(8)); }
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.fa-beat,
|
||||
.fa-bounce,
|
||||
.fa-fade,
|
||||
.fa-beat-fade,
|
||||
.fa-flip,
|
||||
.fa-pulse,
|
||||
.fa-shake,
|
||||
.fa-spin,
|
||||
.fa-spin-pulse {
|
||||
animation-delay: -1ms;
|
||||
animation-duration: 1ms;
|
||||
animation-iteration-count: 1;
|
||||
transition-delay: 0s;
|
||||
transition-duration: 0s; } }
|
||||
|
||||
@keyframes fa-beat {
|
||||
0%, 90% {
|
||||
transform: scale(1); }
|
||||
45% {
|
||||
transform: scale(var(--fa-beat-scale, 1.25)); } }
|
||||
|
||||
@keyframes fa-bounce {
|
||||
0% {
|
||||
transform: scale(1, 1) translateY(0); }
|
||||
10% {
|
||||
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
|
||||
30% {
|
||||
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
|
||||
50% {
|
||||
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
|
||||
57% {
|
||||
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
|
||||
64% {
|
||||
transform: scale(1, 1) translateY(0); }
|
||||
100% {
|
||||
transform: scale(1, 1) translateY(0); } }
|
||||
|
||||
@keyframes fa-fade {
|
||||
50% {
|
||||
opacity: var(--fa-fade-opacity, 0.4); } }
|
||||
|
||||
@keyframes fa-beat-fade {
|
||||
0%, 100% {
|
||||
opacity: var(--fa-beat-fade-opacity, 0.4);
|
||||
transform: scale(1); }
|
||||
50% {
|
||||
opacity: 1;
|
||||
transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
|
||||
|
||||
@keyframes fa-flip {
|
||||
50% {
|
||||
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
|
||||
|
||||
@keyframes fa-shake {
|
||||
0% {
|
||||
transform: rotate(-15deg); }
|
||||
4% {
|
||||
transform: rotate(15deg); }
|
||||
8%, 24% {
|
||||
transform: rotate(-18deg); }
|
||||
12%, 28% {
|
||||
transform: rotate(18deg); }
|
||||
16% {
|
||||
transform: rotate(-22deg); }
|
||||
20% {
|
||||
transform: rotate(22deg); }
|
||||
32% {
|
||||
transform: rotate(-12deg); }
|
||||
36% {
|
||||
transform: rotate(12deg); }
|
||||
40%, 100% {
|
||||
transform: rotate(0deg); } }
|
||||
|
||||
@keyframes fa-spin {
|
||||
0% {
|
||||
transform: rotate(0deg); }
|
||||
100% {
|
||||
transform: rotate(360deg); } }
|
||||
|
||||
.fa-rotate-90 {
|
||||
transform: rotate(90deg); }
|
||||
|
||||
.fa-rotate-180 {
|
||||
transform: rotate(180deg); }
|
||||
|
||||
.fa-rotate-270 {
|
||||
transform: rotate(270deg); }
|
||||
|
||||
.fa-flip-horizontal {
|
||||
transform: scale(-1, 1); }
|
||||
|
||||
.fa-flip-vertical {
|
||||
transform: scale(1, -1); }
|
||||
|
||||
.fa-flip-both,
|
||||
.fa-flip-horizontal.fa-flip-vertical {
|
||||
transform: scale(-1, -1); }
|
||||
|
||||
.fa-rotate-by {
|
||||
transform: rotate(var(--fa-rotate-angle, 0)); }
|
||||
|
||||
.fa-stack {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
height: 2em;
|
||||
position: relative;
|
||||
width: 2.5em; }
|
||||
|
||||
.fa-stack-1x,
|
||||
.fa-stack-2x {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
margin: auto;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
z-index: var(--fa-stack-z-index, auto); }
|
||||
|
||||
.svg-inline--fa.fa-stack-1x {
|
||||
height: 1em;
|
||||
width: 1.25em; }
|
||||
|
||||
.svg-inline--fa.fa-stack-2x {
|
||||
height: 2em;
|
||||
width: 2.5em; }
|
||||
|
||||
.fa-inverse {
|
||||
color: var(--fa-inverse, #fff); }
|
||||
|
||||
.sr-only,
|
||||
.fa-sr-only {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
padding: 0;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
white-space: nowrap;
|
||||
border-width: 0; }
|
||||
|
||||
.sr-only-focusable:not(:focus),
|
||||
.fa-sr-only-focusable:not(:focus) {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
padding: 0;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
white-space: nowrap;
|
||||
border-width: 0; }
|
||||
|
||||
.svg-inline--fa .fa-primary {
|
||||
fill: var(--fa-primary-color, currentColor);
|
||||
opacity: var(--fa-primary-opacity, 1); }
|
||||
|
||||
.svg-inline--fa .fa-secondary {
|
||||
fill: var(--fa-secondary-color, currentColor);
|
||||
opacity: var(--fa-secondary-opacity, 0.4); }
|
||||
|
||||
.svg-inline--fa.fa-swap-opacity .fa-primary {
|
||||
opacity: var(--fa-secondary-opacity, 0.4); }
|
||||
|
||||
.svg-inline--fa.fa-swap-opacity .fa-secondary {
|
||||
opacity: var(--fa-primary-opacity, 1); }
|
||||
|
||||
.svg-inline--fa mask .fa-primary,
|
||||
.svg-inline--fa mask .fa-secondary {
|
||||
fill: black; }
|
6
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/css/svg-with-js.min.css
generated
vendored
Normal file
26
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/css/v4-font-face.css
generated
vendored
Normal file
|
@ -0,0 +1,26 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2024 Fonticons, Inc.
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'FontAwesome';
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
||||
|
||||
@font-face {
|
||||
font-family: 'FontAwesome';
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
|
||||
|
||||
@font-face {
|
||||
font-family: 'FontAwesome';
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype");
|
||||
unicode-range: U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'FontAwesome';
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-v4compatibility.woff2") format("woff2"), url("../webfonts/fa-v4compatibility.ttf") format("truetype");
|
||||
unicode-range: U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A; }
|
6
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/css/v4-font-face.min.css
generated
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2024 Fonticons, Inc.
|
||||
*/
|
||||
@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}
|
2194
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/css/v4-shims.css
generated
vendored
Normal file
6
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/css/v4-shims.min.css
generated
vendored
Normal file
22
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/css/v5-font-face.css
generated
vendored
Normal file
|
@ -0,0 +1,22 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2024 Fonticons, Inc.
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Brands';
|
||||
font-display: block;
|
||||
font-weight: 400;
|
||||
src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Free';
|
||||
font-display: block;
|
||||
font-weight: 900;
|
||||
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Free';
|
||||
font-display: block;
|
||||
font-weight: 400;
|
||||
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
|
6
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/css/v5-font-face.min.css
generated
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2024 Fonticons, Inc.
|
||||
*/
|
||||
@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}
|
6200
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/js/all.js
generated
vendored
Normal file
6
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/js/all.min.js
generated
vendored
Normal file
862
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/js/brands.js
generated
vendored
Normal file
6
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/js/brands.min.js
generated
vendored
Normal file
1108
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/js/conflict-detection.js
generated
vendored
Normal file
6
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/js/conflict-detection.min.js
generated
vendored
Normal file
3054
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/js/fontawesome.js
generated
vendored
Normal file
6
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/js/fontawesome.min.js
generated
vendored
Normal file
530
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/js/regular.js
generated
vendored
Normal file
6
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/js/regular.min.js
generated
vendored
Normal file
1769
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/js/solid.js
generated
vendored
Normal file
6
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/js/solid.min.js
generated
vendored
Normal file
338
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/js/v4-shims.js
generated
vendored
Normal file
6
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/js/v4-shims.min.js
generated
vendored
Normal file
152
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/less/_animated.less
generated
vendored
Normal file
|
@ -0,0 +1,152 @@
|
|||
// animating icons
|
||||
// --------------------------
|
||||
|
||||
.@{fa-css-prefix}-beat {
|
||||
animation-name: ~'@{fa-css-prefix}-beat';
|
||||
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
|
||||
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
|
||||
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
|
||||
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
|
||||
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, ease-in-out)';
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-bounce {
|
||||
animation-name: ~'@{fa-css-prefix}-bounce';
|
||||
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
|
||||
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
|
||||
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
|
||||
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
|
||||
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, cubic-bezier(0.280, 0.840, 0.420, 1))';
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-fade {
|
||||
animation-name: ~'@{fa-css-prefix}-fade';
|
||||
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
|
||||
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
|
||||
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
|
||||
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
|
||||
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1))';
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-beat-fade {
|
||||
animation-name: ~'@{fa-css-prefix}-beat-fade';
|
||||
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
|
||||
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
|
||||
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
|
||||
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
|
||||
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1))';
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-flip {
|
||||
animation-name: ~'@{fa-css-prefix}-flip';
|
||||
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
|
||||
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
|
||||
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
|
||||
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
|
||||
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, ease-in-out)';
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-shake {
|
||||
animation-name: ~'@{fa-css-prefix}-shake';
|
||||
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
|
||||
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
|
||||
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
|
||||
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
|
||||
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, linear)';
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-spin {
|
||||
animation-name: ~'@{fa-css-prefix}-spin';
|
||||
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
|
||||
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
|
||||
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 2s)';
|
||||
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
|
||||
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, linear)';
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-spin-reverse {
|
||||
--@{fa-css-prefix}-animation-direction: reverse;
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-pulse,
|
||||
.@{fa-css-prefix}-spin-pulse {
|
||||
animation-name: ~'@{fa-css-prefix}-spin';
|
||||
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
|
||||
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
|
||||
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
|
||||
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, steps(8));';
|
||||
}
|
||||
|
||||
// if agent or operating system prefers reduced motion, disable animations
|
||||
// see: https://www.smashingmagazine.com/2020/09/design-reduced-motion-sensitivities/
|
||||
// see: https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.@{fa-css-prefix}-beat,
|
||||
.@{fa-css-prefix}-bounce,
|
||||
.@{fa-css-prefix}-fade,
|
||||
.@{fa-css-prefix}-beat-fade,
|
||||
.@{fa-css-prefix}-flip,
|
||||
.@{fa-css-prefix}-pulse,
|
||||
.@{fa-css-prefix}-shake,
|
||||
.@{fa-css-prefix}-spin,
|
||||
.@{fa-css-prefix}-spin-pulse {
|
||||
animation-delay: -1ms;
|
||||
animation-duration: 1ms;
|
||||
animation-iteration-count: 1;
|
||||
transition-delay: 0s;
|
||||
transition-duration: 0s;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes ~'@{fa-css-prefix}-beat' {
|
||||
0%, 90% { transform: scale(1); }
|
||||
45% { transform: ~'scale(var(--@{fa-css-prefix}-beat-scale, 1.25))'; }
|
||||
}
|
||||
|
||||
@keyframes ~'@{fa-css-prefix}-bounce' {
|
||||
0% { transform: scale(1,1) translateY(0); }
|
||||
10% { transform: ~'scale(var(--@{fa-css-prefix}-bounce-start-scale-x, 1.1),var(--@{fa-css-prefix}-bounce-start-scale-y, 0.9))' translateY(0); }
|
||||
30% { transform: ~'scale(var(--@{fa-css-prefix}-bounce-jump-scale-x, 0.9),var(--@{fa-css-prefix}-bounce-jump-scale-y, 1.1))' ~'translateY(var(--@{fa-css-prefix}-bounce-height, -0.5em))'; }
|
||||
50% { transform: ~'scale(var(--@{fa-css-prefix}-bounce-land-scale-x, 1.05),var(--@{fa-css-prefix}-bounce-land-scale-y, 0.95))' translateY(0); }
|
||||
57% { transform: ~'scale(1,1) translateY(var(--@{fa-css-prefix}-bounce-rebound, -0.125em))'; }
|
||||
64% { transform: scale(1,1) translateY(0); }
|
||||
100% { transform: scale(1,1) translateY(0); }
|
||||
}
|
||||
|
||||
@keyframes ~'@{fa-css-prefix}-fade' {
|
||||
50% { opacity: ~'var(--@{fa-css-prefix}-fade-opacity, 0.4)'; }
|
||||
}
|
||||
|
||||
@keyframes ~'@{fa-css-prefix}-beat-fade' {
|
||||
0%, 100% {
|
||||
opacity: ~'var(--@{fa-css-prefix}-beat-fade-opacity, 0.4)';
|
||||
transform: scale(1);
|
||||
}
|
||||
50% {
|
||||
opacity: 1;
|
||||
transform: ~'scale(var(--@{fa-css-prefix}-beat-fade-scale, 1.125))';
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes ~'@{fa-css-prefix}-flip' {
|
||||
50% {
|
||||
transform: ~'rotate3d(var(--@{fa-css-prefix}-flip-x, 0), var(--@{fa-css-prefix}-flip-y, 1), var(--@{fa-css-prefix}-flip-z, 0), var(--@{fa-css-prefix}-flip-angle, -180deg))';
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes ~'@{fa-css-prefix}-shake' {
|
||||
0% { transform: rotate(-15deg); }
|
||||
4% { transform: rotate(15deg); }
|
||||
8%, 24% { transform: rotate(-18deg); }
|
||||
12%, 28% { transform: rotate(18deg); }
|
||||
16% { transform: rotate(-22deg); }
|
||||
20% { transform: rotate(22deg); }
|
||||
32% { transform: rotate(-12deg); }
|
||||
36% { transform: rotate(12deg); }
|
||||
40%, 100% { transform: rotate(0deg); }
|
||||
}
|
||||
|
||||
@keyframes ~'@{fa-css-prefix}-spin' {
|
||||
0% { transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); }
|
||||
}
|
20
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/less/_bordered-pulled.less
generated
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
// bordered + pulled icons
|
||||
// -------------------------
|
||||
|
||||
.@{fa-css-prefix}-border {
|
||||
border-color: ~'var(--@{fa-css-prefix}-border-color, @{fa-border-color})';
|
||||
border-radius: ~'var(--@{fa-css-prefix}-border-radius, @{fa-border-radius})';
|
||||
border-style: ~'var(--@{fa-css-prefix}-border-style, @{fa-border-style})';
|
||||
border-width: ~'var(--@{fa-css-prefix}-border-width, @{fa-border-width})';
|
||||
padding: ~'var(--@{fa-css-prefix}-border-padding, @{fa-border-padding})';
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-pull-left {
|
||||
float: left;
|
||||
margin-right: ~'var(--@{fa-css-prefix}-pull-margin, @{fa-pull-margin})';
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-pull-right {
|
||||
float: right;
|
||||
margin-left: ~'var(--@{fa-css-prefix}-pull-margin, @{fa-pull-margin})';
|
||||
}
|
48
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/less/_core.less
generated
vendored
Normal file
|
@ -0,0 +1,48 @@
|
|||
// base icon class definition
|
||||
// -------------------------
|
||||
|
||||
.@{fa-css-prefix} {
|
||||
font-family: ~"var(--@{fa-css-prefix}-style-family, '@{fa-style-family}')";
|
||||
font-weight: ~'var(--@{fa-css-prefix}-style, @{fa-style})';
|
||||
}
|
||||
|
||||
.fas,
|
||||
.far,
|
||||
.fab,
|
||||
.@{fa-css-prefix}-solid,
|
||||
.@{fa-css-prefix}-regular,
|
||||
.@{fa-css-prefix}-brands,
|
||||
|
||||
.@{fa-css-prefix}-sharp-solid,
|
||||
.@{fa-css-prefix}-classic,
|
||||
.@{fa-css-prefix} {
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
display: ~'var(--@{fa-css-prefix}-display, @{fa-display})';
|
||||
font-style: normal;
|
||||
font-variant: normal;
|
||||
line-height: 1;
|
||||
text-rendering: auto;
|
||||
}
|
||||
|
||||
.fas::before,
|
||||
.far::before,
|
||||
.fab::before,
|
||||
.@{fa-css-prefix}-solid::before,
|
||||
.@{fa-css-prefix}-regular::before,
|
||||
.@{fa-css-prefix}-brands::before,
|
||||
.@{fa-css-prefix}::before {
|
||||
content: ~'var(@{fa-icon-property})';
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-classic,
|
||||
.fas,
|
||||
.@{fa-css-prefix}-solid,
|
||||
.far,
|
||||
.@{fa-css-prefix}-regular {
|
||||
font-family: 'Font Awesome 6 Free';
|
||||
}
|
||||
.@{fa-css-prefix}-brands,
|
||||
.fab {
|
||||
font-family: 'Font Awesome 6 Brands';
|
||||
}
|
7
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/less/_fixed-width.less
generated
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
// fixed-width icons
|
||||
// -------------------------
|
||||
|
||||
.@{fa-css-prefix}-fw {
|
||||
text-align: center;
|
||||
width: @fa-fw-width;
|
||||
}
|
11
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/less/_icons.less
generated
vendored
Normal file
|
@ -0,0 +1,11 @@
|
|||
// specific icon class definition
|
||||
// -------------------------
|
||||
|
||||
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
|
||||
readers do not read off random characters that represent icons */
|
||||
|
||||
each(.fa-icons(), {
|
||||
.@{fa-css-prefix}-@{key} {
|
||||
@{fa-icon-property}: @value;
|
||||
}
|
||||
});
|
18
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/less/_list.less
generated
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
// icons in a list
|
||||
// -------------------------
|
||||
|
||||
.@{fa-css-prefix}-ul {
|
||||
list-style-type: none;
|
||||
margin-left: ~'var(--@{fa-css-prefix}-li-margin, @{fa-li-margin})';
|
||||
padding-left: 0;
|
||||
|
||||
> li { position: relative; }
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-li {
|
||||
left: calc(~'var(--@{fa-css-prefix}-li-width, @{fa-li-width})' * -1);
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
width: ~'var(--@{fa-css-prefix}-li-width, @{fa-li-width})';
|
||||
line-height: inherit;
|
||||
}
|
68
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/less/_mixins.less
generated
vendored
Normal file
|
@ -0,0 +1,68 @@
|
|||
// mixins
|
||||
// --------------------------
|
||||
|
||||
// base rendering for an icon
|
||||
.fa-icon() {
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
display: inline-block;
|
||||
font-style: normal;
|
||||
font-variant: normal;
|
||||
font-weight: normal;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
// sets relative font-sizing and alignment (in _sizing)
|
||||
.fa-size(@font-size) {
|
||||
font-size: (@font-size / @fa-size-scale-base) * 1em; // converts step in sizing scale into an em-based value that's relative to the scale's base
|
||||
line-height: (1 / @font-size) * 1em; // sets the line-height of the icon back to that of it's parent
|
||||
vertical-align: ((6 / @font-size) - (3 / 8)) * 1em; // vertically centers the icon taking into account the surrounding text's descender
|
||||
}
|
||||
|
||||
// only display content to screen readers
|
||||
// see: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/
|
||||
// see: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/
|
||||
.fa-sr-only() {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
padding: 0;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
white-space: nowrap;
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
// use in conjunction with .sr-only to only display content when it's focused
|
||||
.fa-sr-only-focusable() {
|
||||
&:not(:focus) {
|
||||
.fa-sr-only();
|
||||
}
|
||||
}
|
||||
|
||||
// sets a specific icon family to use alongside style + icon mixins
|
||||
.fa-family-classic() {
|
||||
&:extend(.fa-classic all);
|
||||
}
|
||||
|
||||
// convenience mixins for declaring pseudo-elements by CSS variable,
|
||||
// including all style-specific font properties
|
||||
.fa-icon-solid(@fa-var) {
|
||||
&:extend(.fa-solid all);
|
||||
|
||||
& { @{fa-icon-property}: @fa-var; @{fa-duotone-icon-property}: %("%s%s", @fa-var, @fa-var); }
|
||||
}
|
||||
|
||||
.fa-icon-regular(@fa-var) {
|
||||
&:extend(.fa-regular all);
|
||||
|
||||
& { @{fa-icon-property}: @fa-var; @{fa-duotone-icon-property}: %("%s%s", @fa-var, @fa-var); }
|
||||
}
|
||||
|
||||
.fa-icon-brands(@fa-var) {
|
||||
&:extend(.fa-brands all);
|
||||
|
||||
& { @{fa-icon-property}: @fa-var; @{fa-duotone-icon-property}: %("%s%s", @fa-var, @fa-var); }
|
||||
}
|
||||
|
31
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/less/_rotated-flipped.less
generated
vendored
Normal file
|
@ -0,0 +1,31 @@
|
|||
// rotating + flipping icons
|
||||
// -------------------------
|
||||
|
||||
.@{fa-css-prefix}-rotate-90 {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-rotate-180 {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-rotate-270 {
|
||||
transform: rotate(270deg);
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-flip-horizontal {
|
||||
transform: scale(-1, 1);
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-flip-vertical {
|
||||
transform: scale(1, -1);
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-flip-both,
|
||||
.@{fa-css-prefix}-flip-horizontal.@{fa-css-prefix}-flip-vertical {
|
||||
transform: scale(-1, -1);
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-rotate-by {
|
||||
transform: rotate(~'var(--@{fa-css-prefix}-rotate-angle, 0)');
|
||||
}
|
14
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/less/_screen-reader.less
generated
vendored
Normal file
|
@ -0,0 +1,14 @@
|
|||
// screen-reader utilities
|
||||
// -------------------------
|
||||
|
||||
// only display content to screen readers
|
||||
.sr-only,
|
||||
.@{fa-css-prefix}-sr-only {
|
||||
.fa-sr-only();
|
||||
}
|
||||
|
||||
// use in conjunction with .sr-only to only display content when it's focused
|
||||
.sr-only-focusable,
|
||||
.@{fa-css-prefix}-sr-only-focusable {
|
||||
.fa-sr-only-focusable();
|
||||
}
|
2042
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/less/_shims.less
generated
vendored
Normal file
19
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/less/_sizing.less
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
// sizing icons
|
||||
// -------------------------
|
||||
|
||||
// literal magnification scale
|
||||
.sizes-literal(@factor) when (@factor > 0) {
|
||||
.sizes-literal((@factor - 1));
|
||||
|
||||
.@{fa-css-prefix}-@{factor}x {
|
||||
font-size: (@factor * 1em);
|
||||
}
|
||||
}
|
||||
.sizes-literal(10);
|
||||
|
||||
// step-based scale (with alignment)
|
||||
each(.fa-sizes(), {
|
||||
.@{fa-css-prefix}-@{key} {
|
||||
.fa-size(@value);
|
||||
}
|
||||
});
|
31
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/less/_stacked.less
generated
vendored
Normal file
|
@ -0,0 +1,31 @@
|
|||
// stacking icons
|
||||
// -------------------------
|
||||
|
||||
.@{fa-css-prefix}-stack {
|
||||
display: inline-block;
|
||||
height: 2em;
|
||||
line-height: 2em;
|
||||
position: relative;
|
||||
vertical-align: @fa-stack-vertical-align;
|
||||
width: @fa-stack-width;
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
|
||||
left: 0;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
z-index: ~'var(--@{fa-css-prefix}-stack-z-index, @{fa-stack-z-index})';
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-stack-1x {
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-stack-2x {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
.@{fa-css-prefix}-inverse {
|
||||
color: ~'var(--@{fa-css-prefix}-inverse, @{fa-inverse})';
|
||||
}
|
5044
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/less/_variables.less
generated
vendored
Normal file
29
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/less/brands.less
generated
vendored
Normal file
|
@ -0,0 +1,29 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2024 Fonticons, Inc.
|
||||
*/
|
||||
@import "_variables.less";
|
||||
|
||||
:root, :host {
|
||||
--@{fa-css-prefix}-style-family-brands: 'Font Awesome 6 Brands';
|
||||
--@{fa-css-prefix}-font-brands: normal 400 1em/1 'Font Awesome 6 Brands';
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 6 Brands';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: @fa-font-display;
|
||||
src: url('@{fa-font-path}/fa-brands-400.woff2') format('woff2'),
|
||||
url('@{fa-font-path}/fa-brands-400.ttf') format('truetype');
|
||||
}
|
||||
|
||||
.fab,
|
||||
.@{fa-css-prefix}-brands {
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
each(.fa-brand-icons(), {
|
||||
.@{fa-css-prefix}-@{key} { @{fa-icon-property}: @value; }
|
||||
});
|
20
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/less/fontawesome.less
generated
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2024 Fonticons, Inc.
|
||||
*/
|
||||
// Font Awesome core compile (Web Fonts-based)
|
||||
// -------------------------
|
||||
|
||||
@import "_variables.less";
|
||||
@import "_mixins.less";
|
||||
@import "_core.less";
|
||||
@import "_sizing.less";
|
||||
@import "_fixed-width.less";
|
||||
@import "_list.less";
|
||||
@import "_bordered-pulled.less";
|
||||
@import "_animated.less";
|
||||
@import "_rotated-flipped.less";
|
||||
@import "_stacked.less";
|
||||
@import "_icons.less";
|
||||
@import "_screen-reader.less";
|
25
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/less/regular.less
generated
vendored
Normal file
|
@ -0,0 +1,25 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2024 Fonticons, Inc.
|
||||
*/
|
||||
@import "_variables.less";
|
||||
|
||||
:root, :host {
|
||||
--@{fa-css-prefix}-style-family-classic: '@{fa-style-family}';
|
||||
--@{fa-css-prefix}-font-regular: normal 400 1em/1 '@{fa-style-family}';
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 6 Free';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: @fa-font-display;
|
||||
src: url('@{fa-font-path}/fa-regular-400.woff2') format('woff2'),
|
||||
url('@{fa-font-path}/fa-regular-400.ttf') format('truetype');
|
||||
}
|
||||
|
||||
.far,
|
||||
.@{fa-css-prefix}-regular {
|
||||
font-weight: 400;
|
||||
}
|
25
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/less/solid.less
generated
vendored
Normal file
|
@ -0,0 +1,25 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2024 Fonticons, Inc.
|
||||
*/
|
||||
@import "_variables.less";
|
||||
|
||||
:root, :host {
|
||||
--@{fa-css-prefix}-style-family-classic: '@{fa-style-family}';
|
||||
--@{fa-css-prefix}-font-solid: normal 900 1em/1 '@{fa-style-family}';
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 6 Free';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
font-display: @fa-font-display;
|
||||
src: url('@{fa-font-path}/fa-solid-900.woff2') format('woff2'),
|
||||
url('@{fa-font-path}/fa-solid-900.ttf') format('truetype');
|
||||
}
|
||||
|
||||
.fas,
|
||||
.@{fa-css-prefix}-solid {
|
||||
font-weight: 900;
|
||||
}
|
10
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/less/v4-shims.less
generated
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2024 Fonticons, Inc.
|
||||
*/
|
||||
// V4 shims compile (Web Fonts-based)
|
||||
// -------------------------
|
||||
|
||||
@import '_variables.less';
|
||||
@import '_shims.less';
|
3096
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/metadata/categories.yml
generated
vendored
Normal file
118512
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/metadata/icon-families.json
generated
vendored
Normal file
56887
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/metadata/icon-families.yml
generated
vendored
Normal file
46917
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/metadata/icons.yml
generated
vendored
Normal file
646
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/metadata/shims.yml
generated
vendored
Normal file
|
@ -0,0 +1,646 @@
|
|||
area-chart:
|
||||
name: chart-area
|
||||
arrow-circle-o-down:
|
||||
prefix: far
|
||||
name: circle-down
|
||||
arrow-circle-o-left:
|
||||
prefix: far
|
||||
name: circle-left
|
||||
arrow-circle-o-right:
|
||||
prefix: far
|
||||
name: circle-right
|
||||
arrow-circle-o-up:
|
||||
prefix: far
|
||||
name: circle-up
|
||||
arrows:
|
||||
name: up-down-left-right
|
||||
arrows-alt:
|
||||
name: maximize
|
||||
arrows-h:
|
||||
name: left-right
|
||||
arrows-v:
|
||||
name: up-down
|
||||
asl-interpreting:
|
||||
name: hands-asl-interpreting
|
||||
automobile:
|
||||
name: car
|
||||
bank:
|
||||
name: building-columns
|
||||
bar-chart:
|
||||
name: chart-column
|
||||
bar-chart-o:
|
||||
name: chart-column
|
||||
bathtub:
|
||||
name: bath
|
||||
battery:
|
||||
name: battery-full
|
||||
battery-0:
|
||||
name: battery-empty
|
||||
battery-1:
|
||||
name: battery-quarter
|
||||
battery-2:
|
||||
name: battery-half
|
||||
battery-3:
|
||||
name: battery-three-quarters
|
||||
battery-4:
|
||||
name: battery-full
|
||||
behance-square:
|
||||
prefix: fab
|
||||
name: square-behance
|
||||
bitbucket-square:
|
||||
prefix: fab
|
||||
name: bitbucket
|
||||
bitcoin:
|
||||
prefix: fab
|
||||
name: btc
|
||||
cab:
|
||||
name: taxi
|
||||
calendar:
|
||||
name: calendar-days
|
||||
calendar-times-o:
|
||||
prefix: far
|
||||
name: calendar-xmark
|
||||
caret-square-o-down:
|
||||
prefix: far
|
||||
name: square-caret-down
|
||||
caret-square-o-left:
|
||||
prefix: far
|
||||
name: square-caret-left
|
||||
caret-square-o-right:
|
||||
prefix: far
|
||||
name: square-caret-right
|
||||
caret-square-o-up:
|
||||
prefix: far
|
||||
name: square-caret-up
|
||||
cc:
|
||||
prefix: far
|
||||
name: closed-captioning
|
||||
chain:
|
||||
name: link
|
||||
chain-broken:
|
||||
name: link-slash
|
||||
check-circle-o:
|
||||
prefix: far
|
||||
name: circle-check
|
||||
check-square-o:
|
||||
prefix: far
|
||||
name: square-check
|
||||
circle-o-notch:
|
||||
name: circle-notch
|
||||
circle-thin:
|
||||
prefix: far
|
||||
name: circle
|
||||
clipboard:
|
||||
name: paste
|
||||
clone:
|
||||
prefix: far
|
||||
close:
|
||||
name: xmark
|
||||
cloud-download:
|
||||
name: cloud-arrow-down
|
||||
cloud-upload:
|
||||
name: cloud-arrow-up
|
||||
cny:
|
||||
name: yen-sign
|
||||
code-fork:
|
||||
name: code-branch
|
||||
commenting:
|
||||
name: comment-dots
|
||||
commenting-o:
|
||||
prefix: far
|
||||
name: comment-dots
|
||||
compass:
|
||||
prefix: far
|
||||
compress:
|
||||
name: down-left-and-up-right-to-center
|
||||
copyright:
|
||||
prefix: far
|
||||
credit-card:
|
||||
prefix: far
|
||||
credit-card-alt:
|
||||
name: credit-card
|
||||
cut:
|
||||
name: scissors
|
||||
cutlery:
|
||||
name: utensils
|
||||
dashboard:
|
||||
name: gauge-high
|
||||
deafness:
|
||||
name: ear-deaf
|
||||
dedent:
|
||||
name: outdent
|
||||
diamond:
|
||||
prefix: far
|
||||
name: gem
|
||||
dollar:
|
||||
name: dollar-sign
|
||||
dot-circle-o:
|
||||
prefix: far
|
||||
name: circle-dot
|
||||
drivers-license:
|
||||
name: id-card
|
||||
drivers-license-o:
|
||||
prefix: far
|
||||
name: id-card
|
||||
edit:
|
||||
prefix: far
|
||||
name: pen-to-square
|
||||
eercast:
|
||||
prefix: fab
|
||||
name: sellcast
|
||||
eur:
|
||||
name: euro-sign
|
||||
euro:
|
||||
name: euro-sign
|
||||
exchange:
|
||||
name: right-left
|
||||
expand:
|
||||
name: up-right-and-down-left-from-center
|
||||
external-link:
|
||||
name: up-right-from-square
|
||||
external-link-square:
|
||||
name: square-up-right
|
||||
eye:
|
||||
prefix: far
|
||||
eye-slash:
|
||||
prefix: far
|
||||
eyedropper:
|
||||
name: eye-dropper
|
||||
fa:
|
||||
prefix: fab
|
||||
name: font-awesome
|
||||
facebook:
|
||||
prefix: fab
|
||||
name: facebook-f
|
||||
facebook-f:
|
||||
prefix: fab
|
||||
name: facebook-f
|
||||
facebook-official:
|
||||
prefix: fab
|
||||
name: facebook
|
||||
facebook-square:
|
||||
prefix: fab
|
||||
name: square-facebook
|
||||
feed:
|
||||
name: rss
|
||||
file-archive-o:
|
||||
prefix: far
|
||||
name: file-zipper
|
||||
file-movie-o:
|
||||
prefix: far
|
||||
name: file-video
|
||||
file-photo-o:
|
||||
prefix: far
|
||||
name: file-image
|
||||
file-picture-o:
|
||||
prefix: far
|
||||
name: file-image
|
||||
file-sound-o:
|
||||
prefix: far
|
||||
name: file-audio
|
||||
file-text:
|
||||
name: file-lines
|
||||
file-text-o:
|
||||
prefix: far
|
||||
name: file-lines
|
||||
file-zip-o:
|
||||
prefix: far
|
||||
name: file-zipper
|
||||
files-o:
|
||||
prefix: far
|
||||
name: copy
|
||||
flash:
|
||||
name: bolt
|
||||
floppy-o:
|
||||
prefix: far
|
||||
name: floppy-disk
|
||||
frown-o:
|
||||
prefix: far
|
||||
name: face-frown
|
||||
gbp:
|
||||
name: sterling-sign
|
||||
ge:
|
||||
prefix: fab
|
||||
name: empire
|
||||
gear:
|
||||
name: gear
|
||||
gears:
|
||||
name: gears
|
||||
git-square:
|
||||
prefix: fab
|
||||
name: square-git
|
||||
github-square:
|
||||
prefix: fab
|
||||
name: square-github
|
||||
gittip:
|
||||
prefix: fab
|
||||
name: gratipay
|
||||
glass:
|
||||
name: martini-glass-empty
|
||||
globe:
|
||||
name: earth-americas
|
||||
google-plus:
|
||||
prefix: fab
|
||||
name: google-plus-g
|
||||
google-plus-circle:
|
||||
prefix: fab
|
||||
name: google-plus
|
||||
google-plus-official:
|
||||
prefix: fab
|
||||
name: google-plus
|
||||
google-plus-square:
|
||||
prefix: fab
|
||||
name: square-google-plus
|
||||
group:
|
||||
name: users
|
||||
hand-grab-o:
|
||||
prefix: far
|
||||
name: hand-back-fist
|
||||
hand-o-down:
|
||||
prefix: far
|
||||
name: hand-point-down
|
||||
hand-o-left:
|
||||
prefix: far
|
||||
name: hand-point-left
|
||||
hand-o-right:
|
||||
prefix: far
|
||||
name: hand-point-right
|
||||
hand-o-up:
|
||||
prefix: far
|
||||
name: hand-point-up
|
||||
hand-paper-o:
|
||||
prefix: far
|
||||
name: hand
|
||||
hand-rock-o:
|
||||
prefix: far
|
||||
name: hand-back-fist
|
||||
hand-stop-o:
|
||||
prefix: far
|
||||
name: hand
|
||||
hard-of-hearing:
|
||||
name: ear-deaf
|
||||
hdd-o:
|
||||
prefix: far
|
||||
name: hard-drive
|
||||
header:
|
||||
name: heading
|
||||
home:
|
||||
name: house
|
||||
hotel:
|
||||
name: bed
|
||||
hourglass-1:
|
||||
name: hourglass-start
|
||||
hourglass-2:
|
||||
name: hourglass-half
|
||||
hourglass-3:
|
||||
name: hourglass-end
|
||||
hourglass-o:
|
||||
name: hourglass
|
||||
id-badge:
|
||||
prefix: far
|
||||
ils:
|
||||
name: shekel-sign
|
||||
image:
|
||||
prefix: far
|
||||
name: image
|
||||
inr:
|
||||
name: indian-rupee-sign
|
||||
institution:
|
||||
name: building-columns
|
||||
intersex:
|
||||
name: mars-and-venus
|
||||
jpy:
|
||||
name: yen-sign
|
||||
krw:
|
||||
name: won-sign
|
||||
lastfm-square:
|
||||
prefix: fab
|
||||
name: square-lastfm
|
||||
legal:
|
||||
name: gavel
|
||||
level-down:
|
||||
name: turn-down
|
||||
level-up:
|
||||
name: turn-up
|
||||
life-bouy:
|
||||
name: life-ring
|
||||
life-buoy:
|
||||
name: life-ring
|
||||
life-saver:
|
||||
name: life-ring
|
||||
line-chart:
|
||||
name: chart-line
|
||||
linkedin:
|
||||
prefix: fab
|
||||
name: linkedin-in
|
||||
linkedin-square:
|
||||
prefix: fab
|
||||
name: linkedin
|
||||
list-alt:
|
||||
prefix: far
|
||||
name: rectangle-list
|
||||
long-arrow-down:
|
||||
name: down-long
|
||||
long-arrow-left:
|
||||
name: left-long
|
||||
long-arrow-right:
|
||||
name: right-long
|
||||
long-arrow-up:
|
||||
name: up-long
|
||||
magic:
|
||||
name: wand-magic-sparkles
|
||||
mail-forward:
|
||||
name: share
|
||||
mail-reply:
|
||||
name: reply
|
||||
mail-reply-all:
|
||||
name: reply-all
|
||||
map-marker:
|
||||
name: location-dot
|
||||
meh-o:
|
||||
prefix: far
|
||||
name: face-meh
|
||||
minus-square-o:
|
||||
prefix: far
|
||||
name: square-minus
|
||||
mobile:
|
||||
name: mobile-screen-button
|
||||
mobile-phone:
|
||||
name: mobile-screen-button
|
||||
money:
|
||||
name: money-bill-1
|
||||
mortar-board:
|
||||
name: graduation-cap
|
||||
navicon:
|
||||
name: bars
|
||||
object-group:
|
||||
prefix: far
|
||||
object-ungroup:
|
||||
prefix: far
|
||||
odnoklassniki-square:
|
||||
prefix: fab
|
||||
name: square-odnoklassniki
|
||||
pause-circle-o:
|
||||
prefix: far
|
||||
name: circle-pause
|
||||
pencil-square:
|
||||
name: square-pen
|
||||
pencil-square-o:
|
||||
prefix: far
|
||||
name: pen-to-square
|
||||
photo:
|
||||
prefix: far
|
||||
name: image
|
||||
picture-o:
|
||||
prefix: far
|
||||
name: image
|
||||
pie-chart:
|
||||
name: chart-pie
|
||||
pinterest-square:
|
||||
prefix: fab
|
||||
name: square-pinterest
|
||||
play-circle-o:
|
||||
prefix: far
|
||||
name: circle-play
|
||||
plus-square-o:
|
||||
prefix: far
|
||||
name: square-plus
|
||||
question-circle-o:
|
||||
prefix: far
|
||||
name: circle-question
|
||||
ra:
|
||||
prefix: fab
|
||||
name: rebel
|
||||
reddit-square:
|
||||
prefix: fab
|
||||
name: square-reddit
|
||||
refresh:
|
||||
name: arrows-rotate
|
||||
registered:
|
||||
prefix: far
|
||||
remove:
|
||||
name: xmark
|
||||
reorder:
|
||||
name: bars
|
||||
repeat:
|
||||
name: arrow-rotate-right
|
||||
resistance:
|
||||
prefix: fab
|
||||
name: rebel
|
||||
rmb:
|
||||
name: yen-sign
|
||||
rotate-left:
|
||||
name: arrow-rotate-left
|
||||
rotate-right:
|
||||
name: arrow-rotate-right
|
||||
rouble:
|
||||
name: ruble-sign
|
||||
rub:
|
||||
name: ruble-sign
|
||||
ruble:
|
||||
name: ruble-sign
|
||||
rupee:
|
||||
name: indian-rupee-sign
|
||||
s15:
|
||||
name: bath
|
||||
save:
|
||||
prefix: far
|
||||
name: floppy-disk
|
||||
send:
|
||||
name: paper-plane
|
||||
send-o:
|
||||
prefix: far
|
||||
name: paper-plane
|
||||
share-square-o:
|
||||
name: share-from-square
|
||||
shekel:
|
||||
name: shekel-sign
|
||||
sheqel:
|
||||
name: shekel-sign
|
||||
sign-in:
|
||||
name: right-to-bracket
|
||||
sign-out:
|
||||
name: right-from-bracket
|
||||
signing:
|
||||
name: hands
|
||||
smile-o:
|
||||
prefix: far
|
||||
name: face-smile
|
||||
snapchat-ghost:
|
||||
prefix: fab
|
||||
name: snapchat
|
||||
snapchat-square:
|
||||
prefix: fab
|
||||
name: square-snapchat
|
||||
soccer-ball-o:
|
||||
prefix: far
|
||||
name: futbol
|
||||
sort-alpha-asc:
|
||||
name: arrow-down-a-z
|
||||
sort-alpha-desc:
|
||||
name: arrow-down-z-a
|
||||
sort-amount-asc:
|
||||
name: arrow-down-short-wide
|
||||
sort-amount-desc:
|
||||
name: arrow-down-wide-short
|
||||
sort-asc:
|
||||
name: sort-up
|
||||
sort-desc:
|
||||
name: sort-down
|
||||
sort-numeric-asc:
|
||||
name: arrow-down-1-9
|
||||
sort-numeric-desc:
|
||||
name: arrow-down-9-1
|
||||
star-half-empty:
|
||||
prefix: far
|
||||
name: star-half-stroke
|
||||
star-half-full:
|
||||
prefix: far
|
||||
name: star-half-stroke
|
||||
star-half-o:
|
||||
prefix: far
|
||||
name: star-half-stroke
|
||||
steam-square:
|
||||
prefix: fab
|
||||
name: square-steam
|
||||
sticky-note-o:
|
||||
prefix: far
|
||||
name: note-sticky
|
||||
stop-circle-o:
|
||||
prefix: far
|
||||
name: circle-stop
|
||||
support:
|
||||
name: life-ring
|
||||
tablet:
|
||||
name: tablet-screen-button
|
||||
tachometer:
|
||||
name: gauge-high
|
||||
tasks:
|
||||
name: bars-progress
|
||||
television:
|
||||
name: tv
|
||||
thermometer:
|
||||
name: temperature-full
|
||||
thermometer-0:
|
||||
name: temperature-empty
|
||||
thermometer-1:
|
||||
name: temperature-quarter
|
||||
thermometer-2:
|
||||
name: temperature-half
|
||||
thermometer-3:
|
||||
name: temperature-three-quarters
|
||||
thermometer-4:
|
||||
name: temperature-full
|
||||
thumb-tack:
|
||||
name: thumbtack
|
||||
thumbs-o-down:
|
||||
prefix: far
|
||||
name: thumbs-down
|
||||
thumbs-o-up:
|
||||
prefix: far
|
||||
name: thumbs-up
|
||||
times-circle-o:
|
||||
prefix: far
|
||||
name: circle-xmark
|
||||
times-rectangle:
|
||||
name: rectangle-xmark
|
||||
times-rectangle-o:
|
||||
prefix: far
|
||||
name: rectangle-xmark
|
||||
toggle-down:
|
||||
prefix: far
|
||||
name: square-caret-down
|
||||
toggle-left:
|
||||
prefix: far
|
||||
name: square-caret-left
|
||||
toggle-right:
|
||||
prefix: far
|
||||
name: square-caret-right
|
||||
toggle-up:
|
||||
prefix: far
|
||||
name: square-caret-up
|
||||
transgender:
|
||||
name: mars-and-venus
|
||||
transgender-alt:
|
||||
name: transgender
|
||||
trash:
|
||||
name: trash-can
|
||||
trash-o:
|
||||
prefix: far
|
||||
name: trash-can
|
||||
try:
|
||||
name: turkish-lira-sign
|
||||
tumblr-square:
|
||||
prefix: fab
|
||||
name: square-tumblr
|
||||
turkish-lira:
|
||||
name: turkish-lira-sign
|
||||
twitter-square:
|
||||
prefix: fab
|
||||
name: square-twitter
|
||||
unlink:
|
||||
name: link-slash
|
||||
unlock-alt:
|
||||
name: unlock
|
||||
unsorted:
|
||||
name: sort
|
||||
usd:
|
||||
name: dollar-sign
|
||||
user-circle-o:
|
||||
prefix: far
|
||||
name: circle-user
|
||||
vcard:
|
||||
name: address-card
|
||||
vcard-o:
|
||||
prefix: far
|
||||
name: address-card
|
||||
viadeo-square:
|
||||
prefix: fab
|
||||
name: square-viadeo
|
||||
video-camera:
|
||||
name: video
|
||||
vimeo:
|
||||
prefix: fab
|
||||
name: vimeo-v
|
||||
vimeo-square:
|
||||
prefix: fab
|
||||
name: square-vimeo
|
||||
volume-control-phone:
|
||||
name: phone-volume
|
||||
warning:
|
||||
name: triangle-exclamation
|
||||
wechat:
|
||||
prefix: fab
|
||||
name: weixin
|
||||
wheelchair-alt:
|
||||
prefix: fab
|
||||
name: accessible-icon
|
||||
window-close-o:
|
||||
prefix: far
|
||||
name: rectangle-xmark
|
||||
window-maximize:
|
||||
prefix: far
|
||||
window-restore:
|
||||
prefix: far
|
||||
won:
|
||||
name: won-sign
|
||||
xing-square:
|
||||
prefix: fab
|
||||
name: square-xing
|
||||
y-combinator-square:
|
||||
prefix: fab
|
||||
name: hacker-news
|
||||
yc:
|
||||
prefix: fab
|
||||
name: y-combinator
|
||||
yc-square:
|
||||
prefix: fab
|
||||
name: hacker-news
|
||||
yen:
|
||||
name: yen-sign
|
||||
youtube-play:
|
||||
prefix: fab
|
||||
name: youtube
|
||||
youtube-square:
|
||||
prefix: fab
|
||||
name: square-youtube
|
1495
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/metadata/sponsors.yml
generated
vendored
Normal file
29
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/package.json
generated
vendored
Normal file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"description": "The iconic font, CSS, and SVG framework",
|
||||
"keywords": [
|
||||
"font",
|
||||
"awesome",
|
||||
"fontawesome",
|
||||
"icon",
|
||||
"svg",
|
||||
"bootstrap"
|
||||
],
|
||||
"homepage": "https://fontawesome.com",
|
||||
"bugs": {
|
||||
"url": "https://github.com/FortAwesome/Font-Awesome/issues"
|
||||
},
|
||||
"author": "The Font Awesome Team (https://github.com/orgs/FortAwesome/people)",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/FortAwesome/Font-Awesome"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
},
|
||||
"dependencies": {},
|
||||
"version": "6.7.2",
|
||||
"name": "@fortawesome/fontawesome-free",
|
||||
"main": "js/fontawesome.js",
|
||||
"style": "css/fontawesome.css",
|
||||
"license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)"
|
||||
}
|
152
LeraFoxQueen/static/node_modules/@fortawesome/fontawesome-free/scss/_animated.scss
generated
vendored
Normal file
|
@ -0,0 +1,152 @@
|
|||
// animating icons
|
||||
// --------------------------
|
||||
|
||||
.#{$fa-css-prefix}-beat {
|
||||
animation-name: #{$fa-css-prefix}-beat;
|
||||
animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);
|
||||
animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);
|
||||
animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);
|
||||
animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);
|
||||
animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, ease-in-out);
|
||||
}
|
||||
|
||||
.#{$fa-css-prefix}-bounce {
|
||||
animation-name: #{$fa-css-prefix}-bounce;
|
||||
animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);
|
||||
animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);
|
||||
animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);
|
||||
animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);
|
||||
animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(0.280, 0.840, 0.420, 1));
|
||||
}
|
||||
|
||||
.#{$fa-css-prefix}-fade {
|
||||
animation-name: #{$fa-css-prefix}-fade;
|
||||
animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);
|
||||
animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);
|
||||
animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);
|
||||
animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);
|
||||
animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1));
|
||||
}
|
||||
|
||||
.#{$fa-css-prefix}-beat-fade {
|
||||
animation-name: #{$fa-css-prefix}-beat-fade;
|
||||
animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);
|
||||
animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);
|
||||
animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);
|
||||
animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);
|
||||
animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1));
|
||||
}
|
||||
|
||||
.#{$fa-css-prefix}-flip {
|
||||
animation-name: #{$fa-css-prefix}-flip;
|
||||
animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);
|
||||
animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);
|
||||
animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);
|
||||
animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);
|
||||
animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, ease-in-out);
|
||||
}
|
||||
|
||||
.#{$fa-css-prefix}-shake {
|
||||
animation-name: #{$fa-css-prefix}-shake;
|
||||
animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);
|
||||
animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);
|
||||
animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);
|
||||
animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);
|
||||
animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, linear);
|
||||
}
|
||||
|
||||
.#{$fa-css-prefix}-spin {
|
||||
animation-name: #{$fa-css-prefix}-spin;
|
||||
animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);
|
||||
animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);
|
||||
animation-duration: var(--#{$fa-css-prefix}-animation-duration, 2s);
|
||||
animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);
|
||||
animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, linear);
|
||||
}
|
||||
|
||||
.#{$fa-css-prefix}-spin-reverse {
|
||||
--#{$fa-css-prefix}-animation-direction: reverse;
|
||||
}
|
||||
|
||||
.#{$fa-css-prefix}-pulse,
|
||||
.#{$fa-css-prefix}-spin-pulse {
|
||||
animation-name: #{$fa-css-prefix}-spin;
|
||||
animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);
|
||||
animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);
|
||||
animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);
|
||||
animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, steps(8));
|
||||
}
|
||||
|
||||
// if agent or operating system prefers reduced motion, disable animations
|
||||
// see: https://www.smashingmagazine.com/2020/09/design-reduced-motion-sensitivities/
|
||||
// see: https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.#{$fa-css-prefix}-beat,
|
||||
.#{$fa-css-prefix}-bounce,
|
||||
.#{$fa-css-prefix}-fade,
|
||||
.#{$fa-css-prefix}-beat-fade,
|
||||
.#{$fa-css-prefix}-flip,
|
||||
.#{$fa-css-prefix}-pulse,
|
||||
.#{$fa-css-prefix}-shake,
|
||||
.#{$fa-css-prefix}-spin,
|
||||
.#{$fa-css-prefix}-spin-pulse {
|
||||
animation-delay: -1ms;
|
||||
animation-duration: 1ms;
|
||||
animation-iteration-count: 1;
|
||||
transition-delay: 0s;
|
||||
transition-duration: 0s;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes #{$fa-css-prefix}-beat {
|
||||
0%, 90% { transform: scale(1); }
|
||||
45% { transform: scale(var(--#{$fa-css-prefix}-beat-scale, 1.25)); }
|
||||
}
|
||||
|
||||
@keyframes #{$fa-css-prefix}-bounce {
|
||||
0% { transform: scale(1,1) translateY(0); }
|
||||
10% { transform: scale(var(--#{$fa-css-prefix}-bounce-start-scale-x, 1.1),var(--#{$fa-css-prefix}-bounce-start-scale-y, 0.9)) translateY(0); }
|
||||
30% { transform: scale(var(--#{$fa-css-prefix}-bounce-jump-scale-x, 0.9),var(--#{$fa-css-prefix}-bounce-jump-scale-y, 1.1)) translateY(var(--#{$fa-css-prefix}-bounce-height, -0.5em)); }
|
||||
50% { transform: scale(var(--#{$fa-css-prefix}-bounce-land-scale-x, 1.05),var(--#{$fa-css-prefix}-bounce-land-scale-y, 0.95)) translateY(0); }
|
||||
57% { transform: scale(1,1) translateY(var(--#{$fa-css-prefix}-bounce-rebound, -0.125em)); }
|
||||
64% { transform: scale(1,1) translateY(0); }
|
||||
100% { transform: scale(1,1) translateY(0); }
|
||||
}
|
||||
|
||||
@keyframes #{$fa-css-prefix}-fade {
|
||||
50% { opacity: var(--#{$fa-css-prefix}-fade-opacity, 0.4); }
|
||||
}
|
||||
|
||||
@keyframes #{$fa-css-prefix}-beat-fade {
|
||||
0%, 100% {
|
||||
opacity: var(--#{$fa-css-prefix}-beat-fade-opacity, 0.4);
|
||||
transform: scale(1);
|
||||
}
|
||||
50% {
|
||||
opacity: 1;
|
||||
transform: scale(var(--#{$fa-css-prefix}-beat-fade-scale, 1.125));
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes #{$fa-css-prefix}-flip {
|
||||
50% {
|
||||
transform: rotate3d(var(--#{$fa-css-prefix}-flip-x, 0), var(--#{$fa-css-prefix}-flip-y, 1), var(--#{$fa-css-prefix}-flip-z, 0), var(--#{$fa-css-prefix}-flip-angle, -180deg));
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes #{$fa-css-prefix}-shake {
|
||||
0% { transform: rotate(-15deg); }
|
||||
4% { transform: rotate(15deg); }
|
||||
8%, 24% { transform: rotate(-18deg); }
|
||||
12%, 28% { transform: rotate(18deg); }
|
||||
16% { transform: rotate(-22deg); }
|
||||
20% { transform: rotate(22deg); }
|
||||
32% { transform: rotate(-12deg); }
|
||||
36% { transform: rotate(12deg); }
|
||||
40%, 100% { transform: rotate(0deg); }
|
||||
}
|
||||
|
||||
@keyframes #{$fa-css-prefix}-spin {
|
||||
0% { transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); }
|
||||
}
|