Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ca9b574669 | ||
|
|
0d544fdc8e | ||
|
|
154d77e187 | ||
|
|
c177eaffc3 | ||
|
|
cdee2d929d | ||
|
|
fc920e1b04 | ||
|
|
9963c3e7fe | ||
|
|
9040da0172 | ||
|
|
4ff4e83e05 | ||
|
|
c585d5c142 | ||
|
|
331a5318aa | ||
|
|
7b934c8419 | ||
|
|
a4a3154c64 | ||
|
|
fccbc9089f | ||
|
|
20122ab6c0 | ||
|
|
ab8a357137 | ||
|
|
6cba9a6d2b | ||
|
|
b66f7a75df | ||
|
|
b02b7aca14 | ||
|
|
56d5d223f3 | ||
|
|
c14168c194 | ||
|
|
5b71404fda | ||
|
|
926196b30f | ||
|
|
e74d2017fc | ||
|
|
ef1f268298 | ||
|
|
af61f927f1 | ||
|
|
d5b9686302 | ||
|
|
c5bd3d138e | ||
|
|
d5f63f4387 | ||
|
|
f7d0aa1bcf | ||
|
|
4155fb875a | ||
|
|
51dac9f287 | ||
|
|
de36035b59 | ||
|
|
f0643b3488 | ||
|
|
9b5e74ae67 | ||
|
|
1a91b1c33c | ||
|
|
f4d6435146 | ||
|
|
2297d2f3dd | ||
|
|
626eeafe25 | ||
|
|
62f4b88759 | ||
|
|
d2ab271883 | ||
|
|
725c4197b9 | ||
|
|
7e690305a6 | ||
|
|
7e6426b9a2 | ||
|
|
fc21c491b2 | ||
|
|
62ecc4e986 | ||
|
|
31bf58574f | ||
|
|
85ec2f7cef | ||
|
|
8bf419a22f | ||
|
|
3475f6e7e5 | ||
|
|
2f7b008301 | ||
|
|
4bb4e68cdd | ||
|
|
4bb0bcfb8e | ||
|
|
0a58f44a18 | ||
|
|
6e5f414db0 | ||
|
|
1661c02de0 | ||
|
|
063094f338 | ||
|
|
2cb7bbbd18 | ||
|
|
38e3dccdfd | ||
|
|
5c9dc284e8 | ||
|
|
11e4db6672 | ||
|
|
3f85457c6e | ||
|
|
b325b2d4b2 | ||
|
|
6cd04471e0 | ||
|
|
1ba51405d7 | ||
|
|
73828219da | ||
|
|
d265ea7ca5 | ||
|
|
dbb9a62b97 | ||
|
|
2dad05ffb7 | ||
|
|
d821addad3 | ||
|
|
86a42f3c9b | ||
|
|
5309a72233 | ||
|
|
eb31090c13 | ||
|
|
ba9f7c35c9 | ||
|
|
48dde0079c | ||
|
|
65af4cffb3 | ||
|
|
28e8632128 | ||
|
|
d08b0faaeb | ||
|
|
d54811a755 | ||
|
|
3ed90a2392 | ||
|
|
2f10189a52 | ||
|
|
9d615f23e6 | ||
|
|
c07d438ce3 | ||
|
|
7ac561a033 | ||
|
|
25a2a3a086 | ||
|
|
a4eae3cd87 | ||
|
|
35a17bde25 | ||
|
|
1d5cd3501e | ||
|
|
24b979f9fc | ||
|
|
c70b127002 | ||
|
|
e23a3dcce1 | ||
|
|
b061f509e8 | ||
|
|
2895e4f5ab | ||
|
|
57212ea710 | ||
|
|
c54db69862 | ||
|
|
efa4551932 | ||
|
|
c01f2f44fd | ||
|
|
b5dba87a89 | ||
|
|
5285471636 | ||
|
|
e8dcfa3c82 | ||
|
|
f15ade1bf4 | ||
|
|
3c4ac5580a | ||
|
|
85f997a171 | ||
|
|
3a8146bde7 | ||
|
|
1bf6293a0c | ||
|
|
dbd88c32af | ||
|
|
7c41838349 | ||
|
|
10e3682fa4 | ||
|
|
7234881ae7 | ||
|
|
e425a6cba5 | ||
|
|
07f8c8c8b6 | ||
|
|
c3867ca695 | ||
|
|
88a3aff0c2 | ||
|
|
8866b87459 | ||
|
|
3a91743f9b | ||
|
|
fa705221dd | ||
|
|
aa21adb1cf | ||
|
|
5865f0df54 | ||
|
|
4b8d5bee9f | ||
|
|
923d4e8120 | ||
|
|
049063fd7d | ||
|
|
4a13f22de4 | ||
|
|
dac35b2e0e | ||
|
|
cf5ecfd2f6 | ||
|
|
0919760cfd | ||
|
|
40be6ff4b4 | ||
|
|
602c4b6523 | ||
|
|
4a581d6703 | ||
|
|
b426e0cc39 | ||
|
|
b975800532 | ||
|
|
19143a7860 | ||
|
|
2d47e30416 | ||
|
|
87bead9b7e | ||
|
|
11bce0a1ce | ||
|
|
ebcd040be0 | ||
|
|
515a02aed5 | ||
|
|
7314baccc9 | ||
|
|
66a694a321 | ||
|
|
529b22ad20 | ||
|
|
a5d23135eb | ||
|
|
4c3ebcee23 | ||
|
|
2dcb7c1fab | ||
|
|
fd41e0c073 | ||
|
|
264c915e89 | ||
|
|
0f0bb85deb | ||
|
|
35e5ea38e0 | ||
|
|
7da3f16b00 | ||
|
|
3e10059a6f | ||
|
|
4a0b65300d | ||
|
|
4ad491dd7d | ||
|
|
ed0fae0af0 | ||
|
|
8cd1ba5d99 | ||
|
|
3f13368aa1 | ||
|
|
e3e07541fe | ||
|
|
39d87339c2 | ||
|
|
cf7ecf1f81 | ||
|
|
4c5e888f18 | ||
|
|
9187ffd661 | ||
|
|
fffd744731 | ||
|
|
105db720ea | ||
|
|
0cee624dbb | ||
|
|
c8035571be | ||
|
|
6aba6bcaa0 | ||
|
|
1022fa45f4 | ||
|
|
eb95994afa | ||
|
|
bcacce0644 | ||
|
|
c2494401e9 | ||
|
|
3afaca51c6 | ||
|
|
3a9fe9f385 | ||
|
|
02e9b3f90c | ||
|
|
9320fe3d5d | ||
|
|
d38e50a489 | ||
|
|
f1fc4d8b9e | ||
|
|
b286b9adaa | ||
|
|
19fada5940 | ||
|
|
7cb3b5a83b | ||
|
|
936c085f05 | ||
|
|
d43cf0e4b5 | ||
|
|
73a344eb52 | ||
|
|
aa37718a2c | ||
|
|
3a500543c6 | ||
|
|
e310a4ca38 | ||
|
|
c3f55030dc | ||
|
|
95d27fdd8c | ||
|
|
28b956cfaa | ||
|
|
5ac2a68848 | ||
|
|
0399814fe0 | ||
|
|
f11facc9d6 | ||
|
|
c9bc56e168 | ||
|
|
cb9b80668c | ||
|
|
5bf5ce4268 | ||
|
|
79a9014878 | ||
|
|
708d10ae1a | ||
|
|
0dc9240e73 | ||
|
|
7f1286bd6b | ||
|
|
f883dc7760 | ||
|
|
7c250a41fe | ||
|
|
c9ff126c28 | ||
|
|
597b8b0905 | ||
|
|
903498185f | ||
|
|
4fd0501c58 | ||
|
|
d8c91df396 | ||
|
|
0da96559ec |
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Copyright (C) 2020-2021 Graz University of Technology.
|
||||
#
|
||||
# invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||
# details.
|
||||
|
||||
@@ -15,15 +15,6 @@ insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
charset = utf-8
|
||||
|
||||
# Python files
|
||||
[*.py]
|
||||
indent_size = 4
|
||||
# isort plugin configuration
|
||||
known_first_party = invenio_theme_tugraz
|
||||
multi_line_output = 2
|
||||
default_section = THIRDPARTY
|
||||
skip = .eggs
|
||||
|
||||
# RST files (used by sphinx)
|
||||
[*.rst]
|
||||
indent_size = 4
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
export DIRENV_WARN_TIMEOUT=20s
|
||||
|
||||
eval "$(devenv direnvrc)"
|
||||
|
||||
use devenv
|
||||
@@ -0,0 +1 @@
|
||||
cd71ecd24b8fc2253a58c60082c80a87c8085601
|
||||
@@ -0,0 +1,29 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "uv"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
day: "monday"
|
||||
time: "04:00"
|
||||
open-pull-requests-limit: 8
|
||||
allow:
|
||||
- dependency-type: "all"
|
||||
reviewers:
|
||||
- "Cian-H"
|
||||
assignees:
|
||||
- "Cian-H"
|
||||
commit-message:
|
||||
prefix: "uv-deps"
|
||||
prefix-development: "uv-deps-dev"
|
||||
include: "scope"
|
||||
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
day: "monday"
|
||||
time: "04:00"
|
||||
open-pull-requests-limit: 5
|
||||
commit-message:
|
||||
prefix: "ci"
|
||||
@@ -0,0 +1,28 @@
|
||||
name: Publish to PyPI
|
||||
|
||||
on:
|
||||
workflow_run:
|
||||
workflows:
|
||||
- Auto Version Tag
|
||||
types:
|
||||
- completed
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
runs-on: ubuntu-latest
|
||||
environment: release
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set up uv
|
||||
uses: astral-sh/setup-uv@v6
|
||||
with:
|
||||
python-version: "${{ matrix.python-version }}"
|
||||
enable-cache: true
|
||||
cache-dependency-glob: |
|
||||
pyproject.toml
|
||||
- name: Compile translations
|
||||
run: uv run pybabel compile -d invenio_theme_iform/translations/
|
||||
- name: Build package
|
||||
run: uv build
|
||||
- name: Publish to PyPI
|
||||
run: uv publish --token ${{ secrets.PYPI_API_TOKEN }}
|
||||
@@ -1,26 +0,0 @@
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- v*
|
||||
|
||||
jobs:
|
||||
build-n-publish:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python 3.7
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.7
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install setuptools wheel
|
||||
- name: Build package
|
||||
run: |
|
||||
python setup.py compile_catalog sdist bdist_wheel
|
||||
- name: pypi-publish
|
||||
uses: pypa/gh-action-pypi-publish@v1.3.1
|
||||
with:
|
||||
user: __token__
|
||||
password: ${{ secrets.pypi_password }}
|
||||
@@ -0,0 +1,20 @@
|
||||
name: Auto Version Tag
|
||||
|
||||
on:
|
||||
workflow_run:
|
||||
workflows:
|
||||
- Tests
|
||||
types:
|
||||
- completed
|
||||
|
||||
jobs:
|
||||
tag:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Version tag
|
||||
uses: Jorricks/action-python-autotagging@1.0.1
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
path: invenio_theme_iform/__about__.py
|
||||
variable: __version__
|
||||
@@ -1,87 +1,92 @@
|
||||
name: CI
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (C) 2025 I-Form Advanced Manufacturing Research Centre.
|
||||
#
|
||||
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||
# details.
|
||||
|
||||
name: Tests
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: master
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
branches: master
|
||||
schedule:
|
||||
# * is a special character in YAML so you have to quote this string
|
||||
- cron: '0 3 * * 6'
|
||||
branches:
|
||||
- master
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
reason:
|
||||
description: 'Reason'
|
||||
description: "Reason"
|
||||
required: false
|
||||
default: 'Manual trigger'
|
||||
default: "Manual trigger"
|
||||
|
||||
jobs:
|
||||
Tests:
|
||||
runs-on: ubuntu-20.04
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: [3.6, 3.7, 3.8, 3.9]
|
||||
requirements-level: [min, pypi]
|
||||
db-service: [postgresql12]
|
||||
search-service: [elasticsearch7]
|
||||
exclude:
|
||||
- python-version: 3.6
|
||||
requirements-level: pypi
|
||||
create-strategy:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
- python-version: 3.7
|
||||
requirements-level: min
|
||||
outputs:
|
||||
matrix: ${{ steps.requirements.outputs.matrix }}
|
||||
|
||||
- python-version: 3.8
|
||||
requirements-level: min
|
||||
|
||||
- python-version: 3.9
|
||||
requirements-level: min
|
||||
|
||||
- db-service: postgresql12
|
||||
requirements-level: min
|
||||
|
||||
- search-service: elasticsearch7
|
||||
requirements-level: min
|
||||
|
||||
include:
|
||||
|
||||
- db-service: postgresql12
|
||||
DB_EXTRAS: "postgresql"
|
||||
|
||||
|
||||
- search-service: elasticsearch7
|
||||
SEARCH_EXTRAS: "elasticsearch7"
|
||||
|
||||
env:
|
||||
DB: ${{ matrix.db-service }}
|
||||
SEARCH: ${{ matrix.search-service }}
|
||||
EXTRAS: all,${{ matrix.DB_EXTRAS }},${{ matrix.SEARCH_EXTRAS }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
|
||||
- name: Generate dependencies
|
||||
- name: requirements
|
||||
id: requirements
|
||||
run: |
|
||||
python -m pip install --upgrade pip setuptools py wheel requirements-builder
|
||||
requirements-builder -e "$EXTRAS" --level=${{ matrix.requirements-level }} setup.py > .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt
|
||||
- name: Cache pip
|
||||
uses: actions/cache@v2
|
||||
# Define a simple matrix with your Python version
|
||||
# Since we're using pyproject.toml with Python 3.12 requirement
|
||||
echo "matrix={\"include\": [{\"python-version\": \"3.12\"}]}" >> $GITHUB_OUTPUT
|
||||
|
||||
# Print the matrix for debugging
|
||||
echo "-------------------"
|
||||
echo "Matrix: {\"include\": [{\"python-version\": \"3.12\"}]}"
|
||||
echo "-------------------"
|
||||
|
||||
tests:
|
||||
needs: create-strategy
|
||||
runs-on: ubuntu-latest
|
||||
name: Test (Python ${{matrix.python-version}})
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix: ${{ fromJson(needs.create-strategy.outputs.matrix) }}
|
||||
|
||||
# Simplified environment without service variables
|
||||
env:
|
||||
PYTHON_VERSION: ${{ matrix.python-version }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up uv
|
||||
uses: astral-sh/setup-uv@v6
|
||||
with:
|
||||
path: ~/.cache/pip
|
||||
key: ${{ runner.os }}-pip-${{ hashFiles('.${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt') }}
|
||||
python-version: "${{ matrix.python-version }}"
|
||||
enable-cache: true
|
||||
cache-dependency-glob: |
|
||||
pyproject.toml
|
||||
cache-suffix: ${{ matrix.python-version }}
|
||||
|
||||
- name: Show configuration
|
||||
run: |
|
||||
uv --version
|
||||
uv run python --version
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
pip install -r .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt
|
||||
pip install ".[$EXTRAS]"
|
||||
pip freeze
|
||||
docker --version
|
||||
docker-compose --version
|
||||
uv sync --group tests
|
||||
|
||||
- name: Run tests
|
||||
env:
|
||||
PYTEST_ADDOPTS: "--cov-report=lcov"
|
||||
run: |
|
||||
./run-tests.sh
|
||||
uv run test
|
||||
|
||||
- name: Upload coverage to Coveralls
|
||||
uses: coverallsapp/github-action@master
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
path-to-lcov: coverage.lcov
|
||||
|
||||
@@ -60,3 +60,16 @@ target/
|
||||
|
||||
# Vim swapfiles
|
||||
.*.sw?
|
||||
|
||||
# Devenv
|
||||
.devenv*
|
||||
devenv.local.nix
|
||||
|
||||
# direnv
|
||||
.direnv
|
||||
|
||||
# python version lock
|
||||
.python-version
|
||||
|
||||
# bun modules
|
||||
node_modules
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
repos:
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: check-version-increment
|
||||
name: Check Version Increment
|
||||
entry: python scripts/hooks/pre-push/check_version_increment.py
|
||||
language: system
|
||||
pass_filenames: false
|
||||
stages: [pre-push]
|
||||
|
||||
- id: tests
|
||||
name: Run Python Tests
|
||||
entry: uv run test
|
||||
language: system
|
||||
pass_filenames: false
|
||||
stages: [pre-push]
|
||||
|
||||
- id: prettier-with-jinja
|
||||
name: Prettier (with Jinja support)
|
||||
entry: bun run prettier -c
|
||||
language: system
|
||||
types_or:
|
||||
[javascript, jsx, ts, tsx, css, scss, sass, less, yaml, json, markdown, html, jinja]
|
||||
stages: [pre-push]
|
||||
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.11.9
|
||||
hooks:
|
||||
- id: ruff
|
||||
stages: [pre-push]
|
||||
- id: ruff-format
|
||||
stages: [pre-push]
|
||||
|
||||
- repo: https://github.com/pre-commit/mirrors-eslint
|
||||
rev: v9.26.0
|
||||
hooks:
|
||||
- id: eslint
|
||||
additional_dependencies:
|
||||
- eslint@latest
|
||||
- eslint/js
|
||||
- eslint/json
|
||||
- eslint-plugin-react
|
||||
|
||||
files: \.(js|ts|jsx|tsx)$
|
||||
stages: [pre-push]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Read the Docs configuration file
|
||||
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
||||
|
||||
# Required
|
||||
version: 2
|
||||
|
||||
# Set the OS, Python version, and other tools you might need
|
||||
build:
|
||||
os: ubuntu-24.04
|
||||
tools:
|
||||
python: "3.13"
|
||||
jobs:
|
||||
pre_create_environment:
|
||||
- asdf plugin add uv
|
||||
- asdf install uv latest
|
||||
- asdf global uv latest
|
||||
create_environment:
|
||||
- uv sync --group docs
|
||||
install:
|
||||
- uv run python -m sphinx -T -d docs/_build/doctrees -D language=en docs $READTHEDOCS_OUTPUT/html
|
||||
@@ -1,16 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (C) 2020-2021 Graz University of Technology.
|
||||
#
|
||||
# invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||
# details.
|
||||
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[invenio.invenio-theme-tugraz-messages]
|
||||
file_filter = invenio_theme_tugraz/translations/<lang>/LC_MESSAGES/messages.po
|
||||
source_file = invenio_theme_tugraz/translations/messages.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
@@ -1,13 +1,15 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
Authors
|
||||
=======
|
||||
|
||||
invenio module for TUGRAZ theme.
|
||||
Invenio module for iform theme.
|
||||
|
||||
- mojib wali <mojib.wali@tugraz.at>
|
||||
- cian hughes <cian.hughes@dcu.ie>
|
||||
|
||||
Forked from https://github.com/tu-graz-library/invenio-theme-tugraz
|
||||
|
||||
@@ -1,12 +1,165 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
Changes
|
||||
=======
|
||||
|
||||
Version v4.13.0 (release 2025-01-24)
|
||||
|
||||
- setup: necessary because devs not released
|
||||
- view: add route for rdm-search
|
||||
- setup: relax upper pins
|
||||
- add default-page for unhandled errors
|
||||
- guard views/dashboard by `tugraz_authenticated`
|
||||
- fix deprecated `before_app_first_request`
|
||||
|
||||
|
||||
Version v4.12.9 (release 2024-05-07)
|
||||
|
||||
- overview: view publications only if permission
|
||||
|
||||
|
||||
Version v4.12.8 (release 2024-03-11)
|
||||
|
||||
- ui: add banner to header
|
||||
|
||||
|
||||
Version v4.12.7 (release 2024-02-12)
|
||||
|
||||
- translation: fix typo
|
||||
|
||||
|
||||
Version v4.12.6 (release 2024-02-02)
|
||||
|
||||
- fix: error_handler gets 1 parameter
|
||||
|
||||
|
||||
Version v4.12.5 (release 2024-02-02)
|
||||
|
||||
|
||||
|
||||
|
||||
Version v4.12.4 (release 2024-02-02)
|
||||
|
||||
- ui: add 423 error page
|
||||
- fix: types could be empty list
|
||||
- setup: sort tests imports
|
||||
- workflows: change to reusable workflows
|
||||
- wording: update one string frontpage
|
||||
- wording: update frontpage
|
||||
|
||||
|
||||
Version v4.12.3 (release 2024-01-28)
|
||||
|
||||
- wording: update text in benefits
|
||||
- translation: fix research result typo
|
||||
- ui: remove commented code
|
||||
- ui: remove comingsoon rule
|
||||
|
||||
|
||||
Version v4.12.2 (release 2024-01-07)
|
||||
|
||||
- ui: use only first type
|
||||
- ui: change overview logos
|
||||
- wording: improve
|
||||
- wording: improve wording
|
||||
- fix: multiple subjects not displayed in one row
|
||||
|
||||
|
||||
Version v4.12.1 (release 2023-11-23)
|
||||
|
||||
- translation: change text on frontpage overview
|
||||
- ui: comment browse functionality
|
||||
- ui: remove scss, not used
|
||||
|
||||
|
||||
Version v4.12.0 (release 2023-11-10)
|
||||
|
||||
- setup: move python supported window
|
||||
- overview: rephrase text
|
||||
- menu: temporarily remove overwrite
|
||||
- ui: change paths to data-models
|
||||
- global: change to invenio-records-global-search
|
||||
- refactor: apply semantic-ui, indentation, copyright
|
||||
- layout: improve
|
||||
- theme: add separate search entry for rdm
|
||||
- global: make it compatible with v12
|
||||
|
||||
|
||||
Version v4.11.3 (release 2023-06-07)
|
||||
|
||||
- fix: frontpage upload buttons small monitor
|
||||
|
||||
|
||||
Version v4.11.2 (release 2023-06-01)
|
||||
|
||||
- frontpage: layout changes
|
||||
- translation: add oer frontpage translation
|
||||
- WIP: oer upload button on frontpage
|
||||
|
||||
|
||||
Version v4.11.1 (release 2023-04-20)
|
||||
|
||||
- fix: increase invenio-config-tugraz
|
||||
|
||||
|
||||
Version v4.11.0 (release 2023-04-20)
|
||||
|
||||
- global: make dependencies compatible with v11
|
||||
|
||||
|
||||
Version v4.10.1 (release 2022-11-10)
|
||||
|
||||
- dep: bump in invenio-assets
|
||||
|
||||
|
||||
Version v4.10.0 (release 2022-10-13)
|
||||
|
||||
- global: migrate to v10 (#282)
|
||||
|
||||
Version v4.0.2 (release 2022-09-09)
|
||||
|
||||
- release v4.0.1
|
||||
- update translation
|
||||
- improve wording on search options
|
||||
|
||||
|
||||
Version v4.0.1 (release 2022-08-05)
|
||||
|
||||
- update translation
|
||||
- improve wording on search options
|
||||
|
||||
|
||||
Version v4.0.0 (release 2022-07-29)
|
||||
|
||||
- remove unnecessary html code for header-search-bar
|
||||
- fix warning from semantic-ui-react Search component
|
||||
- add marc21 and lom to the searchbar
|
||||
- change searchbar layout and use invenio-app-rdm searchbar
|
||||
- remove grey color of community block and reduce size
|
||||
- migrate js to use prettier
|
||||
|
||||
Version 3.9.2 (released 2022-06-28)
|
||||
|
||||
- fix: adopt renaming of serialize function (#269)
|
||||
|
||||
Version 3.9.1 (released 2022-06-02)
|
||||
|
||||
- fix: add trigger to accordion (#265)
|
||||
- dep: adapt to v9 of invenioRDM(#263)
|
||||
|
||||
Version 3.9.0 (released 2022-05-27)
|
||||
|
||||
- global: migrate setup.py to setup.cfg #260
|
||||
|
||||
Version 3.8.0 (released 2022-03-03)
|
||||
|
||||
- global: migrate to v8 of invenioRDM #257
|
||||
|
||||
Version 3.7.0 (released 2021-12-07)
|
||||
|
||||
- dep: bump config module #252
|
||||
|
||||
@@ -10,7 +10,7 @@ Types of Contributions
|
||||
Report Bugs
|
||||
~~~~~~~~~~~
|
||||
|
||||
Report bugs at https://github.com/tu-graz-library/invenio-theme-tugraz/issues.
|
||||
Report bugs at https://github.com/Cian-H/invenio-theme-iform/issues.
|
||||
|
||||
If you are reporting a bug, please include:
|
||||
|
||||
@@ -33,15 +33,15 @@ is open to whoever wants to implement it.
|
||||
Write Documentation
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
invenio-theme-tugraz could always use more documentation, whether as part of the
|
||||
official invenio-theme-tugraz docs, in docstrings, or even on the web in blog posts,
|
||||
invenio-theme-iform could always use more documentation, whether as part of the
|
||||
official invenio-theme-iform docs, in docstrings, or even on the web in blog posts,
|
||||
articles, and such.
|
||||
|
||||
Submit Feedback
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
The best way to send feedback is to file an issue at
|
||||
https://github.com/tu-graz-library/invenio-theme-tugraz/issues.
|
||||
https://github.com/Cian-H/invenio-theme-iform/issues.
|
||||
|
||||
If you are proposing a feature:
|
||||
|
||||
@@ -53,14 +53,14 @@ If you are proposing a feature:
|
||||
Get Started!
|
||||
------------
|
||||
|
||||
Ready to contribute? Here's how to set up `invenio-theme-tugraz` for local development.
|
||||
Ready to contribute? Here's how to set up `invenio-theme-iform` for local development.
|
||||
|
||||
1. Fork the `https://github.com/tu-graz-library/invenio-theme-tugraz.git` repo on GitHub.
|
||||
1. Fork the `https://github.com/Cian-H/invenio-theme-iform.git` repo on GitHub.
|
||||
2. Clone your fork locally:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone git@github.com:your_name_here/invenio-theme-tugraz.git
|
||||
$ git clone git@github.com:your_name_here/invenio-theme-iform.git
|
||||
|
||||
3. Install your local copy into a virtualenv. Assuming you have
|
||||
virtualenvwrapper installed, this is how you set up your fork for local
|
||||
@@ -68,8 +68,8 @@ Ready to contribute? Here's how to set up `invenio-theme-tugraz` for local devel
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ mkvirtualenv invenio-theme-tugraz
|
||||
$ cd invenio-theme-tugraz/
|
||||
$ mkvirtualenv invenio-theme-iform
|
||||
$ cd invenio-theme-iform/
|
||||
$ pip install -e .[all]
|
||||
|
||||
4. Create a branch for local development:
|
||||
@@ -114,5 +114,5 @@ Before you submit a pull request, check that it meets these guidelines:
|
||||
2. If the pull request adds functionality, the docs should be updated. Put
|
||||
your new functionality into a function with a docstring.
|
||||
3. The pull request should work for Python 2.7, 3.5 and 3.6. Check
|
||||
https://github.com/tu-graz-library/invenio-theme-tugraz/actions?query=event%3Apull_request
|
||||
https://github.com/Cian-H/invenio-theme-iform/actions?query=event%3Apull_request
|
||||
and make sure that the tests pass for all supported Python versions.
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
Installation
|
||||
============
|
||||
|
||||
invenio-theme-tugraz is on PyPI so all you need is:
|
||||
invenio-theme-iform is on PyPI so all you need is:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ pip install invenio-theme-tugraz
|
||||
$ pip install invenio-theme-iform
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
MIT License
|
||||
|
||||
Copyright (C) 2020 Graz University of Technology.
|
||||
Copyright (C) 2025 I-Form Advanced Research Manufacturing Research Centre.
|
||||
|
||||
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
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Copyright (C) 2020-2021 Graz University of Technology.
|
||||
#
|
||||
# invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||
# details.
|
||||
|
||||
@@ -10,7 +10,7 @@ include .dockerignore
|
||||
include .editorconfig
|
||||
include .tx/config
|
||||
prune docs/_build
|
||||
recursive-include invenio_theme_tugraz/translations *.po *.pot *.mo
|
||||
recursive-include invenio_theme_iform/translations *.po *.pot *.mo
|
||||
|
||||
# added by check_manifest.py
|
||||
include *.md
|
||||
@@ -19,25 +19,25 @@ include *.sh
|
||||
include *.txt
|
||||
include *.rst
|
||||
include LICENSE
|
||||
include babel.ini
|
||||
include pytest.ini
|
||||
recursive-include docs *.bat
|
||||
recursive-include docs *.py
|
||||
recursive-include docs *.rst
|
||||
recursive-include docs *.txt
|
||||
recursive-include docs Makefile
|
||||
recursive-include invenio_theme_tugraz *.html
|
||||
recursive-include invenio_theme_tugraz *.js
|
||||
recursive-include invenio_theme_tugraz *.png
|
||||
recursive-include invenio_theme_tugraz *.scss
|
||||
recursive-include invenio_theme_tugraz *.svg
|
||||
recursive-include invenio_theme_tugraz *.less
|
||||
recursive-include invenio_theme_tugraz *.ico
|
||||
recursive-include invenio_theme_tugraz *.pdf
|
||||
recursive-include invenio_theme_tugraz *.ttf
|
||||
recursive-include invenio_theme_tugraz *.txt
|
||||
recursive-include invenio_theme_iform *.html
|
||||
recursive-include invenio_theme_iform *.js
|
||||
recursive-include invenio_theme_iform *.png
|
||||
recursive-include invenio_theme_iform *.scss
|
||||
recursive-include invenio_theme_iform *.svg
|
||||
recursive-include invenio_theme_iform *.less
|
||||
recursive-include invenio_theme_iform *.ico
|
||||
recursive-include invenio_theme_iform *.pdf
|
||||
recursive-include invenio_theme_iform *.ttf
|
||||
recursive-include invenio_theme_iform *.txt
|
||||
|
||||
recursive-include tests *.py
|
||||
recursive-include invenio_theme_tugraz *.jpg
|
||||
recursive-include invenio_theme_tugraz *.gitkeep
|
||||
recursive-include invenio_theme_iform *.jpg
|
||||
recursive-include invenio_theme_iform *.gitkeep
|
||||
recursive-include .github/workflows *.yml
|
||||
include .git-blame-ignore-revs
|
||||
|
||||
@@ -1,45 +1,47 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
======================
|
||||
invenio-theme-tugraz
|
||||
invenio-theme-iform
|
||||
======================
|
||||
|
||||
.. image:: https://github.com/tu-graz-library/invenio-theme-tugraz/workflows/CI/badge.svg
|
||||
:target: https://github.com/tu-graz-library/invenio-theme-tugraz/actions
|
||||
.. image:: https://github.com/Cian-H/invenio-theme-iform/workflows/CI/badge.svg
|
||||
:target: https://github.com/Cian-H/invenio-theme-iform/actions
|
||||
|
||||
.. image:: https://img.shields.io/pypi/dm/invenio-theme-tugraz.svg
|
||||
:target: https://pypi.python.org/pypi/invenio-theme-tugraz
|
||||
.. image:: https://img.shields.io/pypi/dm/invenio-theme-iform.svg
|
||||
:target: https://pypi.python.org/pypi/invenio-theme-iform
|
||||
|
||||
.. image:: https://img.shields.io/github/tag/tu-graz-library/invenio-theme-tugraz.svg
|
||||
:target: https://github.com/tu-graz-library/invenio-theme-tugraz/releases
|
||||
.. image:: https://img.shields.io/github/tag/Cian-H/invenio-theme-iform.svg
|
||||
:target: https://github.com/Cian-H/invenio-theme-iform/releases
|
||||
|
||||
.. image:: https://img.shields.io/github/license/tu-graz-library/invenio-theme-tugraz.svg
|
||||
:target: https://github.com/tu-graz-library/invenio-theme-tugraz/blob/master/LICENSE
|
||||
.. image:: https://img.shields.io/github/license/Cian-H/invenio-theme-iform.svg
|
||||
:target: https://github.com/Cian-H/invenio-theme-iform/blob/master/LICENSE
|
||||
|
||||
.. image:: https://readthedocs.org/projects/invenio-theme-tugraz/badge/?version=latest
|
||||
:target: https://invenio-theme-tugraz.readthedocs.io/en/latest/?badge=latest
|
||||
|
||||
.. image:: https://img.shields.io/coveralls/mb-wali/invenio-theme-tugraz.svg
|
||||
:target: https://coveralls.io/r/mb-wali/invenio-theme-tugraz
|
||||
|
||||
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
|
||||
:target: https://github.com/psf/black
|
||||
.. image:: https://readthedocs.org/projects/invenio-theme-iform/badge/?version=latest
|
||||
:target: https://invenio-theme-iform.readthedocs.io/en/latest/?badge=latest
|
||||
|
||||
TU Graz standard theme.
|
||||
.. image:: https://coveralls.io/repos/github/Cian-H/invenio-theme-iform/badge.svg?branch=master
|
||||
:target: https://coveralls.io/github/Cian-H/invenio-theme-iform?branch=master
|
||||
|
||||
.. image:: https://img.shields.io/badge/code%20style-Ruff-D7FF64.svg
|
||||
:target: https://github.com/astral-sh/ruff
|
||||
|
||||
I-Form standard theme.
|
||||
|
||||
Features:
|
||||
|
||||
* TU Graz custom header template.
|
||||
* TU Graz custom footer template.
|
||||
* TU Graz custom login/signup templates.
|
||||
* TU Graz custom frontpage template.
|
||||
* TU Graz custom contact template.
|
||||
* TU Graz overriden theme.
|
||||
* I-Form custom header template.
|
||||
* I-Form custom footer template.
|
||||
* I-Form custom login/signup templates.
|
||||
* I-Form custom frontpage template.
|
||||
* I-Form custom contact template.
|
||||
* I-Form overriden theme.
|
||||
|
||||
Further documentation is available on
|
||||
https://invenio-theme-tugraz.readthedocs.io/
|
||||
https://invenio-theme-iform.readthedocs.io/
|
||||
|
||||
Forked from https://github.com/tu-graz-library/invenio-theme-tugraz
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (C) 2020-2021 Graz University of Technology.
|
||||
# Copyright (C) 2025 I-Form Advanced Manufacturing Research Centre.
|
||||
#
|
||||
# invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the MIT License; see LICENSE file for more details.
|
||||
|
||||
# Extraction from Python source files
|
||||
|
||||
[python: **.py]
|
||||
encoding = utf-8
|
||||
|
||||
# Extraction from Jinja2 templates
|
||||
|
||||
[jinja2: **/templates/**.html]
|
||||
encoding = utf-8
|
||||
|
||||
# Extraction from JavaScript files
|
||||
|
||||
[javascript: **.js]
|
||||
encoding = utf-8
|
||||
extract_messages = $._, jQuery._
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Copyright (C) 2020-2021 Graz University of Technology.
|
||||
#
|
||||
# invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||
# details.
|
||||
|
||||
@@ -15,7 +15,6 @@ encoding = utf-8
|
||||
|
||||
[jinja2: **/templates/**.html]
|
||||
encoding = utf-8
|
||||
extensions = jinja2.ext.autoescape, jinja2.ext.with_
|
||||
|
||||
# Extraction from JavaScript files
|
||||
|
||||
|
||||
@@ -0,0 +1,543 @@
|
||||
{
|
||||
"lockfileVersion": 1,
|
||||
"workspaces": {
|
||||
"": {
|
||||
"devDependencies": {
|
||||
"@eslint/css": "^0.7.0",
|
||||
"@eslint/js": "^9.26.0",
|
||||
"@eslint/json": "^0.12.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint-plugin-react": "^7.37.5",
|
||||
"globals": "^16.1.0",
|
||||
"prettier": "^3.5.3",
|
||||
"prettier-plugin-jinja-template": "^2.1.0",
|
||||
"react": "16",
|
||||
},
|
||||
},
|
||||
},
|
||||
"packages": {
|
||||
"@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.7.0", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw=="],
|
||||
|
||||
"@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="],
|
||||
|
||||
"@eslint/config-array": ["@eslint/config-array@0.20.0", "", { "dependencies": { "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ=="],
|
||||
|
||||
"@eslint/config-helpers": ["@eslint/config-helpers@0.2.2", "", {}, "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg=="],
|
||||
|
||||
"@eslint/core": ["@eslint/core@0.13.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw=="],
|
||||
|
||||
"@eslint/css": ["@eslint/css@0.7.0", "", { "dependencies": { "@eslint/core": "^0.13.0", "@eslint/css-tree": "^3.3.3", "@eslint/plugin-kit": "^0.2.5" } }, "sha512-d6mo8etv4igrTGxgvWSgA5+TsppfObM/Xhlu8JWbkqNBiaJXztUNH45R1B4i1GL2PNIFMLREI3Kh9lTBi19l7g=="],
|
||||
|
||||
"@eslint/css-tree": ["@eslint/css-tree@3.5.1", "", { "dependencies": { "mdn-data": "2.20.0", "source-map-js": "^1.0.1" } }, "sha512-gEej0mqMHD1xOwvciok6LGdAjjDVCXNASVg6cA3TLGVpqNcayzt5WgO6SXHrDialOl3N2Zc69ACE62QXLaYa1w=="],
|
||||
|
||||
"@eslint/eslintrc": ["@eslint/eslintrc@3.3.1", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ=="],
|
||||
|
||||
"@eslint/js": ["@eslint/js@9.26.0", "", {}, "sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ=="],
|
||||
|
||||
"@eslint/json": ["@eslint/json@0.12.0", "", { "dependencies": { "@eslint/core": "^0.12.0", "@eslint/plugin-kit": "^0.2.7", "@humanwhocodes/momoa": "^3.3.4", "natural-compare": "^1.4.0" } }, "sha512-n/7dz8HFStpEe4o5eYk0tdkBdGUS/ZGb0GQCeDWN1ZmRq67HMHK4vC33b0rQlTT6xdZoX935P4vstiWVk5Ying=="],
|
||||
|
||||
"@eslint/object-schema": ["@eslint/object-schema@2.1.6", "", {}, "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA=="],
|
||||
|
||||
"@eslint/plugin-kit": ["@eslint/plugin-kit@0.2.8", "", { "dependencies": { "@eslint/core": "^0.13.0", "levn": "^0.4.1" } }, "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA=="],
|
||||
|
||||
"@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="],
|
||||
|
||||
"@humanfs/node": ["@humanfs/node@0.16.6", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.3.0" } }, "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw=="],
|
||||
|
||||
"@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="],
|
||||
|
||||
"@humanwhocodes/momoa": ["@humanwhocodes/momoa@3.3.8", "", {}, "sha512-/3PZzor2imi/RLLcnHztkwA79txiVvW145Ve2cp5dxRcH5qOUNJPToasqLFHniTfw4B4lT7jGDdBOPXbXYlIMQ=="],
|
||||
|
||||
"@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="],
|
||||
|
||||
"@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.11.2", "", { "dependencies": { "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.3", "eventsource": "^3.0.2", "express": "^5.0.1", "express-rate-limit": "^7.5.0", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.23.8", "zod-to-json-schema": "^3.24.1" } }, "sha512-H9vwztj5OAqHg9GockCQC06k1natgcxWQSRpQcPJf6i5+MWBzfKkRtxGbjQf0X2ihii0ffLZCRGbYV2f2bjNCQ=="],
|
||||
|
||||
"@types/estree": ["@types/estree@1.0.7", "", {}, "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ=="],
|
||||
|
||||
"@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="],
|
||||
|
||||
"accepts": ["accepts@2.0.0", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="],
|
||||
|
||||
"acorn": ["acorn@8.14.1", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg=="],
|
||||
|
||||
"acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="],
|
||||
|
||||
"ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="],
|
||||
|
||||
"ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
|
||||
|
||||
"argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],
|
||||
|
||||
"array-buffer-byte-length": ["array-buffer-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" } }, "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw=="],
|
||||
|
||||
"array-includes": ["array-includes@3.1.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" } }, "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ=="],
|
||||
|
||||
"array.prototype.findlast": ["array.prototype.findlast@1.2.5", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "es-shim-unscopables": "^1.0.2" } }, "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ=="],
|
||||
|
||||
"array.prototype.flatmap": ["array.prototype.flatmap@1.3.3", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" } }, "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg=="],
|
||||
|
||||
"array.prototype.tosorted": ["array.prototype.tosorted@1.1.4", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.3", "es-errors": "^1.3.0", "es-shim-unscopables": "^1.0.2" } }, "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA=="],
|
||||
|
||||
"arraybuffer.prototype.slice": ["arraybuffer.prototype.slice@1.0.4", "", { "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "is-array-buffer": "^3.0.4" } }, "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ=="],
|
||||
|
||||
"async-function": ["async-function@1.0.0", "", {}, "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA=="],
|
||||
|
||||
"available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="],
|
||||
|
||||
"balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
|
||||
|
||||
"body-parser": ["body-parser@2.2.0", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.0", "http-errors": "^2.0.0", "iconv-lite": "^0.6.3", "on-finished": "^2.4.1", "qs": "^6.14.0", "raw-body": "^3.0.0", "type-is": "^2.0.0" } }, "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg=="],
|
||||
|
||||
"brace-expansion": ["brace-expansion@1.1.11", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="],
|
||||
|
||||
"bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="],
|
||||
|
||||
"call-bind": ["call-bind@1.0.8", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", "get-intrinsic": "^1.2.4", "set-function-length": "^1.2.2" } }, "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww=="],
|
||||
|
||||
"call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="],
|
||||
|
||||
"call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="],
|
||||
|
||||
"callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="],
|
||||
|
||||
"chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
|
||||
|
||||
"color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
|
||||
|
||||
"color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
|
||||
|
||||
"concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="],
|
||||
|
||||
"content-disposition": ["content-disposition@1.0.0", "", { "dependencies": { "safe-buffer": "5.2.1" } }, "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg=="],
|
||||
|
||||
"content-type": ["content-type@1.0.5", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="],
|
||||
|
||||
"cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="],
|
||||
|
||||
"cookie-signature": ["cookie-signature@1.2.2", "", {}, "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg=="],
|
||||
|
||||
"cors": ["cors@2.8.5", "", { "dependencies": { "object-assign": "^4", "vary": "^1" } }, "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g=="],
|
||||
|
||||
"cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],
|
||||
|
||||
"data-view-buffer": ["data-view-buffer@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ=="],
|
||||
|
||||
"data-view-byte-length": ["data-view-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ=="],
|
||||
|
||||
"data-view-byte-offset": ["data-view-byte-offset@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" } }, "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ=="],
|
||||
|
||||
"debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="],
|
||||
|
||||
"deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="],
|
||||
|
||||
"define-data-property": ["define-data-property@1.1.4", "", { "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "gopd": "^1.0.1" } }, "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A=="],
|
||||
|
||||
"define-properties": ["define-properties@1.2.1", "", { "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg=="],
|
||||
|
||||
"depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="],
|
||||
|
||||
"doctrine": ["doctrine@2.1.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="],
|
||||
|
||||
"dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="],
|
||||
|
||||
"ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="],
|
||||
|
||||
"encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="],
|
||||
|
||||
"es-abstract": ["es-abstract@1.23.9", "", { "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.3", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.0", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-regex": "^1.2.1", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.0", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.3", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.3", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.18" } }, "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA=="],
|
||||
|
||||
"es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="],
|
||||
|
||||
"es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="],
|
||||
|
||||
"es-iterator-helpers": ["es-iterator-helpers@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.6", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "iterator.prototype": "^1.1.4", "safe-array-concat": "^1.1.3" } }, "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w=="],
|
||||
|
||||
"es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="],
|
||||
|
||||
"es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="],
|
||||
|
||||
"es-shim-unscopables": ["es-shim-unscopables@1.1.0", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw=="],
|
||||
|
||||
"es-to-primitive": ["es-to-primitive@1.3.0", "", { "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", "is-symbol": "^1.0.4" } }, "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g=="],
|
||||
|
||||
"escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="],
|
||||
|
||||
"escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="],
|
||||
|
||||
"eslint": ["eslint@9.26.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.20.0", "@eslint/config-helpers": "^0.2.1", "@eslint/core": "^0.13.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.26.0", "@eslint/plugin-kit": "^0.2.8", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@modelcontextprotocol/sdk": "^1.8.0", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.3.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3", "zod": "^3.24.2" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ=="],
|
||||
|
||||
"eslint-plugin-react": ["eslint-plugin-react@7.37.5", "", { "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", "array.prototype.flatmap": "^1.3.3", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.9", "object.fromentries": "^2.0.8", "object.values": "^1.2.1", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", "string.prototype.matchall": "^4.0.12", "string.prototype.repeat": "^1.0.0" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA=="],
|
||||
|
||||
"eslint-scope": ["eslint-scope@8.3.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ=="],
|
||||
|
||||
"eslint-visitor-keys": ["eslint-visitor-keys@4.2.0", "", {}, "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw=="],
|
||||
|
||||
"espree": ["espree@10.3.0", "", { "dependencies": { "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.0" } }, "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg=="],
|
||||
|
||||
"esquery": ["esquery@1.6.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg=="],
|
||||
|
||||
"esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="],
|
||||
|
||||
"estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="],
|
||||
|
||||
"esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="],
|
||||
|
||||
"etag": ["etag@1.8.1", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="],
|
||||
|
||||
"eventsource": ["eventsource@3.0.7", "", { "dependencies": { "eventsource-parser": "^3.0.1" } }, "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA=="],
|
||||
|
||||
"eventsource-parser": ["eventsource-parser@3.0.1", "", {}, "sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA=="],
|
||||
|
||||
"express": ["express@5.1.0", "", { "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.0", "content-disposition": "^1.0.0", "content-type": "^1.0.5", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "finalhandler": "^2.1.0", "fresh": "^2.0.0", "http-errors": "^2.0.0", "merge-descriptors": "^2.0.0", "mime-types": "^3.0.0", "on-finished": "^2.4.1", "once": "^1.4.0", "parseurl": "^1.3.3", "proxy-addr": "^2.0.7", "qs": "^6.14.0", "range-parser": "^1.2.1", "router": "^2.2.0", "send": "^1.1.0", "serve-static": "^2.2.0", "statuses": "^2.0.1", "type-is": "^2.0.1", "vary": "^1.1.2" } }, "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA=="],
|
||||
|
||||
"express-rate-limit": ["express-rate-limit@7.5.0", "", { "peerDependencies": { "express": "^4.11 || 5 || ^5.0.0-beta.1" } }, "sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg=="],
|
||||
|
||||
"fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="],
|
||||
|
||||
"fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="],
|
||||
|
||||
"fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="],
|
||||
|
||||
"file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="],
|
||||
|
||||
"finalhandler": ["finalhandler@2.1.0", "", { "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "on-finished": "^2.4.1", "parseurl": "^1.3.3", "statuses": "^2.0.1" } }, "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q=="],
|
||||
|
||||
"find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="],
|
||||
|
||||
"flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="],
|
||||
|
||||
"flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="],
|
||||
|
||||
"for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="],
|
||||
|
||||
"forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="],
|
||||
|
||||
"fresh": ["fresh@2.0.0", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="],
|
||||
|
||||
"function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="],
|
||||
|
||||
"function.prototype.name": ["function.prototype.name@1.1.8", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "functions-have-names": "^1.2.3", "hasown": "^2.0.2", "is-callable": "^1.2.7" } }, "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q=="],
|
||||
|
||||
"functions-have-names": ["functions-have-names@1.2.3", "", {}, "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="],
|
||||
|
||||
"get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="],
|
||||
|
||||
"get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="],
|
||||
|
||||
"get-symbol-description": ["get-symbol-description@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6" } }, "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg=="],
|
||||
|
||||
"glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="],
|
||||
|
||||
"globals": ["globals@16.1.0", "", {}, "sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g=="],
|
||||
|
||||
"globalthis": ["globalthis@1.0.4", "", { "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" } }, "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ=="],
|
||||
|
||||
"gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="],
|
||||
|
||||
"has-bigints": ["has-bigints@1.1.0", "", {}, "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg=="],
|
||||
|
||||
"has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="],
|
||||
|
||||
"has-property-descriptors": ["has-property-descriptors@1.0.2", "", { "dependencies": { "es-define-property": "^1.0.0" } }, "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg=="],
|
||||
|
||||
"has-proto": ["has-proto@1.2.0", "", { "dependencies": { "dunder-proto": "^1.0.0" } }, "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ=="],
|
||||
|
||||
"has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="],
|
||||
|
||||
"has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="],
|
||||
|
||||
"hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="],
|
||||
|
||||
"http-errors": ["http-errors@2.0.0", "", { "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": "2.0.1", "toidentifier": "1.0.1" } }, "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ=="],
|
||||
|
||||
"iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="],
|
||||
|
||||
"ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="],
|
||||
|
||||
"import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="],
|
||||
|
||||
"imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="],
|
||||
|
||||
"inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
|
||||
|
||||
"internal-slot": ["internal-slot@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw=="],
|
||||
|
||||
"ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="],
|
||||
|
||||
"is-array-buffer": ["is-array-buffer@3.0.5", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A=="],
|
||||
|
||||
"is-async-function": ["is-async-function@2.1.1", "", { "dependencies": { "async-function": "^1.0.0", "call-bound": "^1.0.3", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ=="],
|
||||
|
||||
"is-bigint": ["is-bigint@1.1.0", "", { "dependencies": { "has-bigints": "^1.0.2" } }, "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ=="],
|
||||
|
||||
"is-boolean-object": ["is-boolean-object@1.2.2", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A=="],
|
||||
|
||||
"is-callable": ["is-callable@1.2.7", "", {}, "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="],
|
||||
|
||||
"is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="],
|
||||
|
||||
"is-data-view": ["is-data-view@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" } }, "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw=="],
|
||||
|
||||
"is-date-object": ["is-date-object@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" } }, "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg=="],
|
||||
|
||||
"is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="],
|
||||
|
||||
"is-finalizationregistry": ["is-finalizationregistry@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg=="],
|
||||
|
||||
"is-generator-function": ["is-generator-function@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "get-proto": "^1.0.0", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ=="],
|
||||
|
||||
"is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="],
|
||||
|
||||
"is-map": ["is-map@2.0.3", "", {}, "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw=="],
|
||||
|
||||
"is-number-object": ["is-number-object@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw=="],
|
||||
|
||||
"is-promise": ["is-promise@4.0.0", "", {}, "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="],
|
||||
|
||||
"is-regex": ["is-regex@1.2.1", "", { "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g=="],
|
||||
|
||||
"is-set": ["is-set@2.0.3", "", {}, "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg=="],
|
||||
|
||||
"is-shared-array-buffer": ["is-shared-array-buffer@1.0.4", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A=="],
|
||||
|
||||
"is-string": ["is-string@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA=="],
|
||||
|
||||
"is-symbol": ["is-symbol@1.1.1", "", { "dependencies": { "call-bound": "^1.0.2", "has-symbols": "^1.1.0", "safe-regex-test": "^1.1.0" } }, "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w=="],
|
||||
|
||||
"is-typed-array": ["is-typed-array@1.1.15", "", { "dependencies": { "which-typed-array": "^1.1.16" } }, "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ=="],
|
||||
|
||||
"is-weakmap": ["is-weakmap@2.0.2", "", {}, "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w=="],
|
||||
|
||||
"is-weakref": ["is-weakref@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew=="],
|
||||
|
||||
"is-weakset": ["is-weakset@2.0.4", "", { "dependencies": { "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ=="],
|
||||
|
||||
"isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="],
|
||||
|
||||
"isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
|
||||
|
||||
"iterator.prototype": ["iterator.prototype@1.1.5", "", { "dependencies": { "define-data-property": "^1.1.4", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "get-proto": "^1.0.0", "has-symbols": "^1.1.0", "set-function-name": "^2.0.2" } }, "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g=="],
|
||||
|
||||
"js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="],
|
||||
|
||||
"js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="],
|
||||
|
||||
"json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="],
|
||||
|
||||
"json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="],
|
||||
|
||||
"json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="],
|
||||
|
||||
"jsx-ast-utils": ["jsx-ast-utils@2.4.1", "", { "dependencies": { "array-includes": "^3.1.1", "object.assign": "^4.1.0" } }, "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w=="],
|
||||
|
||||
"keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="],
|
||||
|
||||
"levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="],
|
||||
|
||||
"locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="],
|
||||
|
||||
"lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="],
|
||||
|
||||
"loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="],
|
||||
|
||||
"math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="],
|
||||
|
||||
"mdn-data": ["mdn-data@2.20.0", "", {}, "sha512-/d3otgvmquUkAN2RVxSg6lIbQrYX7isR4aC5Hvw8JuHvzctR3eUG50WmsAZjb9MkbJ5LbijPSy7uIxEtQDGI0w=="],
|
||||
|
||||
"media-typer": ["media-typer@1.1.0", "", {}, "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="],
|
||||
|
||||
"merge-descriptors": ["merge-descriptors@2.0.0", "", {}, "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="],
|
||||
|
||||
"mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="],
|
||||
|
||||
"mime-types": ["mime-types@3.0.1", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA=="],
|
||||
|
||||
"minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="],
|
||||
|
||||
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
|
||||
|
||||
"natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="],
|
||||
|
||||
"negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="],
|
||||
|
||||
"object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="],
|
||||
|
||||
"object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="],
|
||||
|
||||
"object-keys": ["object-keys@1.1.1", "", {}, "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="],
|
||||
|
||||
"object.assign": ["object.assign@4.1.7", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0", "has-symbols": "^1.1.0", "object-keys": "^1.1.1" } }, "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw=="],
|
||||
|
||||
"object.entries": ["object.entries@1.1.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-object-atoms": "^1.1.1" } }, "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw=="],
|
||||
|
||||
"object.fromentries": ["object.fromentries@2.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-object-atoms": "^1.0.0" } }, "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ=="],
|
||||
|
||||
"object.values": ["object.values@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA=="],
|
||||
|
||||
"on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="],
|
||||
|
||||
"once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="],
|
||||
|
||||
"optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="],
|
||||
|
||||
"own-keys": ["own-keys@1.0.1", "", { "dependencies": { "get-intrinsic": "^1.2.6", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" } }, "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg=="],
|
||||
|
||||
"p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="],
|
||||
|
||||
"p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="],
|
||||
|
||||
"parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="],
|
||||
|
||||
"parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="],
|
||||
|
||||
"path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="],
|
||||
|
||||
"path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],
|
||||
|
||||
"path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="],
|
||||
|
||||
"path-to-regexp": ["path-to-regexp@8.2.0", "", {}, "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ=="],
|
||||
|
||||
"pkce-challenge": ["pkce-challenge@5.0.0", "", {}, "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ=="],
|
||||
|
||||
"possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="],
|
||||
|
||||
"prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="],
|
||||
|
||||
"prettier": ["prettier@3.5.3", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw=="],
|
||||
|
||||
"prettier-plugin-jinja-template": ["prettier-plugin-jinja-template@2.1.0", "", { "peerDependencies": { "prettier": "^3.0.0" } }, "sha512-mzoCp2Oy9BDSug80fw3B3J4n4KQj1hRvoQOL1akqcDKBb5nvYxrik9zUEDs4AEJ6nK7QDTGoH0y9rx7AlnQ78Q=="],
|
||||
|
||||
"prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="],
|
||||
|
||||
"proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="],
|
||||
|
||||
"punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="],
|
||||
|
||||
"qs": ["qs@6.14.0", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w=="],
|
||||
|
||||
"range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="],
|
||||
|
||||
"raw-body": ["raw-body@3.0.0", "", { "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", "iconv-lite": "0.6.3", "unpipe": "1.0.0" } }, "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g=="],
|
||||
|
||||
"react": ["react@16.14.0", "", { "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2" } }, "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g=="],
|
||||
|
||||
"react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="],
|
||||
|
||||
"reflect.getprototypeof": ["reflect.getprototypeof@1.0.10", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="],
|
||||
|
||||
"regexp.prototype.flags": ["regexp.prototype.flags@1.5.4", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", "get-proto": "^1.0.1", "gopd": "^1.2.0", "set-function-name": "^2.0.2" } }, "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA=="],
|
||||
|
||||
"resolve": ["resolve@2.0.0-next.5", "", { "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA=="],
|
||||
|
||||
"resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="],
|
||||
|
||||
"router": ["router@2.2.0", "", { "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", "is-promise": "^4.0.0", "parseurl": "^1.3.3", "path-to-regexp": "^8.0.0" } }, "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ=="],
|
||||
|
||||
"safe-array-concat": ["safe-array-concat@1.1.3", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "has-symbols": "^1.1.0", "isarray": "^2.0.5" } }, "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q=="],
|
||||
|
||||
"safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="],
|
||||
|
||||
"safe-push-apply": ["safe-push-apply@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "isarray": "^2.0.5" } }, "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA=="],
|
||||
|
||||
"safe-regex-test": ["safe-regex-test@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-regex": "^1.2.1" } }, "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw=="],
|
||||
|
||||
"safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="],
|
||||
|
||||
"semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="],
|
||||
|
||||
"send": ["send@1.2.0", "", { "dependencies": { "debug": "^4.3.5", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", "http-errors": "^2.0.0", "mime-types": "^3.0.1", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "statuses": "^2.0.1" } }, "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw=="],
|
||||
|
||||
"serve-static": ["serve-static@2.2.0", "", { "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", "send": "^1.2.0" } }, "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ=="],
|
||||
|
||||
"set-function-length": ["set-function-length@1.2.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2" } }, "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg=="],
|
||||
|
||||
"set-function-name": ["set-function-name@2.0.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", "has-property-descriptors": "^1.0.2" } }, "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ=="],
|
||||
|
||||
"set-proto": ["set-proto@1.0.0", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0" } }, "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw=="],
|
||||
|
||||
"setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="],
|
||||
|
||||
"shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="],
|
||||
|
||||
"shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="],
|
||||
|
||||
"side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="],
|
||||
|
||||
"side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="],
|
||||
|
||||
"side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="],
|
||||
|
||||
"side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="],
|
||||
|
||||
"source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
|
||||
|
||||
"statuses": ["statuses@2.0.1", "", {}, "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="],
|
||||
|
||||
"string.prototype.matchall": ["string.prototype.matchall@4.0.12", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "regexp.prototype.flags": "^1.5.3", "set-function-name": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA=="],
|
||||
|
||||
"string.prototype.repeat": ["string.prototype.repeat@1.0.0", "", { "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" } }, "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w=="],
|
||||
|
||||
"string.prototype.trim": ["string.prototype.trim@1.2.10", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-data-property": "^1.1.4", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-object-atoms": "^1.0.0", "has-property-descriptors": "^1.0.2" } }, "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA=="],
|
||||
|
||||
"string.prototype.trimend": ["string.prototype.trimend@1.0.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ=="],
|
||||
|
||||
"string.prototype.trimstart": ["string.prototype.trimstart@1.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg=="],
|
||||
|
||||
"strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="],
|
||||
|
||||
"supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="],
|
||||
|
||||
"supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="],
|
||||
|
||||
"toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="],
|
||||
|
||||
"type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="],
|
||||
|
||||
"type-is": ["type-is@2.0.1", "", { "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw=="],
|
||||
|
||||
"typed-array-buffer": ["typed-array-buffer@1.0.3", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-typed-array": "^1.1.14" } }, "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw=="],
|
||||
|
||||
"typed-array-byte-length": ["typed-array-byte-length@1.0.3", "", { "dependencies": { "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.14" } }, "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg=="],
|
||||
|
||||
"typed-array-byte-offset": ["typed-array-byte-offset@1.0.4", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.15", "reflect.getprototypeof": "^1.0.9" } }, "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ=="],
|
||||
|
||||
"typed-array-length": ["typed-array-length@1.0.7", "", { "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "is-typed-array": "^1.1.13", "possible-typed-array-names": "^1.0.0", "reflect.getprototypeof": "^1.0.6" } }, "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg=="],
|
||||
|
||||
"unbox-primitive": ["unbox-primitive@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", "has-symbols": "^1.1.0", "which-boxed-primitive": "^1.1.1" } }, "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw=="],
|
||||
|
||||
"unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="],
|
||||
|
||||
"uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="],
|
||||
|
||||
"vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="],
|
||||
|
||||
"which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
|
||||
|
||||
"which-boxed-primitive": ["which-boxed-primitive@1.1.1", "", { "dependencies": { "is-bigint": "^1.1.0", "is-boolean-object": "^1.2.1", "is-number-object": "^1.1.1", "is-string": "^1.1.1", "is-symbol": "^1.1.1" } }, "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA=="],
|
||||
|
||||
"which-builtin-type": ["which-builtin-type@1.2.1", "", { "dependencies": { "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", "is-date-object": "^1.1.0", "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", "is-regex": "^1.2.1", "is-weakref": "^1.0.2", "isarray": "^2.0.5", "which-boxed-primitive": "^1.1.0", "which-collection": "^1.0.2", "which-typed-array": "^1.1.16" } }, "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q=="],
|
||||
|
||||
"which-collection": ["which-collection@1.0.2", "", { "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", "is-weakmap": "^2.0.2", "is-weakset": "^2.0.3" } }, "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw=="],
|
||||
|
||||
"which-typed-array": ["which-typed-array@1.1.19", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw=="],
|
||||
|
||||
"word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="],
|
||||
|
||||
"wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="],
|
||||
|
||||
"yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="],
|
||||
|
||||
"zod": ["zod@3.24.4", "", {}, "sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg=="],
|
||||
|
||||
"zod-to-json-schema": ["zod-to-json-schema@3.24.5", "", { "peerDependencies": { "zod": "^3.24.1" } }, "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g=="],
|
||||
|
||||
"@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="],
|
||||
|
||||
"@eslint/eslintrc/globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="],
|
||||
|
||||
"@eslint/json/@eslint/core": ["@eslint/core@0.12.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg=="],
|
||||
|
||||
"@humanfs/node/@humanwhocodes/retry": ["@humanwhocodes/retry@0.3.1", "", {}, "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA=="],
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,139 @@
|
||||
{
|
||||
"nodes": {
|
||||
"devenv": {
|
||||
"locked": {
|
||||
"dir": "src/modules",
|
||||
"lastModified": 1782860656,
|
||||
"narHash": "sha256-HiSNP0/eEhKGZBWC6kLZVN8I6j6AwVnI4gjeH25+/5k=",
|
||||
"owner": "cachix",
|
||||
"repo": "devenv",
|
||||
"rev": "3f6df48c00d8aa408f0440f2707662aa91a1f033",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"dir": "src/modules",
|
||||
"owner": "cachix",
|
||||
"repo": "devenv",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1767039857,
|
||||
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||
"owner": "NixOS",
|
||||
"repo": "flake-compat",
|
||||
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"git-hooks": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1781733627,
|
||||
"narHash": "sha256-U3yTuGBnmXvXoQI3qkpfEDsn9RovQPAjN7ndRco+3u0=",
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"rev": "3bbec39bc90eadfa031e6f3b77272f3f60803e39",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"git-hooks",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709087332,
|
||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1770073757,
|
||||
"narHash": "sha256-Vy+G+F+3E/Tl+GMNgiHl9Pah2DgShmIUBJXmbiQPHbI=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "47472570b1e607482890801aeaf29bfb749884f6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1781607440,
|
||||
"narHash": "sha256-rxO+uc/KFbSJp+pgyXRuAX6QlG9hJdnt0BXpEQRXY+U=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "3e41b24abd260e8f71dbe2f5737d24122f972158",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"inputs": {
|
||||
"nixpkgs-src": "nixpkgs-src"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1782132010,
|
||||
"narHash": "sha256-ZnAVHdVrotp80iIMm5CSR1fdxPlw7Uwmwxb+O/wsgZ8=",
|
||||
"owner": "cachix",
|
||||
"repo": "devenv-nixpkgs",
|
||||
"rev": "12866ae2dddbc0ab8b329915f8072bb9c75bde89",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"ref": "rolling",
|
||||
"repo": "devenv-nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"devenv": "devenv",
|
||||
"git-hooks": "git-hooks",
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
packages = [
|
||||
pkgs.git
|
||||
pkgs.bun
|
||||
pkgs.act
|
||||
];
|
||||
|
||||
languages = {
|
||||
python = {
|
||||
enable = true;
|
||||
uv = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
javascript.bun = {
|
||||
enable = true;
|
||||
install.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
# yaml-language-server: $schema=https://devenv.sh/devenv.schema.json
|
||||
inputs:
|
||||
nixpkgs:
|
||||
url: github:cachix/devenv-nixpkgs/rolling
|
||||
git-hooks:
|
||||
url: github:cachix/git-hooks.nix
|
||||
@@ -87,9 +87,9 @@ qthelp:
|
||||
@echo
|
||||
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
|
||||
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
|
||||
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/invenio-theme-tugraz.qhcp"
|
||||
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/invenio-theme-iform.qhcp"
|
||||
@echo "To view the help file:"
|
||||
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/invenio-theme-tugraz.qhc"
|
||||
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/invenio-theme-iform.qhc"
|
||||
|
||||
applehelp:
|
||||
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
|
||||
@@ -104,8 +104,8 @@ devhelp:
|
||||
@echo
|
||||
@echo "Build finished."
|
||||
@echo "To view the help file:"
|
||||
@echo "# mkdir -p $$HOME/.local/share/devhelp/invenio-theme-tugraz"
|
||||
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/invenio-theme-tugraz"
|
||||
@echo "# mkdir -p $$HOME/.local/share/devhelp/invenio-theme-iform"
|
||||
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/invenio-theme-iform"
|
||||
@echo "# devhelp"
|
||||
|
||||
epub:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
API Docs
|
||||
========
|
||||
|
||||
.. automodule:: invenio_theme_tugraz.ext
|
||||
.. automodule:: invenio_theme_iform.ext
|
||||
:members:
|
||||
|
||||
Views
|
||||
-----
|
||||
|
||||
.. automodule:: invenio_theme_tugraz.views
|
||||
.. automodule:: invenio_theme_iform.views
|
||||
:members:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
#
|
||||
# Copyright (C) 2020-2021 Graz University of Technology.
|
||||
#
|
||||
# invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||
# details.
|
||||
|
||||
"""Sphinx configuration."""
|
||||
|
||||
import os
|
||||
from invenio_theme_iform import __version__
|
||||
|
||||
# -- General configuration ------------------------------------------------
|
||||
|
||||
@@ -44,9 +44,9 @@ source_suffix = ".rst"
|
||||
master_doc = "index"
|
||||
|
||||
# General information about the project.
|
||||
project = u"invenio-theme-tugraz"
|
||||
copyright = u"2020, Graz University of Technology"
|
||||
author = u"Graz University of Technology"
|
||||
project = "invenio-theme-iform"
|
||||
copyright = "2025, I-Form"
|
||||
author = "I-Form"
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
@@ -54,24 +54,15 @@ author = u"Graz University of Technology"
|
||||
#
|
||||
# The short X.Y version.
|
||||
|
||||
# Get the version string. Cannot be done with import!
|
||||
g = {}
|
||||
with open(
|
||||
os.path.join(os.path.dirname(__file__), "..", "invenio_theme_tugraz", "version.py"),
|
||||
"rt",
|
||||
) as fp:
|
||||
exec(fp.read(), g)
|
||||
version = g["__version__"]
|
||||
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = version
|
||||
release = __version__
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
#
|
||||
# This is also used if you do content translation via gettext catalogs.
|
||||
# Usually you set "language" from the command line for these cases.
|
||||
language = None
|
||||
language = "en"
|
||||
|
||||
# There are two options for replacing |today|: either, you set today to some
|
||||
# non-false value, then it is used:
|
||||
@@ -115,15 +106,15 @@ todo_include_todos = False
|
||||
html_theme = "alabaster"
|
||||
|
||||
html_theme_options = {
|
||||
"description": "invenio module for TUGRAZ theme.",
|
||||
"github_user": "TU Graz",
|
||||
"github_repo": "invenio-theme-tugraz",
|
||||
"github_button": False,
|
||||
"github_banner": True,
|
||||
"description": "invenio module for I-Form theme.",
|
||||
"github_user": "Cian-H",
|
||||
"github_repo": "invenio-theme-iform",
|
||||
"github_button": True,
|
||||
"github_banner": False,
|
||||
"show_powered_by": False,
|
||||
"extra_nav_links": {
|
||||
"invenio-theme-tugraz@GitHub": "https://github.com/tu-graz-library/invenio-theme-tugraz",
|
||||
"invenio-theme-tugraz@PyPI": "https://pypi.python.org/pypi/invenio-theme-tugraz/",
|
||||
"invenio-theme-iform@GitHub": "https://github.com/Cian-H/invenio-theme-iform",
|
||||
"invenio-theme-iform@PyPI": "https://pypi.python.org/pypi/invenio-theme-iform/",
|
||||
},
|
||||
}
|
||||
|
||||
@@ -228,7 +219,7 @@ html_sidebars = {
|
||||
# html_search_scorer = 'scorer.js'
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = "invenio-theme-tugraz_namedoc"
|
||||
htmlhelp_basename = "invenio-theme-iform_namedoc"
|
||||
|
||||
# -- Options for LaTeX output ---------------------------------------------
|
||||
|
||||
@@ -249,9 +240,9 @@ latex_elements = {
|
||||
latex_documents = [
|
||||
(
|
||||
master_doc,
|
||||
"invenio-theme-tugraz.tex",
|
||||
u"invenio-theme-tugraz Documentation",
|
||||
u"Graz University of Technology",
|
||||
"invenio-theme-iform.tex",
|
||||
"invenio-theme-iform Documentation",
|
||||
"I-Form",
|
||||
"manual",
|
||||
),
|
||||
]
|
||||
@@ -284,8 +275,8 @@ latex_documents = [
|
||||
man_pages = [
|
||||
(
|
||||
master_doc,
|
||||
"invenio-theme-tugraz",
|
||||
u"invenio-theme-tugraz Documentation",
|
||||
"invenio-theme-iform",
|
||||
"invenio-theme-iform Documentation",
|
||||
[author],
|
||||
1,
|
||||
)
|
||||
@@ -303,11 +294,11 @@ man_pages = [
|
||||
texinfo_documents = [
|
||||
(
|
||||
master_doc,
|
||||
"invenio-theme-tugraz",
|
||||
u"invenio-theme-tugraz Documentation",
|
||||
"invenio-theme-iform",
|
||||
"invenio-theme-iform Documentation",
|
||||
author,
|
||||
"invenio-theme-tugraz",
|
||||
"invenio module for TUGRAZ theme.",
|
||||
"invenio-theme-iform",
|
||||
"invenio module for I-Form theme.",
|
||||
"Miscellaneous",
|
||||
),
|
||||
]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
@@ -9,5 +9,5 @@
|
||||
Configuration
|
||||
=============
|
||||
|
||||
.. automodule:: invenio_theme_tugraz.config
|
||||
.. automodule:: invenio_theme_iform.config
|
||||
:members:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
@@ -12,7 +12,7 @@ User's Guide
|
||||
------------
|
||||
|
||||
This part of the documentation will show you how to get started in using
|
||||
invenio-theme-tugraz.
|
||||
invenio-theme-iform.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
|
||||
@@ -127,9 +127,9 @@ if "%1" == "qthelp" (
|
||||
echo.
|
||||
echo.Build finished; now you can run "qcollectiongenerator" with the ^
|
||||
.qhcp project file in %BUILDDIR%/qthelp, like this:
|
||||
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\invenio-theme-tugraz.qhcp
|
||||
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\invenio-theme-iform.qhcp
|
||||
echo.To view the help file:
|
||||
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\invenio-theme-tugraz.ghc
|
||||
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\invenio-theme-iform.ghc
|
||||
goto end
|
||||
)
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
-e .[docs,tests]
|
||||
@@ -1,7 +1,7 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
@@ -9,4 +9,4 @@
|
||||
Usage
|
||||
=====
|
||||
|
||||
.. automodule:: invenio_theme_tugraz
|
||||
.. automodule:: invenio_theme_iform
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
import js from "@eslint/js";
|
||||
import globals from "globals";
|
||||
import pluginReact from "eslint-plugin-react";
|
||||
import json from "@eslint/json";
|
||||
import css from "@eslint/css";
|
||||
import { defineConfig } from "eslint/config";
|
||||
|
||||
export default defineConfig([
|
||||
{ files: ["**/*.{js,mjs,cjs,jsx}"], plugins: { js }, extends: ["js/recommended"] },
|
||||
{ files: ["**/*.{js,mjs,cjs,jsx}"], languageOptions: { globals: globals.browser } },
|
||||
pluginReact.configs.flat.recommended,
|
||||
{
|
||||
files: ["**/*.json"],
|
||||
plugins: { json },
|
||||
language: "json/json",
|
||||
extends: ["json/recommended"],
|
||||
},
|
||||
{
|
||||
files: ["**/*.jsonc"],
|
||||
plugins: { json },
|
||||
language: "json/jsonc",
|
||||
extends: ["json/recommended"],
|
||||
},
|
||||
{
|
||||
files: ["**/*.json5"],
|
||||
plugins: { json },
|
||||
language: "json/json5",
|
||||
extends: ["json/recommended"],
|
||||
},
|
||||
{ files: ["**/*.css"], plugins: { css }, language: "css/css", extends: ["css/recommended"] },
|
||||
{ settings: { react: { version: "detect" } } },
|
||||
]);
|
||||
@@ -0,0 +1,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (C) 2025 I-Form Advanced Manufacturing Research Centre.
|
||||
#
|
||||
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||
# details.
|
||||
|
||||
"""Metadata for this python module."""
|
||||
|
||||
__version__ = "2026.8.14"
|
||||
@@ -0,0 +1,14 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (C) 2020-2022 Graz University of Technology.
|
||||
#
|
||||
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||
# details.
|
||||
|
||||
"""invenio module for I-Form theme."""
|
||||
|
||||
from .__about__ import __version__
|
||||
from .ext import InvenioThemeIform
|
||||
|
||||
__all__ = ("__version__", "InvenioThemeIform")
|
||||
@@ -0,0 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (C) 2024 I-Form.
|
||||
#
|
||||
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||
# details.
|
||||
|
||||
"""Administration views."""
|
||||
@@ -0,0 +1,219 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (C) 2024 I-Form.
|
||||
#
|
||||
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||
# details.
|
||||
|
||||
"""I-Form administration views."""
|
||||
|
||||
import json
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
from flask import current_app, flash, redirect, request, url_for
|
||||
from invenio_accounts.models import Role, User
|
||||
from invenio_accounts.proxies import current_accounts
|
||||
from invenio_administration.views.base import AdminView
|
||||
from invenio_db import db
|
||||
from invenio_i18n import lazy_gettext as _
|
||||
|
||||
|
||||
def get_site_settings_path():
|
||||
"""Get the path to site_settings.json."""
|
||||
app_data_dir = os.path.join(current_app.instance_path, "app_data")
|
||||
os.makedirs(app_data_dir, exist_ok=True)
|
||||
return os.path.join(app_data_dir, "site_settings.json")
|
||||
|
||||
|
||||
def get_site_settings():
|
||||
"""Load site settings from JSON file."""
|
||||
path = get_site_settings_path()
|
||||
if not os.path.exists(path):
|
||||
return {"registration_enabled": True}
|
||||
try:
|
||||
with open(path, "r") as f:
|
||||
return json.load(f)
|
||||
except Exception:
|
||||
return {"registration_enabled": True}
|
||||
|
||||
|
||||
def set_site_settings(settings):
|
||||
"""Save site settings to JSON file."""
|
||||
path = get_site_settings_path()
|
||||
with open(path, "w") as f:
|
||||
json.dump(settings, f, indent=2)
|
||||
|
||||
|
||||
class RoleManagementView(AdminView):
|
||||
"""Admin view for managing user roles."""
|
||||
|
||||
name = "roles"
|
||||
category = "User management"
|
||||
template = "invenio_theme_iform/administration/roles.html"
|
||||
url = "/roles"
|
||||
menu_label = _("Role Assignment")
|
||||
icon = "users"
|
||||
|
||||
def get(self):
|
||||
"""Render the role management template."""
|
||||
roles = Role.query.order_by(Role.name).all()
|
||||
selected_role_id = request.args.get("role_id")
|
||||
|
||||
users = []
|
||||
selected_role = None
|
||||
if selected_role_id:
|
||||
selected_role = Role.query.get(selected_role_id)
|
||||
if selected_role:
|
||||
users = User.query.order_by(User.email).all()
|
||||
|
||||
return self.render(
|
||||
roles=roles,
|
||||
selected_role=selected_role,
|
||||
users=users,
|
||||
)
|
||||
|
||||
def post(self):
|
||||
"""Handle role assignment/revocation."""
|
||||
user_id = request.form.get("user_id")
|
||||
role_id = request.form.get("role_id")
|
||||
action = request.form.get("action")
|
||||
|
||||
if not (user_id and role_id and action):
|
||||
flash(_("Missing required fields."), "error")
|
||||
return redirect(url_for("administration.roles", role_id=role_id))
|
||||
|
||||
try:
|
||||
user = User.query.get(int(user_id))
|
||||
except ValueError:
|
||||
user = None
|
||||
|
||||
role = Role.query.get(role_id)
|
||||
|
||||
if not user or not role:
|
||||
flash(_("User or role not found."), "error")
|
||||
return redirect(url_for("administration.roles", role_id=role_id))
|
||||
|
||||
if action == "enable":
|
||||
if role not in user.roles:
|
||||
current_accounts.datastore.add_role_to_user(user, role)
|
||||
flash(
|
||||
_("Role {role} enabled for {email}.").format(
|
||||
role=role.name, email=user.email
|
||||
),
|
||||
"success",
|
||||
)
|
||||
elif action == "disable":
|
||||
if role in user.roles:
|
||||
current_accounts.datastore.remove_role_from_user(user, role)
|
||||
flash(
|
||||
_("Role {role} disabled for {email}.").format(
|
||||
role=role.name, email=user.email
|
||||
),
|
||||
"success",
|
||||
)
|
||||
|
||||
db.session.commit()
|
||||
return redirect(url_for("administration.roles", role_id=role_id))
|
||||
|
||||
|
||||
class RegistrationSettingsView(AdminView):
|
||||
"""Admin view for controlling site registration settings."""
|
||||
|
||||
name = "registration-settings"
|
||||
category = "Site Settings"
|
||||
template = "invenio_theme_iform/administration/registration_settings.html"
|
||||
url = "/registration-settings"
|
||||
menu_label = _("Registration Settings")
|
||||
icon = "setting"
|
||||
|
||||
def get(self):
|
||||
"""Render registration settings page."""
|
||||
settings = get_site_settings()
|
||||
return self.render(
|
||||
registration_enabled=settings.get("registration_enabled", True)
|
||||
)
|
||||
|
||||
def post(self):
|
||||
"""Handle registration settings update."""
|
||||
enabled = request.form.get("registration_enabled") == "true"
|
||||
settings = get_site_settings()
|
||||
settings["registration_enabled"] = enabled
|
||||
set_site_settings(settings)
|
||||
|
||||
status_str = _("enabled") if enabled else _("disabled")
|
||||
flash(
|
||||
_("Public user registration has been {status}.").format(
|
||||
status=status_str
|
||||
),
|
||||
"success",
|
||||
)
|
||||
return redirect(url_for("administration.registration-settings"))
|
||||
|
||||
|
||||
class UserCreateView(AdminView):
|
||||
"""Admin view for creating users."""
|
||||
|
||||
name = "create-user"
|
||||
category = "User management"
|
||||
template = "invenio_theme_iform/administration/user_create.html"
|
||||
url = "/create-user"
|
||||
menu_label = _("Create User")
|
||||
icon = "user plus"
|
||||
|
||||
def get(self):
|
||||
"""Render user creation page."""
|
||||
return self.render()
|
||||
|
||||
def post(self):
|
||||
"""Handle manual user creation."""
|
||||
from flask_security.utils import hash_password
|
||||
from invenio_access.permissions import system_identity
|
||||
from invenio_users_resources.proxies import current_users_service
|
||||
|
||||
email = request.form.get("email", "").strip()
|
||||
password = request.form.get("password", "").strip()
|
||||
confirm_email = request.form.get("confirm_email") == "true"
|
||||
|
||||
if not email or not password:
|
||||
flash(_("Email and Password are required."), "error")
|
||||
return redirect(url_for("administration.create-user"))
|
||||
|
||||
if User.query.filter_by(email=email).first():
|
||||
flash(_("A user with this email already exists."), "error")
|
||||
return redirect(url_for("administration.create-user"))
|
||||
|
||||
try:
|
||||
user_kwargs = {
|
||||
"email": email,
|
||||
"password": hash_password(password),
|
||||
"active": True,
|
||||
}
|
||||
if confirm_email:
|
||||
user_kwargs["confirmed_at"] = datetime.utcnow()
|
||||
|
||||
user = current_accounts.datastore.create_user(**user_kwargs)
|
||||
db.session.commit()
|
||||
|
||||
# Index the newly created user in search engine
|
||||
try:
|
||||
from invenio_search import current_search_client
|
||||
current_users_service.reindex(system_identity, uids=[user.id])
|
||||
current_users_service.indexer.process_bulk_queue()
|
||||
current_search_client.indices.refresh(index="*")
|
||||
except Exception as ie:
|
||||
current_app.logger.warning("Failed to index user %s: %s", user.id, str(ie))
|
||||
|
||||
flash(
|
||||
_("User {email} created successfully.").format(email=email),
|
||||
"success",
|
||||
)
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
flash(
|
||||
_("Failed to create user: {error}").format(error=str(e)),
|
||||
"error",
|
||||
)
|
||||
|
||||
return redirect(url_for("administration.create-user"))
|
||||
@@ -0,0 +1,98 @@
|
||||
/*
|
||||
Copyright (C) 2020-2023 Graz University of Technology.
|
||||
Copyright (C) 2023-2026 Cian-H/iform-invenio (I-Form).
|
||||
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
*/
|
||||
|
||||
import $ from "jquery";
|
||||
import "semantic-ui-css";
|
||||
import { MultipleOptionsSearchBar } from "@js/invenio_search_ui/components";
|
||||
import { i18next } from "@translations/invenio_app_rdm/i18next";
|
||||
import ReactDOM from "react-dom";
|
||||
import React from "react";
|
||||
|
||||
// called on document ready
|
||||
$(function () {
|
||||
syncLogoHover();
|
||||
});
|
||||
// used for sticky test instance notification
|
||||
$(".ui.sticky.test-instance").sticky({
|
||||
context: "body",
|
||||
});
|
||||
|
||||
export function toggleVisibility(id) {
|
||||
var element = document.getElementById(id);
|
||||
var isHided = element.style.display === "none";
|
||||
|
||||
element.style.display = isHided ? "block" : "none";
|
||||
}
|
||||
|
||||
window.toggleVisibility = toggleVisibility;
|
||||
|
||||
const headerSearchbar = document.getElementById("header-search-bar");
|
||||
const searchBarOptions = JSON.parse(headerSearchbar.dataset.options);
|
||||
|
||||
// Quick upload dropdown
|
||||
$("#quick-upload-dropdown.ui.dropdown").dropdown({
|
||||
showOnFocus: false,
|
||||
selectOnKeydown: false,
|
||||
action: (text, value, element) => {
|
||||
// needed to trigger navigation on keyboard interaction
|
||||
let path = element.attr("href");
|
||||
window.location.pathname = path;
|
||||
},
|
||||
onShow: () => {
|
||||
$("#quick-upload-dropdown-btn").attr("aria-expanded", true);
|
||||
},
|
||||
onHide: () => {
|
||||
$("#quick-upload-dropdown-btn").attr("aria-expanded", false);
|
||||
},
|
||||
});
|
||||
|
||||
// Synchronises the hover states of the subcomponents of the logo
|
||||
export function syncLogoHover() {
|
||||
const logoGrad = document.getElementById("int-header-logo-grad");
|
||||
const logoText = document.getElementById("int-header-logo-text");
|
||||
|
||||
const originalFillGrad = logoGrad.getAttribute("fill");
|
||||
const originalColorGrad = logoGrad.getAttribute("color");
|
||||
const originalFillText = logoText.getAttribute("fill");
|
||||
const originalColorText = logoText.getAttribute("color");
|
||||
|
||||
logoGrad.addEventListener("mouseover", () => {
|
||||
logoText.setAttribute("fill", "@primaryLinkHoverBackground");
|
||||
logoText.setAttribute("color", "@primaryLinkHoverBackground");
|
||||
});
|
||||
logoGrad.addEventListener("mouseout", () => {
|
||||
logoText.setAttribute("fill", originalFillText);
|
||||
logoText.setAttribute("color", originalColorText);
|
||||
});
|
||||
|
||||
logoText.addEventListener("mouseover", () => {
|
||||
logoGrad.setAttribute("fill", "@primaryLinkHoverBackground");
|
||||
logoGrad.setAttribute("color", "@primaryLinkHoverBackground");
|
||||
});
|
||||
logoText.addEventListener("mouseout", () => {
|
||||
logoGrad.setAttribute("fill", originalFillGrad);
|
||||
logoGrad.setAttribute("color", originalColorGrad);
|
||||
});
|
||||
}
|
||||
|
||||
window.syncLogoHover = syncLogoHover;
|
||||
|
||||
const HeaderSearchBar = () => {
|
||||
return (
|
||||
<MultipleOptionsSearchBar
|
||||
options={searchBarOptions}
|
||||
placeholder={i18next.t("Search records...")}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
ReactDOM.render(
|
||||
<HeaderSearchBar />,
|
||||
headerSearchbar,
|
||||
);
|
||||
@@ -0,0 +1,32 @@
|
||||
// Copyright (C) 2025-2026 Cian-H/iform-invenio (I-Form).
|
||||
//
|
||||
// invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||
// under the terms of the MIT License; see LICENSE file for more details.
|
||||
|
||||
import $ from "jquery";
|
||||
|
||||
async function generateForm() {
|
||||
// get email from `/api/me`
|
||||
let email = "???";
|
||||
const response = await fetch("/api/me");
|
||||
if (response.ok) {
|
||||
const json = await response.json();
|
||||
email = json?.email || "???";
|
||||
}
|
||||
|
||||
// show message
|
||||
$("#anchor-unlock-form").html(
|
||||
`<div class="ui warning message">
|
||||
<div class="header">Account Unlocking</div>
|
||||
<p>Please contact an administrator to request unlocking for your account (${email}).</p>
|
||||
</div>`
|
||||
);
|
||||
}
|
||||
|
||||
$(function () {
|
||||
// called when DOM is ready
|
||||
const generateFormElement = document.getElementById("generate-unlock-form");
|
||||
if (generateFormElement) {
|
||||
generateFormElement.onclick = generateForm;
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,165 @@
|
||||
/*
|
||||
* Copyright (C) 2020 TUGRAZ.
|
||||
* Copyright (C) 2020 Nikita Lvov.
|
||||
*
|
||||
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the MIT License; see LICENSE file for more details.
|
||||
*/
|
||||
|
||||
.cover-page {
|
||||
//text-align: center;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
#login-iform-logo {
|
||||
& g {
|
||||
fill: @iformBlue;
|
||||
}
|
||||
}
|
||||
|
||||
#login-tug-logo:hover {
|
||||
& g {
|
||||
fill: @iformBlack;
|
||||
}
|
||||
}
|
||||
|
||||
.accounts-link {
|
||||
margin: 5%;
|
||||
color: @primaryLink;
|
||||
border: 1px solid @primaryLink;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.accounts-link :hover {
|
||||
font-size: smaller !important;
|
||||
color: @primaryLink;
|
||||
background-color: @primaryLinkHoverBackground !important;
|
||||
}
|
||||
|
||||
.tu-button-style button {
|
||||
cursor: pointer;
|
||||
border: 1px solid @primaryButton;
|
||||
background-color: transparent;
|
||||
height: 29px;
|
||||
color: @primaryButton;
|
||||
font-family: "Source Sans Pro";
|
||||
font-weight: 300;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.tu-button-style button:hover {
|
||||
cursor: pointer;
|
||||
color: @primaryButton;
|
||||
background-color: @primaryButtonHoverBackground !important;
|
||||
}
|
||||
|
||||
.form-accounts {
|
||||
margin: 15%;
|
||||
text-align: left !important;
|
||||
|
||||
& i {
|
||||
color: @primaryFormAccounts !important;
|
||||
}
|
||||
|
||||
& label {
|
||||
display: flex !important;
|
||||
font-weight: 300 !important;
|
||||
color: @primaryFormAccounts !important;
|
||||
}
|
||||
|
||||
& input {
|
||||
border: 0px none !important;
|
||||
padding: 0px !important;
|
||||
border-bottom: 1px solid @primaryFormAccounts !important;
|
||||
background-color: transparent !important;
|
||||
color: @primaryFormAccounts !important;
|
||||
border-radius: 0 !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
& input::placeholder {
|
||||
opacity: 1 !important;
|
||||
color: @formAccountsInputPlaceholder !important;
|
||||
}
|
||||
|
||||
& th {
|
||||
display: block;
|
||||
}
|
||||
|
||||
& td {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
.field > input::selection {
|
||||
background: @fieldInputSelectionBackground;
|
||||
}
|
||||
|
||||
.accounts-header {
|
||||
font-weight: 300 !important;
|
||||
}
|
||||
|
||||
/***
|
||||
login and sign-up pages form background color
|
||||
*/
|
||||
.sign-form {
|
||||
background-color: @signInBackground !important;
|
||||
padding: 0 !important;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.tug-button-login {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
fill: @iformBlue;
|
||||
}
|
||||
|
||||
.tug-button-login :hover {
|
||||
fill: @primaryButtonHoverBackground;
|
||||
}
|
||||
|
||||
.login-page-button {
|
||||
margin: 5%;
|
||||
text-align: center !important;
|
||||
|
||||
& a {
|
||||
padding: 5px;
|
||||
text-decoration: underline !important;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
& a:hover {
|
||||
background-color: @primaryLinkHoverBackground;
|
||||
color: @primaryLink !important;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
.login-page-button-white {
|
||||
color: @primaryButton !important;
|
||||
font-family: "Source Sans Pro";
|
||||
font-size: initial;
|
||||
}
|
||||
|
||||
.login-page-button-black {
|
||||
color: @primaryButtonInverted !important;
|
||||
font-family: "Source Sans Pro";
|
||||
font-size: initial;
|
||||
}
|
||||
|
||||
/***
|
||||
allowing to switch columns on the sign-up page on the small screen
|
||||
*/
|
||||
.switch-grid {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
#switch_left {
|
||||
order: 2;
|
||||
}
|
||||
|
||||
#switch_right {
|
||||
order: 1;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* Copyright (C) 2022 Graz University of Technology.
|
||||
*
|
||||
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the MIT License; see LICENSE file for more details.
|
||||
*/
|
||||
|
||||
.ui.container.page-subheader-outer {
|
||||
background-color: unset;
|
||||
}
|
||||
|
||||
.ui.fluid.container {
|
||||
width: fit-content;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Copyright (C) 2021 Graz University of Technology.
|
||||
*
|
||||
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the MIT License; see LICENSE file for more details.
|
||||
*/
|
||||
|
||||
// deposit form segment styling
|
||||
.ui.inverted.brand.segment {
|
||||
background-color: @greyLight !important;
|
||||
color: @iformBlack !important;
|
||||
|
||||
label {
|
||||
color: @iformBlack;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2023 Graz University of Technology.
|
||||
* Copyright (C) 2025 I-Form Advanced Manufacturing Research Centre.
|
||||
*
|
||||
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the MIT License; see LICENSE file for more details.
|
||||
*/
|
||||
|
||||
#footer {
|
||||
color: @footerGrey;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
|
||||
&.footer-bottom {
|
||||
background-color: @footerBottomBackground;
|
||||
padding-top: 15px;
|
||||
padding-bottom: 15px;
|
||||
font-size: 16px;
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: @footerGrey;
|
||||
|
||||
// :focus-visible activates on keyboard only
|
||||
&:hover,
|
||||
&:focus:focus-visible {
|
||||
color: @primaryLink;
|
||||
background-color: @primaryLinkHoverBackground;
|
||||
|
||||
i.icon.download {
|
||||
color: @iformBlue;
|
||||
}
|
||||
}
|
||||
|
||||
// remove blue focus outline if clicked with mouse
|
||||
&:focus:not(:focus-visible) {
|
||||
outline-style: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
div .logos {
|
||||
--invenio-logo-glass-color: @invenioLogoGlassColor;
|
||||
--ri-logo-color: @riLogoColor;
|
||||
|
||||
a:hover {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
#footer div .logos {
|
||||
--invenio-logo-glass-color: #ffffff;
|
||||
--ri-logo-color: @riLogoColorDark;
|
||||
}
|
||||
}
|
||||
|
||||
.bodytext {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.spacer {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.spacer-long {
|
||||
margin-top: 30px;
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2021 Graz University of Technology.
|
||||
*
|
||||
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the MIT License; see LICENSE file for more details.
|
||||
*/
|
||||
|
||||
h4 {
|
||||
display: block;
|
||||
margin-block-start: 0.33em;
|
||||
margin-block-end: 0.33em;
|
||||
margin-inline-start: 0px;
|
||||
margin-inline-end: 0px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-block-start: 0.83em;
|
||||
margin-block-end: 0.83em;
|
||||
margin-inline-start: 0px;
|
||||
margin-inline-end: 0px;
|
||||
}
|
||||
|
||||
.ui.blue.labels .label,
|
||||
.ui.blue.label {
|
||||
color: @greyDark !important;
|
||||
background-color: @recordVersionBackground !important;
|
||||
border-color: @recordVersionBackground !important;
|
||||
}
|
||||
|
||||
.random-records-frontpage article {
|
||||
border-bottom: 1px solid @randomRecordsFrontpageArticle;
|
||||
margin-bottom: 1rem;
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
|
||||
.random-records-frontpage .more {
|
||||
margin-top: 20px !important;
|
||||
margin-bottom: 35px !important;
|
||||
}
|
||||
|
||||
.random-records-frontpage h2 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.badges {
|
||||
float: right;
|
||||
}
|
||||
|
||||
/*Zammad form**/
|
||||
.zammad-form {
|
||||
h2 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
label {
|
||||
color: @iformBlack;
|
||||
}
|
||||
|
||||
input.form-control {
|
||||
height: 30px;
|
||||
// width: auto;
|
||||
border-radius: 0;
|
||||
font-family: "Source Sans Pro";
|
||||
background: @primaryLinkBackgroundInverted;
|
||||
border: 1px solid rgba(34, 36, 38, 0.15);
|
||||
}
|
||||
|
||||
textarea {
|
||||
border: 1px solid rgba(34, 36, 38, 0.15);
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
width: 100% !important;
|
||||
cursor: pointer;
|
||||
font-family: "Source Sans Pro";
|
||||
min-height: 1em;
|
||||
line-height: 1em;
|
||||
padding: 0.78571429em 1.5em 0.78571429em;
|
||||
background: @greyLight none;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
background: @primaryLinkHoverBackground;
|
||||
color: @primaryButton;
|
||||
font-size: 1rem;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
:focus {
|
||||
outline: thin;
|
||||
outline-style: solid;
|
||||
outline-color: @outlineColor;
|
||||
}
|
||||
@@ -0,0 +1,294 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2021 Graz University of Technology.
|
||||
* Copyright (C) 2025 I-Form Advanced Manufacturing Research Centre.
|
||||
*
|
||||
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the MIT License; see LICENSE file for more details.
|
||||
*/
|
||||
|
||||
#int-menu-q-home-icon {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
#home-polyline {
|
||||
fill: @iformDarkGreen;
|
||||
}
|
||||
|
||||
/*****logo section******/
|
||||
.affiliation-logo {
|
||||
vertical-align: middle;
|
||||
white-space: nowrap;
|
||||
|
||||
& a {
|
||||
fill: @iformBlue;
|
||||
}
|
||||
}
|
||||
|
||||
.affiliation-logo :hover {
|
||||
text-decoration: none;
|
||||
fill: @primaryLinkHoverBackground;
|
||||
color: @primaryLinkHoverBackground;
|
||||
}
|
||||
|
||||
.affiliation {
|
||||
background-color: @primaryLink;
|
||||
display: table;
|
||||
margin: 0 auto 80px;
|
||||
max-width: 1060px;
|
||||
width: 100%;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.affiliation-text {
|
||||
display: table-cell;
|
||||
font-size: 12px;
|
||||
line-height: 17px;
|
||||
letter-spacing: 2px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.affiliation-logo-claim {
|
||||
display: inline-block;
|
||||
font-size: 12px;
|
||||
letter-spacing: 2px;
|
||||
line-height: 17px;
|
||||
padding: 0 17px 0 0;
|
||||
text-align: right;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
/*****END logo section******/
|
||||
|
||||
.short-menu {
|
||||
display: table;
|
||||
height: 49px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.short-menu-left {
|
||||
border-right: 1px solid black;
|
||||
display: table-cell;
|
||||
text-align: right;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.short-menu-right {
|
||||
display: table-cell;
|
||||
width: 50%;
|
||||
color: @primaryLinkInverted;
|
||||
}
|
||||
|
||||
.short-menu-right :hover {
|
||||
background-color: @primaryLinkHoverBackground;
|
||||
color: @primaryLink;
|
||||
}
|
||||
|
||||
.short-menu-right-button {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
margin: 12px 0 6px 9px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.short-menu-right-button a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.short-menu-left-lang {
|
||||
display: inline-block;
|
||||
margin-right: 10px;
|
||||
font-size: 17px !important;
|
||||
font-weight: 300;
|
||||
|
||||
& a {
|
||||
padding: 5px 8px;
|
||||
background-color: transparent;
|
||||
color: #000 !important;
|
||||
text-decoration: none;
|
||||
border-radius: 3px;
|
||||
transition: background-color 0.2s ease, color 0.2s ease;
|
||||
|
||||
&:hover {
|
||||
background-color: #000 !important;
|
||||
color: #fff !important;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
&.active {
|
||||
background-color: #e0e1e2 !important;
|
||||
color: #000 !important;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.search-icon-header {
|
||||
display: inline-block;
|
||||
|
||||
& a {
|
||||
background-color: transparent;
|
||||
padding: 5px;
|
||||
text-decoration: none;
|
||||
|
||||
& svg {
|
||||
& g {
|
||||
stroke-linejoin: round;
|
||||
stroke: @primaryLinkInverted;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 2;
|
||||
fill: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.search-icon-header:hover {
|
||||
& a {
|
||||
background-color: @primaryLinkHoverBackground;
|
||||
text-decoration: none;
|
||||
|
||||
& svg {
|
||||
& g {
|
||||
stroke: @primaryLink;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.short-menu-left-search {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
vertical-align: middle;
|
||||
margin: 12px 9px 6px 0;
|
||||
color: @primaryLinkInverted;
|
||||
}
|
||||
|
||||
.short-menu-right-main-menu {
|
||||
display: inline-block;
|
||||
margin-right: 3px;
|
||||
vertical-align: top;
|
||||
width: 21px;
|
||||
}
|
||||
|
||||
.short-menu-icon {
|
||||
vertical-align: top;
|
||||
width: 20px;
|
||||
height: 19px;
|
||||
}
|
||||
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/***********MAIN menu*************/
|
||||
|
||||
.main-menu-entry {
|
||||
text-align: center !important;
|
||||
|
||||
& a {
|
||||
font-size: 1.2rem;
|
||||
padding: 5px 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.main-menu-entry a:hover {
|
||||
background-color: @primaryLinkHoverBackground;
|
||||
color: @primaryLink;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.main-menu-entry-svg {
|
||||
padding-left: 0 !important;
|
||||
}
|
||||
|
||||
.main-menu-underline-line {
|
||||
border: 2px solid @greyLight !important;
|
||||
border-radius: 0;
|
||||
background-color: @greyLight;
|
||||
}
|
||||
|
||||
#margin-divider {
|
||||
margin-left: 155px;
|
||||
margin-right: 155px;
|
||||
}
|
||||
|
||||
.affiliation-text a:hover {
|
||||
background-color: @primaryLinkHoverBackground;
|
||||
color: @primaryLink;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.main-menu {
|
||||
border-bottom: 1px solid @primaryLinkInverted;
|
||||
box-sizing: border-box;
|
||||
height: 39px;
|
||||
margin-top: -1px;
|
||||
overflow: hidden;
|
||||
transition: height 0.3s linear 0s;
|
||||
}
|
||||
|
||||
.int-menu-q-open-icon {
|
||||
width: 14px;
|
||||
vertical-align: middle;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
/*********************Custom overrides**********************/
|
||||
/** Login with SAML**/
|
||||
.col a {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767.9px) {
|
||||
#int-header-logo-img {
|
||||
width: 200px;
|
||||
height: 75px;
|
||||
}
|
||||
|
||||
#main-logo {
|
||||
padding: 30px 0;
|
||||
text-align: center;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#repo-logo {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.affiliation-logo-claim {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.repo-img {
|
||||
margin-right: 5px;
|
||||
|
||||
&.repo-logo {
|
||||
height: 52px;
|
||||
}
|
||||
}
|
||||
|
||||
.inline-elements {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
span.home-inline {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.test-instance {
|
||||
text-align: center;
|
||||
background-color: @notificationBackground;
|
||||
border: solid @notificationBorder 1px;
|
||||
z-index: 100000;
|
||||
}
|
||||
|
||||
#skip-to-main {
|
||||
background-color: @primaryButton;
|
||||
|
||||
&:focus {
|
||||
background-color: @primaryButtonInverted;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2021 Graz University of Technology.
|
||||
*
|
||||
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the MIT License; see LICENSE file for more details.
|
||||
*/
|
||||
|
||||
.ui.inverted.header {
|
||||
color: @primaryLinkInverted;
|
||||
}
|
||||
|
||||
.login-page-button {
|
||||
margin: 5%;
|
||||
text-align: center !important;
|
||||
|
||||
& a {
|
||||
padding: 5px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
& a:hover {
|
||||
background-color: @primaryLinkHoverBackground;
|
||||
color: @primaryLink !important;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
.text-color {
|
||||
color: @primaryLinkInverted;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
#switch_left {
|
||||
order: 2;
|
||||
}
|
||||
|
||||
#switch_right {
|
||||
order: 1;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2021 Graz University of Technology.
|
||||
*
|
||||
* invenio-theme-tugraz is free software; you can redistribute it and/or modify it
|
||||
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the MIT License; see LICENSE file for more details.
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,198 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2021 Graz University of Technology.
|
||||
* Copyright (C) 2025 I-Form Advanced Manufacturing Research Centre.
|
||||
*
|
||||
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the MIT License; see LICENSE file for more details.
|
||||
*/
|
||||
|
||||
/***
|
||||
* Logos background frontpage.
|
||||
* from rgba(173, 206, 224, 0.52)
|
||||
* to #ffffff
|
||||
***/
|
||||
.section-content-light-bg {
|
||||
background-color: @primaryBackground;
|
||||
}
|
||||
|
||||
/***
|
||||
* section title.
|
||||
* from #0377cd
|
||||
* to #000000
|
||||
***/
|
||||
.section-title {
|
||||
color: @primaryText;
|
||||
}
|
||||
|
||||
/***
|
||||
* login background color
|
||||
* from : rgba(13,95,137,.8)
|
||||
* To #ffffff
|
||||
***/
|
||||
.cover-page {
|
||||
//text-align: center;
|
||||
background-color: @primaryBackground;
|
||||
}
|
||||
|
||||
/***
|
||||
* login & sigup page title
|
||||
* from : #0377cd
|
||||
* To #000000
|
||||
***/
|
||||
.panel-free-title {
|
||||
color: @primaryText;
|
||||
}
|
||||
|
||||
/***
|
||||
* anchor color
|
||||
* from : #ef4444
|
||||
* To @iformBlue
|
||||
***/
|
||||
a {
|
||||
color: @iformBlue;
|
||||
}
|
||||
|
||||
/***
|
||||
* force: the font changes
|
||||
***/
|
||||
*,
|
||||
html,
|
||||
body,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
pre,
|
||||
.ui.button,
|
||||
.ui.items,
|
||||
.ui.accordion .title:not(.ui),
|
||||
.ui.items>.item>.content>.header,
|
||||
.ui.modal>.header,
|
||||
.ui.menu,
|
||||
.ui.header,
|
||||
.ui.form input[type],
|
||||
.ui.form input[type]:focus {
|
||||
font-family: "Source Sans Pro";
|
||||
}
|
||||
|
||||
pre {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
/***
|
||||
* search.button
|
||||
***/
|
||||
/*.ui.button,*/
|
||||
.ui.search.button {
|
||||
background-color: @iformBlue;
|
||||
}
|
||||
|
||||
/***
|
||||
* accordion title
|
||||
***/
|
||||
.ui.accordion.styled {
|
||||
|
||||
.title,
|
||||
.title.active {
|
||||
background-color: @greyLight;
|
||||
color: rgba(0, 0, 0, 0.6);
|
||||
}
|
||||
}
|
||||
|
||||
/***
|
||||
* buttons hover and accordion hover
|
||||
***/
|
||||
.ui.button:hover,
|
||||
.ui.search.button:hover,
|
||||
.ui.accordion.styled .title:hover,
|
||||
.ui.accordion.styled .accordion .title:hover {
|
||||
background-color: @primaryButtonHoverBackground;
|
||||
color: @primaryButton;
|
||||
}
|
||||
|
||||
/***
|
||||
* force: remove corners from border
|
||||
***/
|
||||
.label-keyword,
|
||||
.ui.label,
|
||||
.ui.button,
|
||||
.ui.rdm-sidebar,
|
||||
.ui.menu,
|
||||
.ui.input>input,
|
||||
/* it seams redundant but it is not */
|
||||
.ui.segment,
|
||||
.ui.selection.dropdown,
|
||||
.ui.accordion.styled,
|
||||
.ui.card,
|
||||
.ui.cards>.card,
|
||||
.ui.basic.button,
|
||||
.ui.basic.buttons .button,
|
||||
.ui.action.input:not([class*="left action"])>.button:last-child,
|
||||
.ui.action.input:not([class*="left action"])>.buttons:last-child>.button,
|
||||
.ui.action.input:not([class*="left action"])>.dropdown:last-child,
|
||||
.ui.form input[type],
|
||||
.ui.form input[type]:focus {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
/***
|
||||
* force: rdm-side-bar same empty box as on the frontpage
|
||||
***/
|
||||
.ui.rdm-sidebar {
|
||||
background-color: unset;
|
||||
box-shadow: unset;
|
||||
}
|
||||
|
||||
/***
|
||||
* force: font weight: normal
|
||||
***/
|
||||
.ui.label {
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
// override access badges color
|
||||
.ui.label.access-status {
|
||||
&.open {
|
||||
background-color: @accessRightOpen;
|
||||
}
|
||||
|
||||
&.embargoed {
|
||||
background-color: @accessRightEmbargoed;
|
||||
}
|
||||
|
||||
&.metadata-only {
|
||||
background-color: @accessRightMetadata;
|
||||
}
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Source Sans Pro";
|
||||
src: url("./fonts/SourceSansPro/SourceSansPro-Regular.ttf") format("truetype");
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Source Sans Pro";
|
||||
src: url("./fonts/SourceSansPro/SourceSansPro-Italic.ttf") format("truetype");
|
||||
font-weight: 400;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/**
|
||||
* mainly for the overview. maybe this should be written more specific to apply
|
||||
* only for the overview use case.
|
||||
*/
|
||||
.ui.segment:first-child {
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.ui.equal.height .ui.segment {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.ui.flashed.message.manage {
|
||||
text-align: center;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* Copyright (C) 2020 Graz University of Technology
|
||||
*
|
||||
* invenio-theme-iform is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the MIT License; see LICENSE file for more details.
|
||||
*/
|
||||
|
||||
.top-bottom-padded {
|
||||
margin: unset;
|
||||
}
|
||||
|
||||
.label.label-keyword {
|
||||
font-size: 0.71428571rem;
|
||||
font-weight: 400;
|
||||
background-color: @labelKeywordBackground;
|
||||
border: unset;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2023 Graz University of Technology
|
||||
*
|
||||
* invenio-theme-iform is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the MIT License; see LICENSE file for more details.
|
||||
*/
|
||||
|
||||
.creators {
|
||||
margin: 0 0 1em;
|
||||
}
|
||||
|
||||
.creators span {
|
||||
margin-left: 2px;
|
||||
}
|
||||
|
||||
.creator:not(:last-child):after {
|
||||
color: @greyDark;
|
||||
content: ";";
|
||||
}
|
||||
|
||||
.creator {
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.identifiers {
|
||||
display: inline;
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2022 Graz University of Technology.
|
||||
* Copyright (C) 2025 I-Form Advanced Manufacturing Research Centre.
|
||||
*
|
||||
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the MIT License; see LICENSE file for more details.
|
||||
*/
|
||||
|
||||
@import "variables";
|
||||
@import "header";
|
||||
@import "footer";
|
||||
@import "overrides";
|
||||
@import "frontpage";
|
||||
@import "record";
|
||||
@import "search";
|
||||
@import "macros";
|
||||
@import "login";
|
||||
@import "deposit";
|
||||
@import "communities";
|
||||
|
||||
/***
|
||||
**TODO:
|
||||
** test overriding variables.
|
||||
***/
|
||||
|
||||
//@import "../invenio_app_rdm/theme";
|
||||
//@import "variables";
|
||||
|
||||
// used in various templates
|
||||
// add no hyperlink decoration
|
||||
.no-decoration {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
transition:
|
||||
background-color 0.15s ease 0s,
|
||||
color 0.15s ease 0s;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.nowrap-link {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.ui.label.schema {
|
||||
border: 1px solid #bfb5b5;
|
||||
}
|
||||
|
||||
.random-records-frontpage .grid .column {
|
||||
width: 380px !important;
|
||||
padding: 14px !important;
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2021 Graz University of Technology.
|
||||
* Copyright (C) 2025 I-Form Advanced Manufacturing Research Centre.
|
||||
*
|
||||
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the MIT License; see LICENSE file for more details.
|
||||
*/
|
||||
|
||||
/***
|
||||
**TODO:
|
||||
** test overriding variables.
|
||||
***/
|
||||
|
||||
//@import "../invenio_app_rdm/variables.less";
|
||||
//@navbar_background_image: unset;
|
||||
//@navbar_background_color: #FFFFFF;
|
||||
|
||||
// badge colors, accessibility
|
||||
@accessRight: #e9711c;
|
||||
@accessRightOpen: @accessRight;
|
||||
@accessRightRestricted: #fbbd08;
|
||||
@accessRightEmbargoed: #db2828;
|
||||
@accessRightClosed: @accessRightEmbargoed;
|
||||
@accessRightMetadata: #2185d0;
|
||||
|
||||
@schema: #17b3f3;
|
||||
|
||||
// primary colors of I-Form
|
||||
@iformBlack: #140826;
|
||||
@iformBlue: #060e9f;
|
||||
@iformLightGreen: #08e673;
|
||||
@iformDarkGreen: #069f4b;
|
||||
@iformCyan: #02e8f7;
|
||||
|
||||
// general
|
||||
@primaryBackground: #fff;
|
||||
@primaryText: #000;
|
||||
|
||||
// accent colors
|
||||
@greyDark: #777;
|
||||
@greyLight: #e0e1e2;
|
||||
@labelKeywordBackground: #e8e8e8;
|
||||
|
||||
// link and button colors
|
||||
@primaryLinkInverted: @primaryText;
|
||||
@primaryLinkBackgroundInverted: @primaryBackground;
|
||||
@primaryLink: @primaryBackground;
|
||||
@primaryLinkHoverBackground: @primaryText;
|
||||
@primaryButton: @primaryBackground;
|
||||
@primaryButtonHoverBackground: @primaryText;
|
||||
@primaryButtonInverted: @primaryText;
|
||||
|
||||
// account (signin, signup) specific
|
||||
@primaryFormAccounts: @primaryBackground;
|
||||
@formAccountsInputPlaceholder: silver;
|
||||
@fieldInputSelectionBackground: #50a2ce;
|
||||
@signInBackground: #245b78;
|
||||
|
||||
// footer specific
|
||||
@footerGrey: #5e5e5e;
|
||||
@footerBottomBackground: #f2f2f2;
|
||||
@invenioLogoGlassColor: #333333;
|
||||
@riLogoColor: #19261b;
|
||||
@riLogoColorDark: #decbe9;
|
||||
|
||||
// record specific
|
||||
@recordVersionBackground: #f2f2f2;
|
||||
@randomRecordsFrontpageArticle: #22242626;
|
||||
|
||||
// input
|
||||
@outlineColor: #85b7d9;
|
||||
|
||||
// notification
|
||||
@notificationBackground: #fffaf3;
|
||||
@notificationBorder: #e2d5c2;
|
||||
@@ -0,0 +1,128 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (C) 2020-2023 Graz University of Technology.
|
||||
#
|
||||
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||
# details.
|
||||
|
||||
"""invenio module for I-Form theme."""
|
||||
|
||||
from flask_babel import lazy_gettext as _
|
||||
|
||||
I18N_LANGUAGES = [
|
||||
("en", _("English")),
|
||||
("ga", _("Irish")),
|
||||
]
|
||||
|
||||
|
||||
INVENIO_THEME_IFORM_DEFAULT_VALUE = _("I-Form Repository")
|
||||
"""Default value for the application."""
|
||||
|
||||
INVENIO_THEME_IFORM_BASE_TEMPLATE = "invenio_theme_iform/base.html"
|
||||
"""I-Form Default base template"""
|
||||
|
||||
INVENIO_THEME_IFORM_ACCOUNT_BASE = "invenio_theme_iform/accounts/accounts_base.html"
|
||||
"""I-Form Default account base template"""
|
||||
|
||||
INVENIO_THEME_IFORM_ICON = "images/icon_use.png"
|
||||
"""icon used in login page"""
|
||||
|
||||
INVENIO_THEME_IFORM_LOGIN_IMG = "images/login_logo.png"
|
||||
"""I-Form Logo for forms"""
|
||||
|
||||
THEME_IFORM_CONTACT_FORM = False
|
||||
"""Enable/Disable Contact form."""
|
||||
|
||||
THEME_IFORM_PRODUCTION = False
|
||||
"""Production environment.
|
||||
|
||||
Can also be set as an environment variable in a .env file. Then the name
|
||||
has to be 'INVENIO_THEME_IFORM_PRODUCTION'.
|
||||
"""
|
||||
|
||||
THEME_IFORM_SUPPORT_EMAIL = ""
|
||||
"""Shown as contact-info on default error-page."""
|
||||
|
||||
# Invenio-theme
|
||||
# ============
|
||||
# See https://invenio-theme.readthedocs.io/en/latest/configuration.html
|
||||
#
|
||||
THEME_500_TEMPLATE = "invenio_theme_iform/default_error.html"
|
||||
"""Used for any internal server errors and uncaught exceptions."""
|
||||
|
||||
THEME_LOGO = "images/iform_logo.png"
|
||||
"""I-Form logo"""
|
||||
|
||||
THEME_FAVICON = "images/iform-favicon.ico"
|
||||
"""I-Form favicon"""
|
||||
|
||||
THEME_SEARCHBAR = False
|
||||
"""Enable or disable the header search bar."""
|
||||
|
||||
THEME_HEADER_TEMPLATE = "invenio_theme_iform/header.html"
|
||||
"""I-Form header template"""
|
||||
|
||||
THEME_FRONTPAGE = False
|
||||
"""Use default frontpage."""
|
||||
|
||||
THEME_HEADER_RECORDS_TEMPLATE = "invenio_theme_iform/accounts/header_records.html"
|
||||
"""Records management page header"""
|
||||
|
||||
THEME_HEADER_LOGIN_TEMPLATE = "invenio_theme_iform/accounts/header_login.html"
|
||||
"""login page header"""
|
||||
|
||||
THEME_FOOTER_TEMPLATE = "invenio_theme_iform/footer.html"
|
||||
"""footer template"""
|
||||
|
||||
THEME_FRONTPAGE_TITLE = _("I-Form Repository")
|
||||
"""Frontpage title."""
|
||||
|
||||
THEME_SITENAME = _("Repository")
|
||||
"""Site name."""
|
||||
|
||||
# Invenio-accounts
|
||||
# ============
|
||||
# See https://invenio-accounts.readthedocs.io/en/latest/configuration.html
|
||||
|
||||
# COVER_TEMPLATE = 'invenio_theme_iform/accounts/accounts_base.html'
|
||||
"""Cover page template for login and sign up pages."""
|
||||
|
||||
SECURITY_LOGIN_USER_TEMPLATE = "invenio_theme_iform/accounts/login_user.html"
|
||||
"""Login template"""
|
||||
|
||||
SECURITY_REGISTER_USER_TEMPLATE = "invenio_theme_iform/accounts/register_user.html"
|
||||
"""Sigup template"""
|
||||
|
||||
# Invenio-app-rdm
|
||||
# =============
|
||||
# See https://invenio-app-rdm.readthedocs.io/en/latest/configuration.html
|
||||
SEARCH_UI_HEADER_TEMPLATE = "invenio_theme_iform/header.html"
|
||||
"""Search page's header template."""
|
||||
|
||||
DEPOSITS_HEADER_TEMPLATE = "invenio_theme_iform/header.html"
|
||||
"""Deposits header page's template."""
|
||||
|
||||
|
||||
# Invenio-rdm-records
|
||||
# =============
|
||||
# See https://invenio-rdm-records.readthedocs.io/en/latest/configuration.html
|
||||
# Uncomment below to override records landingpage.
|
||||
# from invenio_rdm_records.config import RECORDS_UI_ENDPOINTS
|
||||
# RECORDS_UI_ENDPOINTS["recid"].update(
|
||||
# template="invenio_theme_iform/record_landing_page.html"
|
||||
# )
|
||||
"""override the default record landing page"""
|
||||
|
||||
# Invenio-search-ui
|
||||
# =============
|
||||
# See https://invenio-search-ui.readthedocs.io/en/latest/configuration.html
|
||||
# SEARCH_UI_SEARCH_TEMPLATE = "invenio_theme_iform/search.html"
|
||||
# """override the default search page"""
|
||||
|
||||
THEME_IFORM_ROUTES = {
|
||||
"index": "/",
|
||||
"comingsoon": "/comingsoon",
|
||||
"records-search": "/records/search",
|
||||
"overview": "/me/overview",
|
||||
}
|
||||
@@ -0,0 +1,129 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (C) 2020-2024 Graz University of Technology.
|
||||
#
|
||||
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||
# details.
|
||||
|
||||
"""invenio module for I-Form theme."""
|
||||
|
||||
from flask import g, has_request_context, request
|
||||
from flask_login import login_required
|
||||
|
||||
from . import config
|
||||
from .views import index, locked, require_iform_authenticated
|
||||
|
||||
|
||||
class InvenioThemeIform(object):
|
||||
"""invenio-theme-iform extension."""
|
||||
|
||||
def __init__(self, app=None):
|
||||
"""Extension initialization."""
|
||||
if app:
|
||||
self.init_app(app)
|
||||
|
||||
def init_app(self, app):
|
||||
"""Flask application initialization."""
|
||||
# add index route rule
|
||||
# https://flask.palletsprojects.com/en/1.1.x/api/#flask.Flask.add_url_rule
|
||||
app.add_url_rule("/", "index", index)
|
||||
self.init_config(app)
|
||||
|
||||
app.register_error_handler(423, locked)
|
||||
|
||||
@app.before_request
|
||||
def block_registration_if_disabled():
|
||||
if request.endpoint == "security.register":
|
||||
from flask import current_app, render_template
|
||||
from .administration.views import get_site_settings
|
||||
settings = get_site_settings()
|
||||
if not settings.get("registration_enabled", True):
|
||||
admin_email = (
|
||||
current_app.config.get("APP_RDM_ADMIN_EMAIL_RECIPIENT")
|
||||
or current_app.config.get("SUPPORT_EMAIL")
|
||||
or current_app.config.get("THEME_SUPPORT_EMAIL")
|
||||
or current_app.config.get("SECURITY_EMAIL_SENDER")
|
||||
or "info@repo.i-form.ie"
|
||||
)
|
||||
return (
|
||||
render_template(
|
||||
"invenio_theme_iform/accounts/registration_disabled.html",
|
||||
admin_email=admin_email,
|
||||
),
|
||||
403,
|
||||
)
|
||||
|
||||
app.extensions["invenio-theme-iform"] = self
|
||||
|
||||
@app.context_processor
|
||||
def inject_site_settings():
|
||||
from .administration.views import get_site_settings
|
||||
settings = get_site_settings()
|
||||
return dict(registration_enabled=settings.get("registration_enabled", True))
|
||||
|
||||
def init_config(self, app):
|
||||
"""Initialize configuration."""
|
||||
for k in dir(config):
|
||||
if k.startswith("INVENIO_THEME_IFORM_") or k.startswith("THEME_IFORM_"):
|
||||
app.config.setdefault(k, getattr(config, k))
|
||||
|
||||
|
||||
def finalize_app(app):
|
||||
"""Finalize app."""
|
||||
modify_user_dashboard(app)
|
||||
guard_view_functions(app)
|
||||
|
||||
|
||||
def create_quick_upload_submenu(app):
|
||||
"""Create a submenu for the quick-upload menu."""
|
||||
root_menu = app.extensions["menu"].root_node
|
||||
|
||||
quick_upload_submenu = root_menu.submenu("quick_upload")
|
||||
quick_upload_submenu._text = "Quick upload"
|
||||
quick_upload_submenu._order = 1
|
||||
quick_upload_submenu.register("records.upload", "Upload Research Data")
|
||||
|
||||
|
||||
def modify_user_dashboard(app):
|
||||
"""Modify user dashboard."""
|
||||
root_menu = app.extensions["menu"].root_node
|
||||
|
||||
user_dashboard_menu = root_menu.submenu("dashboard")
|
||||
user_dashboard_menu.submenu("overview").register(
|
||||
"invenio_theme_iform.overview",
|
||||
text="Overview",
|
||||
order=0,
|
||||
)
|
||||
|
||||
root_menu.submenu("actions.deposit").register(
|
||||
"invenio_theme_iform.overview",
|
||||
"My dashboard",
|
||||
order=1,
|
||||
)
|
||||
|
||||
|
||||
def guard_view_functions(app):
|
||||
"""Guard view-functions against unauthenticated access."""
|
||||
endpoints_to_guard = [
|
||||
"invenio_app_rdm_users.communities",
|
||||
"invenio_app_rdm_users.requests",
|
||||
"invenio_app_rdm_users.uploads",
|
||||
]
|
||||
|
||||
for endpoint in endpoints_to_guard:
|
||||
view_func = app.view_functions.get(endpoint)
|
||||
if not view_func:
|
||||
continue
|
||||
|
||||
# decorate view-func
|
||||
# same as if view-func were defined with:
|
||||
# @login_required
|
||||
# @require_iform_authenticated_user
|
||||
view_func = login_required(
|
||||
require_iform_authenticated(
|
||||
view_func,
|
||||
),
|
||||
)
|
||||
|
||||
app.view_functions[endpoint] = view_func
|
||||
|
Before Width: | Height: | Size: 566 B After Width: | Height: | Size: 566 B |
|
After Width: | Height: | Size: 137 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
@@ -0,0 +1 @@
|
||||
<svg enable-background="new 0 0 64 64" height="64" viewBox="0 0 64 64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="m47.562 6.75c-.38-.474-.955-.75-1.562-.75h-28c-.607 0-1.182.276-1.562.75l-16 20c-.637.796-.573 1.943.147 2.664l30 30c.391.391.903.586 1.415.586s1.024-.195 1.414-.586l30-30c.721-.721.784-1.868.147-2.664zm10.276 19.25h-10.35l-4.8-16h2.351zm-41.054 4 10.722 20.677-20.677-20.677zm4.506 0h8.71v16.798zm12.71 0h8.71l-8.71 16.798zm13.216 0h9.956l-20.678 20.677zm-8.704-20 4.8 16h-9.312v-16zm-8.512 16h-9.312l4.8-16h4.512zm-11.039-16h2.351l-4.8 16h-10.35z"/></svg>
|
||||
|
After Width: | Height: | Size: 583 B |
@@ -0,0 +1 @@
|
||||
<svg fill="none" height="48" viewBox="0 0 48 48" width="48" xmlns="http://www.w3.org/2000/svg"><g clip-rule="evenodd" fill="#333" fill-rule="evenodd"><path d="m11.0392 17.2183c-.4756.2768-.8742.5498-1.18834.7845-.34219.2557-.85823.0372-.84079-.3896.01851-.4528.06658-1.0087.17644-1.5915.17477-.9271.50589-1.9223 1.12309-2.6789-.4552-.8767-.70618-1.8366-.70618-2.8428 0-4.14214 4.25328-7.5 9.49998-7.5s9.5 3.35786 9.5 7.5c0 4.1421-4.2533 7.5-9.5 7.5-2.304 0-4.4165-.6475-6.0613-1.7247-.7675.2816-1.4393.615-2.0029.943zm1.4999-3.9218c.0919.1771.0698.3919-.0563.5465l-.6017.7375c.1536-.0626.3111-.1237.4722-.1828l.7077-.2596c.1484-.0545.3139-.0355.4461.0511l.6307.413c1.3021.8527 3.0299 1.3978 4.9656 1.3978 4.6086 0 7.5-2.8772 7.5-5.5 0-2.62276-2.8914-5.5-7.5-5.5s-7.5 2.87724-7.5 5.5c0 .6661.1647 1.3116.4812 1.9212z"/><path d="m32.1035 10c-1.1521 0-2.1445.2398-2.9566.6265-.7113.3304-1.3112.7766-1.7493 1.3019.1348-.4596.2059-.9377.2059-1.4284 0-.4134-.0505-.81784-.147-1.20984 1.2777-.8079 2.8919-1.29016 4.647-1.29016 4.1421 0 7.5 2.6863 7.5 6 0 .8463-.2191 1.6517-.6143 2.3819-.0881.1629-.0893.3595-.0084.5261.0953.1962.1748.401.241.6083.1805.5653.2624 1.1496.2971 1.6307.0308.4261-.4853.6495-.8354.4048-.3202-.2239-.7262-.4769-1.2086-.7166-.0941-.0467-.1911-.0929-.2909-.1384-.1536-.0698-.3314-.0505-.4745.0388-1.2712.7924-2.8697 1.2644-4.606 1.2644-3.5699 0-6.5573-1.9954-7.3146-4.668.7532-.5186 1.3846-1.1387 1.8571-1.8321-.0281.1638-.0425.3307-.0425.5001 0 1.4176 1.014 2.663 2.5433 3.3735.8121.3867 1.8046.6265 2.9567.6265 3.0275 0 5.4837-1.779 5.4999-3.9781 0-.0073.0001-.0146.0001-.0219 0-.0029 0-.0057 0-.0086-.0041-1.414-1.0171-2.6558-2.5432-3.3648-.8121-.3868-1.8047-.6266-2.9568-.6266z"/><path d="m13 31c1.6579 0 3-1.3421 3-3s-1.3421-3-3-3-3 1.3421-3 3 1.3421 3 3 3zm0 2c2.7625 0 5-2.2375 5-5s-2.2375-5-5-5-5 2.2375-5 5 2.2375 5 5 5z"/><path d="m5.62151 38.7886c-.48599.4893-.62151.8839-.62151 1.2114v1h18v-1c0-.3275-.1355-.7221-.6215-1.2114-.5043-.5077-1.2895-1.0094-2.3027-1.4522-2.0371-.8903-4.5143-1.3364-6.0758-1.3364s-4.03865.4461-6.07582 1.3364c-1.01321.4428-1.79842.9445-2.30267 1.4522zm8.37849-4.7886c-3.6712 0-11 2.01-11 6v3h22v-3c0-3.99-7.3287-6-11-6z"/><path d="m35 31c1.6579 0 3-1.3421 3-3s-1.3421-3-3-3-3 1.3421-3 3 1.3421 3 3 3zm0 2c2.7625 0 5-2.2375 5-5s-2.2375-5-5-5-5 2.2375-5 5 2.2375 5 5 5z"/><path d="m24 29c1.1054 0 2-.8946 2-2s-.8946-2-2-2-2 .8946-2 2 .8946 2 2 2zm0 2c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4z"/><path d="m25.6215 38.7886c-.486.4893-.6215.8839-.6215 1.2114v1h18v-1c0-.3275-.1355-.7221-.6215-1.2114-.5043-.5077-1.2895-1.0094-2.3027-1.4522-2.0371-.8903-4.5143-1.3364-6.0758-1.3364s-4.0387.4461-6.0758 1.3364c-1.0132.4428-1.7984.9445-2.3027 1.4522zm8.3785-4.7886c-3.6712 0-11 2.01-11 6v3h22v-3c0-3.99-7.3287-6-11-6z"/><path d="m24 34c-3.3093 0-5.6283 1.5425-6.2929 2.2071l-1.4143-1.4142c1.0021-1.002 3.8164-2.7929 7.7072-2.7929 3.8907 0 6.705 1.7909 7.7071 2.7929l-1.4143 1.4142c-.6646-.6646-2.9836-2.2071-6.2928-2.2071z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 330 KiB |
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,20 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 29.069883 10.420284">
|
||||
<g transform="translate(1142.2809,279.38339)">
|
||||
<a transform="matrix(0.26458333,0,0,0.26458333,-1279.7936,-339.14401)" id="a9715" xlink:href="/products/rdm/">
|
||||
<g transform="translate(0.9420447)">
|
||||
<g aria-label="RDM" transform="scale(0.96631971,1.0348542)" style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:37.37073898px;font-family:Oswald;fill:#fb8273;stroke:none">
|
||||
<path d="m 628.93512,251.59732 0.52319,-30.2703 h 6.53987 l 3.73708,19.09645 3.99867,-19.09645 h 6.31565 l 0.52319,30.2703 h -4.48449 l -0.48582,-20.51654 -3.84918,20.51654 h -3.84919 l -4.03604,-20.66602 -0.41108,20.66602 z m -21.27388,0 v -30.2703 h 7.3994 q 3.84919,0 5.97932,1.00901 2.1675,0.97164 3.0644,3.10177 0.8969,2.09276 0.8969,5.38139 v 11.02437 q 0,3.36336 -0.8969,5.53087 -0.8969,2.1675 -3.02703,3.21388 -2.09276,1.00901 -5.8672,1.00901 z m 6.16617,-4.29763 h 1.30798 q 1.71905,0 2.42909,-0.52319 0.74742,-0.56057 0.93427,-1.60695 0.18686,-1.08375 0.18686,-2.65332 V 230.0344 q 0,-1.56957 -0.2616,-2.50384 -0.22422,-0.97163 -0.97164,-1.42008 -0.71004,-0.44845 -2.35436,-0.44845 h -1.2706 z m -27.84412,4.29763 v -30.2703 h 7.84785 q 3.06441,0 5.23191,0.71005 2.20487,0.67267 3.36336,2.42909 1.19587,1.75643 1.19587,4.8582 0,1.86854 -0.33634,3.326 -0.29896,1.42008 -1.12112,2.50384 -0.78479,1.04638 -2.24224,1.68168 l 4.18552,14.76144 h -6.31566 l -3.47548,-13.71506 h -2.1675 v 13.71506 z m 6.16617,-17.37739 h 1.7938 q 1.49483,0 2.35435,-0.48582 0.85953,-0.48582 1.19587,-1.45746 0.3737,-1.00901 0.3737,-2.46647 0,-2.09276 -0.78478,-3.17651 -0.74742,-1.12113 -2.84018,-1.12113 h -2.09276 z"/>
|
||||
</g>
|
||||
<g transform="matrix(0.43046721,0,0,0.43046721,198.64479,126.38329)">
|
||||
<g transform="translate(474.21725,226.44114)">
|
||||
<path d="m 328.162,4.665 c -18.767,0 -34.032,15.268 -34.032,34.034 0,7.28 2.306,14.028 6.214,19.568 l -30.078,26.432 c -1.881,1.878 0.067,6.867 1.944,8.749 1.879,1.876 6.87,3.822 8.748,1.943 l 26.265,-29.894 c 5.779,4.525 13.047,7.233 20.939,7.233 18.768,0 34.034,-15.267 34.034,-34.032 0,-18.765 -15.266,-34.033 -34.034,-34.033 z m 0,56.722 c -12.51,0 -22.689,-10.177 -22.689,-22.688 0,-12.511 10.18,-22.69 22.689,-22.69 12.513,0 22.688,10.18 22.688,22.69 0,12.51 -10.175,22.688 -22.688,22.688 z" style="fill:var(--invenio-logo-glass-color, #000000)"/>
|
||||
</g>
|
||||
<g transform="matrix(0.38742049,0,0,0.38742049,670.93796,251.12579)">
|
||||
<path d="m 375.104,38.079 c 0.174,18.184 -8.123,32.126 -11.51,37.52 8.183,-5.347 19.898,-19.36 19.674,-37.661 0.174,-18.183 -11.431,-32.127 -19.631,-37.52 3.323,5.347 11.691,19.36 11.467,37.661 z" style="fill:var(--invenio-logo-glass-color, #000000)"/>
|
||||
<path d="m 375.104,38.079 c 0.174,18.184 -8.123,32.126 -11.51,37.52 8.183,-5.347 19.898,-19.36 19.674,-37.661 0.174,-18.183 -11.431,-32.127 -19.631,-37.52 3.323,5.347 11.691,19.36 11.467,37.661 z" style="fill:none;stroke:var(--invenio-logo-glass-color, #000000)"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</a>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg fill="#000000" height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
viewBox="0 0 512.427 512.427" xml:space="preserve">
|
||||
<g transform="translate(1 1)">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M502.893,396.948h-54.941l19.102-5.12c1.707-0.853,4.267-1.707,5.12-4.267s1.707-4.267,0.853-6.827l-12.67-47.026
|
||||
c0.07-0.83,0.031-1.664-0.13-2.467l-8.533-33.28c-0.405-0.81-1.006-1.81-1.704-2.731l-42.692-158.453
|
||||
c0.228-1.166,0.251-2.368,0.023-3.51l-8.533-33.28c-0.526-1.052-1.377-2.426-2.352-3.527L384.28,51.348
|
||||
c-0.853-4.267-5.973-6.827-10.24-5.973l-82.773,22.187c-4.267,0.853-6.827,5.973-5.973,10.24l18.404,68.485
|
||||
c-6.845-3.409-14.542-5.339-22.671-5.339H33.56c-3.413,0-5.973,1.707-7.68,5.12c-1.707,2.56-1.707,5.973,0,8.533l10.24,16.213
|
||||
c7.68,13.653,7.68,29.867,0,43.52l-7.545,11.947H7.96c-3.413,0-5.973,1.707-7.68,5.12c-1.707,2.56-1.707,5.973,0,8.533
|
||||
l10.24,16.213c7.68,13.653,7.68,29.867,0,43.52L0.28,315.882c-1.707,2.56-1.707,5.973,0,8.533s4.267,4.267,7.68,4.267h20.076
|
||||
l8.084,12.8c7.68,13.653,7.68,29.867,0,43.52l-7.545,11.947H7.96c-5.12,0-8.533,3.413-8.533,8.533v51.2
|
||||
c0,5.12,3.413,8.533,8.533,8.533h494.933c5.12,0,8.533-3.413,8.533-8.533v-51.2C511.427,400.362,508.013,396.948,502.893,396.948
|
||||
z M292.303,312.89c8.853-9.215,14.323-21.7,14.323-35.409s-5.47-26.194-14.323-35.409c12.984-2.949,24.135-10.859,31.324-21.623
|
||||
l29.419,109.472l7.34,28.627c0.198,0.395,0.42,0.778,0.661,1.147l10.011,37.253h-51.961c8.15-9.076,13.129-21.05,13.129-34.133
|
||||
C332.227,338.528,315.083,318.064,292.303,312.89z M387.693,129.855l-65.707,17.92l-4.267-16.213l65.707-17.92L387.693,129.855z
|
||||
M392.263,146.011l39.228,148.419l-65.994,17.689l-33.635-125.96c-0.582-4.934-1.863-9.661-3.758-14.072l-2.089-7.824
|
||||
L392.263,146.011z M370.627,328.682l65.426-16.994l4.285,16.212l-65.444,17.849L370.627,328.682z M387.693,395.242l-8.951-33.52
|
||||
l65.868-17.655l8.79,33.255L387.693,395.242z M370.627,64.148l8.501,32.163l-66.498,17.824l-8.563-32.067L370.627,64.148z
|
||||
M50.627,161.428l-1.707-3.413h232.107c14.067,0,26.217,8.625,31.425,20.847l2.436,9.064c0.173,1.385,0.272,2.792,0.272,4.222
|
||||
c0,18.773-15.36,34.133-34.133,34.133h-25.6H48.92l1.707-3.413C61.72,204.095,61.72,180.202,50.627,161.428z M25.027,246.762
|
||||
l-1.707-3.413h10.24h221.867c18.773,0,34.133,15.36,34.133,34.133c0,18.773-15.36,34.133-34.133,34.133H33.56H23.32l1.707-3.413
|
||||
C36.12,289.428,36.12,265.535,25.027,246.762z M50.627,332.095l-1.707-3.413h206.507h25.6c18.773,0,34.133,15.36,34.133,34.133
|
||||
c0,18.773-15.36,34.133-34.133,34.133H48.92l1.707-3.413C61.72,374.762,61.72,350.868,50.627,332.095z M494.36,448.148H16.493
|
||||
v-34.133H33.56h247.467h101.547h1.707h110.08V448.148z"/>
|
||||
<path d="M93.293,371.348h187.733c5.12,0,8.533-3.413,8.533-8.533s-3.413-8.533-8.533-8.533H93.293
|
||||
c-5.12,0-8.533,3.413-8.533,8.533S88.173,371.348,93.293,371.348z"/>
|
||||
<path d="M67.693,286.015h187.733c5.12,0,8.533-3.413,8.533-8.533c0-5.12-3.413-8.533-8.533-8.533H67.693
|
||||
c-5.12,0-8.533,3.413-8.533,8.533C59.16,282.602,62.573,286.015,67.693,286.015z"/>
|
||||
<path d="M93.293,200.682h187.733c5.12,0,8.533-3.413,8.533-8.533s-3.413-8.533-8.533-8.533H93.293
|
||||
c-5.12,0-8.533,3.413-8.533,8.533S88.173,200.682,93.293,200.682z"/>
|
||||
<path d="M357.827,182.762l26.453,98.987c1.707,3.413,5.12,5.973,8.533,5.973c0,0,0.853,0,1.707-0.853
|
||||
c4.267-0.853,6.827-5.973,5.973-10.24l-26.453-98.133c-0.853-4.267-5.973-6.827-10.24-5.973S356.973,178.495,357.827,182.762z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 321 KiB |
|
Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 95 KiB |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" data-attribution="cc0-icons" viewBox="0 0 24 24">
|
||||
<path d="m4.5 2 15 10-15 10V2Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 256 B |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 9.6 KiB |
|
After Width: | Height: | Size: 9.6 KiB |
|
After Width: | Height: | Size: 9.8 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
@@ -0,0 +1 @@
|
||||
<svg enable-background="new 0 0 64 64" height="64" viewBox="0 0 64 64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="m32 0c-27.377 0-31.93 25.415-31.973 25.671-.097.58.066 1.173.447 1.622.38.448.938.707 1.526.707h28v30c0 3.309 2.691 6 6 6s6-2.691 6-6c0-1.104-.896-2-2-2s-2 .896-2 2c0 1.103-.897 2-2 2s-2-.897-2-2v-30h28c.007-.001.013 0 .02 0 1.104 0 2-.896 2-2 0-.234-.041-.459-.115-.669-.645-3.04-6.265-25.331-31.905-25.331zm-27.455 24c1.712-5.749 7.927-20 27.455-20s25.743 14.251 27.455 20z"/></svg>
|
||||
|
After Width: | Height: | Size: 510 B |
@@ -0,0 +1 @@
|
||||
.zed
|
||||
@@ -0,0 +1,13 @@
|
||||
{#
|
||||
Copyright (C) 2024 Graz University of Technology.
|
||||
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
#}
|
||||
{% extends config.THEME_ERROR_TEMPLATE %}
|
||||
|
||||
{% block message %}
|
||||
<h1><i class="bolt icon"></i> {{ _("Locked") }}</h1>
|
||||
<p>{{ _("The resource that is being accessed is locked.") }}</p>
|
||||
{% endblock message %}
|
||||
@@ -0,0 +1,134 @@
|
||||
{#
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
Copyright (C) 2025 I-Form Advanced Manufacturing Research Centre.
|
||||
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
#}
|
||||
|
||||
{% set lang_attr = g.ln.split('_', 1)[0]|safe if g.ln else '' %}
|
||||
{% set html_class_attr = html_css_classes|join(' ') if html_css_classes else '' %}
|
||||
{% set body_class_attr = body_css_classes|join(' ') if body_css_classes else '' %}
|
||||
{% set rtl_attr = rtl_direction|safe if rtl_direction and g.ln else '' %}
|
||||
|
||||
<!doctype html>
|
||||
<html
|
||||
{% if html_class_attr %}class="{{ html_class_attr }}"{% endif %}
|
||||
lang="{{ lang_attr }}"
|
||||
dir="{{ rtl_attr }}"
|
||||
>
|
||||
<head>
|
||||
{%- block head %}
|
||||
{%- block head_meta %}
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
{%- if description %}
|
||||
<meta name="description" content="{{ description }}" />
|
||||
{% endif %}
|
||||
{%- if keywords %}<meta name="keywords" content="{{ keywords }}" />{% endif %}
|
||||
{%- if config.get('THEME_GOOGLE_SITE_VERIFICATION', None) %}
|
||||
{%- for google_id in config.THEME_GOOGLE_SITE_VERIFICATION %}
|
||||
<meta name="google-site-verification" content="{{ google_id }}" />
|
||||
{%- endfor %}
|
||||
{%- endif %}
|
||||
{%- endblock head_meta %}
|
||||
{%- block head_title %}
|
||||
{%- set title = title or config.THEME_SITENAME %}
|
||||
<title>{{ title }}</title>
|
||||
{%- endblock head_title %}
|
||||
{%- block head_links %}
|
||||
<link rel="shortcut icon" href="{{ url_for('static', filename=config.THEME_FAVICON or 'images/iform-favicon.ico') }}" />
|
||||
{%- if keywords %}<link rel="canonical" href="{{ canonical_url }}" />{% endif %}
|
||||
{%- block head_links_langs %}
|
||||
{%- if alternate_urls %}
|
||||
{%- for alt_ln, alternate_url in alternate_urls.items() %}
|
||||
<link
|
||||
rel="alternate"
|
||||
hreflang="{{ alt_ln }}"
|
||||
href="{{ alternate_url }}"
|
||||
/>
|
||||
{%- endfor %}
|
||||
{%- endif %}
|
||||
{%- endblock %}
|
||||
{%- block head_apple_icons %}
|
||||
{%- for size in [144, 114, 72, 57] %}
|
||||
{%- set icon_name = 'apple-touch-icon-%d-precomposed.png' | format(size) %}
|
||||
<link
|
||||
rel="apple-touch-icon-precomposed"
|
||||
sizes="{{ size }}x{{ size }}"
|
||||
href="{{ url_for('static', filename=icon_name) }}"
|
||||
/>
|
||||
{%- endfor %}
|
||||
{%- endblock head_apple_icons %}
|
||||
{%- endblock head_links %}
|
||||
{%- block header %}
|
||||
{% endblock header %}
|
||||
{%- block css %}
|
||||
{{ webpack['theme.css'] }}
|
||||
{{ webpack['invenio-theme-iform-theme.css'] }}
|
||||
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
{%- endblock css %}
|
||||
{%- endblock head %}
|
||||
</head>
|
||||
<body
|
||||
ng-csp
|
||||
{% if body_class_attr %}class="{{ body_class_attr }}"{% endif %}
|
||||
{% if lang_attr %}lang="{{ lang_attr }}"{% endif %}
|
||||
{{ rtl_attr }}
|
||||
itemscope
|
||||
itemtype="http://schema.org/WebPage"
|
||||
data-spy="scroll"
|
||||
data-target=".scrollspy-target"
|
||||
>
|
||||
{% if not config.THEME_IFORM_PRODUCTION %}
|
||||
<div class="ui sticky test-instance">
|
||||
<h4>{{ _("Test Instance") }}</h4>
|
||||
<p>{{ _("This is the test instance of the I-Form Repository.") }}</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
{%- block body %}
|
||||
{%- block browserupgrade %}
|
||||
<!--[if lt IE 8]>
|
||||
<p class="browserupgrade">
|
||||
You are using an <strong>outdated</strong> browser. Please
|
||||
<a href="http://browsehappy.com/">upgrade your browser</a> to improve your
|
||||
experience.
|
||||
</p>
|
||||
<![endif]-->
|
||||
{%- endblock browserupgrade %}
|
||||
{%- block body_inner %}
|
||||
|
||||
{%- block navbar_header %}
|
||||
{%- include "invenio_theme_iform/navbar.html" %}
|
||||
<!--Flask messages for accounts-->
|
||||
{%- block flashmessages %}
|
||||
{%- from "invenio_theme/macros/messages.html" import flashed_messages with context -%}
|
||||
{{ flashed_messages() }}
|
||||
{%- endblock flashmessages %}
|
||||
{%- endblock navbar_header %}
|
||||
|
||||
{#
|
||||
{%- block page_header %}
|
||||
{% include config.THEME_HEADER_TEMPLATE %}
|
||||
{%- endblock page_header %}
|
||||
#}
|
||||
|
||||
{%- block page_body %}
|
||||
{% include "invenio_theme/body.html" %}
|
||||
{%- endblock page_body %}
|
||||
{%- endblock body_inner %}
|
||||
{%- block javascript %}
|
||||
{% include config.THEME_JAVASCRIPT_TEMPLATE %}
|
||||
{%- endblock javascript %}
|
||||
{%- block trackingcode %}
|
||||
{% include config.THEME_TRACKINGCODE_TEMPLATE %}
|
||||
{%- endblock %}
|
||||
{%- endblock body %}
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,39 @@
|
||||
{%- if config.ACCOUNTS %}
|
||||
|
||||
{%- if not current_user.is_authenticated %}
|
||||
|
||||
{%- if config.SECURITY_REGISTERABLE and registration_enabled %}
|
||||
<div class="short-menu-right-button">
|
||||
<a href="{{ url_for('security.register') }}" class="no-decoration">
|
||||
{{ _ ("Sign up") }}
|
||||
</a>
|
||||
</div>
|
||||
{%- endif %}
|
||||
|
||||
<div class="short-menu-right-button">
|
||||
<a href="{{ url_for_security('login', next=request.path) }}" class="no-decoration">
|
||||
{{ _("Log in") }}
|
||||
</a>
|
||||
</div>
|
||||
{%- else %}
|
||||
{%- if config.USERPROFILES %}
|
||||
<div class="short-menu-right-button">
|
||||
<a href="{{ url_for('invenio_userprofiles.profile') }}" class="no-decoration">
|
||||
<i class="user icon"></i> {{ current_user.email }}
|
||||
</a>
|
||||
</div>
|
||||
{%- for item in current_menu.submenu('profile-admin').children if item.visible %}
|
||||
<div class="short-menu-right-button">
|
||||
<a class="dropdown-item no-decoration" href="{{ item.url }}">
|
||||
{{ item.text|safe }}
|
||||
</a>
|
||||
</div>
|
||||
{%- endfor %}
|
||||
<div class="short-menu-right-button">
|
||||
<a class="dropdown-item no-decoration" href="{{ url_for_security('logout') }}"
|
||||
>{{ _("Sign out") }}</a
|
||||
>
|
||||
</div>
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
@@ -0,0 +1,111 @@
|
||||
{#
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
#}
|
||||
{% extends config.INVENIO_THEME_IFORM_ACCOUNT_BASE %}
|
||||
{% from "invenio_accounts/_macros.html" import render_field, form_errors %}
|
||||
{%- from "invenio_oauthclient/_macros.html" import oauth_button %}
|
||||
{% block page_body %}
|
||||
<div class="spacer-long"></div>
|
||||
<div class="spacer-long"></div>
|
||||
<div class="ui container">
|
||||
<div class="ui centered grid padded">
|
||||
<div class="ui padded segments large form">
|
||||
<div class="ui login segment padded">
|
||||
<div class="divider hidden"></div>
|
||||
{%- block form_header %}
|
||||
<h3 class="ui login header">{{ _("Log in to Repository") }}</h3>
|
||||
{%- endblock form_header %}
|
||||
<div class="ui divider"></div>
|
||||
<!--Log in with SSO-->
|
||||
{% if config.OAUTHCLIENT_REMOTE_APPS or config.SSO_SAML_IDPS %}
|
||||
<div class="ui form">
|
||||
{% for name in config.OAUTHCLIENT_REMOTE_APPS.keys() %}
|
||||
{{ oauth_button(name, next=request.args.get('next')) }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% for name in config.SSO_SAML_IDPS.keys() %}
|
||||
<div class="field">
|
||||
<a
|
||||
class="login-page-button ui fluid large button"
|
||||
href="{{ url_for('sso_saml.sso', idp=name) }}"
|
||||
>
|
||||
{{ _("Log in with") }}
|
||||
{{ config.SSO_SAML_IDPS[name]['title']|default("SAML", true) }}
|
||||
<img
|
||||
src="{{ url_for('static', filename=config.INVENIO_THEME_IFORM_ICON) }}"
|
||||
height="20px"
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{%- if config.ACCOUNTS_LOCAL_LOGIN_ENABLED %}
|
||||
<div class="ui horizontal divider">{{ _("Or") }}</div>
|
||||
{%- endif %}
|
||||
{% endif %}
|
||||
|
||||
{%- block form_outer %}
|
||||
{%- if config.ACCOUNTS_LOCAL_LOGIN_ENABLED %}
|
||||
{%- with form = login_user_form %}
|
||||
{%- set accordion_active = "active" if form.errors else "" %}
|
||||
<div class="ui styled accordion">
|
||||
<div class="title trigger {{ accordion_active }}">
|
||||
{{ _("Log in with repository credentials") }}
|
||||
<i class="user icon button"></i>
|
||||
</div>
|
||||
<div class="content {{ accordion_active }}">
|
||||
<form
|
||||
action="{{ url_for_security('login') }}"
|
||||
method="POST"
|
||||
name="login_user_form"
|
||||
class="ui large form"
|
||||
>
|
||||
{{ form.hidden_tag() }}
|
||||
{{ form_errors(form) }}
|
||||
{{ render_field(form.email, icon="user icon", autofocus=True, errormsg=False) }}
|
||||
{{ render_field(form.password, icon="lock icon", errormsg=False) }}
|
||||
<button
|
||||
type="submit"
|
||||
class="ui fluid large submit button"
|
||||
>
|
||||
<i class="ui sign-in icon"></i>{{ _("Log In") }}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{%- endwith %}
|
||||
{%- endif %}
|
||||
{%- endblock form_outer %}
|
||||
<div class="divider hidden"></div>
|
||||
</div>
|
||||
|
||||
{%- block registerable %}
|
||||
{%- if security.registerable %}
|
||||
<div class="ui primary segment padded text-muted">
|
||||
{% trans sitename=config.ACCOUNTS_SITENAME %}New to {{ sitename }}?{% endtrans %}
|
||||
<a
|
||||
href="{{ url_for_security('register', next=request.args.get('next')) }}"
|
||||
>{{ _("Sign up") }}</a
|
||||
>
|
||||
</div>
|
||||
{%- endif %}
|
||||
{%- endblock registerable %}
|
||||
|
||||
{%- block recoverable %}
|
||||
{%- if security.recoverable %}
|
||||
<div class="ui basic segment padded">
|
||||
<a
|
||||
class="ui inverted header tiny"
|
||||
href="{{ url_for_security('forgot_password') }}"
|
||||
>{{ _("Forgot password?") }}</a
|
||||
>
|
||||
</div>
|
||||
{%- endif %}
|
||||
{%- endblock recoverable %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock page_body %}
|
||||
@@ -0,0 +1,106 @@
|
||||
{#
|
||||
Copyright (C) 2020 Graz University of Technology.
|
||||
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
#}
|
||||
{% extends config.INVENIO_THEME_IFORM_ACCOUNT_BASE %}
|
||||
{% from "invenio_accounts/_macros.html" import render_field, form_errors %}
|
||||
|
||||
{% block page_body %}
|
||||
<div class="spacer-long"></div>
|
||||
|
||||
<div class="ui container">
|
||||
<div class="ui stackable two column grid">
|
||||
<div class="centered row">
|
||||
<h1 class="ui header">{{ _("Create an Account") }}</h1>
|
||||
</div>
|
||||
|
||||
<div class="column" id="switch_left">
|
||||
<div class="ui basic segment">
|
||||
<h4 class="ui header">{{ _("Citeable. Discoverable.") }}</h4>
|
||||
<p class="bodytext">
|
||||
{{ _("Uploads get a Digital Object Identifier (DOI) to make them easily and uniquely citeable.") }}
|
||||
</p>
|
||||
|
||||
<h4 class="ui header">{{ _("Communities.") }}</h4>
|
||||
<p class="bodytext">
|
||||
{{ _("Accept or reject uploads to your own community (e.g workshops, EU projects, institutions or entire disciplines).") }}
|
||||
</p>
|
||||
<h4 class="ui header">{{ _("Trusted Research Data Management") }}</h4>
|
||||
<p class="bodytext">
|
||||
{{ _("Built on top of I-Form expertise in the managing of research data.") }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="column" id="switch_right">
|
||||
{# Sigup with SSO #}
|
||||
{%- if config.INVENIO_CONFIG_IFORM_SHIBBOLETH %}
|
||||
<div class="ui divider"></div>
|
||||
<a
|
||||
href="{{ url_for('sso_saml.sso', idp='idp') }}"
|
||||
class="login-page-button ui fluid large button"
|
||||
>
|
||||
<span style="font-size: 18px;">{{ _("Sign up with I-Form") }}</span>
|
||||
<img
|
||||
src="{{ url_for('static', filename=config.INVENIO_THEME_IFORM_ICON) }}"
|
||||
height="20px"
|
||||
/>
|
||||
</a>
|
||||
<div class="ui inverted horizontal divider">
|
||||
<span class="text-color">{{ _ ("Or") }}</span>
|
||||
</div>
|
||||
{%- endif %}
|
||||
|
||||
{%- block form_header %}
|
||||
{# can add a header img #}
|
||||
{%- block form_outer %}
|
||||
{%- endblock form_outer %}
|
||||
{%- endblock form_header %}
|
||||
|
||||
{%- with form = register_user_form %}
|
||||
{%- set accordion_active = "active" if form.errors else "" %}
|
||||
<div class="ui padded centered large form">
|
||||
<div class="ui styled accordion">
|
||||
<div class="title trigger {{ accordion_active }}">
|
||||
{{ _("Sign up with repository credentials") }}
|
||||
<i class="user icon button"></i>
|
||||
</div>
|
||||
<div class="content {{ accordion_active }}">
|
||||
<form
|
||||
class="ui large form"
|
||||
action="{{ url_for_security('register') }}"
|
||||
method="POST"
|
||||
name="register_user_form"
|
||||
>
|
||||
{{ form_errors(form) }}
|
||||
{{ form.hidden_tag() }}
|
||||
{%- block registration_form_fields scoped %}
|
||||
{{ render_field(form.email, icon="user icon", autofocus=True, errormsg=False) }}
|
||||
{{ render_field(form.password, icon="lock icon", errormsg=False) }}
|
||||
{%- if form.password_confirm %}
|
||||
{{ render_field(form.password_confirm, icon="lock icon", errormsg=False) }}
|
||||
{%- endif %}
|
||||
{%- endblock registration_form_fields %}
|
||||
|
||||
{%- if form.recaptcha %}
|
||||
<div class="grouped fields">{{ form.recaptcha() }}</div>
|
||||
{%- endif %}
|
||||
|
||||
<div class="centered row">
|
||||
<button type="submit" class="ui fluid large submit button">
|
||||
<i class="ui edit outline icon"></i>{{ _("Sign up") }}
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{%- endwith %}
|
||||
<div class="ui divider"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock page_body %}
|
||||
@@ -0,0 +1,42 @@
|
||||
{#
|
||||
Copyright (C) 2024 I-Form.
|
||||
|
||||
invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||
under the terms of the MIT License; see LICENSE file for more details.
|
||||
#}
|
||||
{% extends config.THEME_ERROR_TEMPLATE %}
|
||||
|
||||
{% block message %}
|
||||
<div class="ui container center aligned rel-mt-5 rel-mb-5">
|
||||
<h1 class="ui icon header">
|
||||
<i class="user cancel icon red"></i>
|
||||
<div class="content">
|
||||
{{ _("Public Registration Disabled") }}
|
||||
<div class="sub header rel-mt-2">
|
||||
{{ _("Public user registration is currently closed on this repository.") }}
|
||||
</div>
|
||||
</div>
|
||||
</h1>
|
||||
|
||||
<div class="ui message info left aligned" style="max-width: 600px; margin: 2em auto;">
|
||||
<div class="header">
|
||||
{{ _("Need an account?") }}
|
||||
</div>
|
||||
<p>
|
||||
{{ _("If you require an account to upload or manage research data, please contact an administrator at:") }}
|
||||
</p>
|
||||
<p style="font-size: 1.1em; font-weight: bold; text-align: center;">
|
||||
<a href="mailto:{{ admin_email }}"><i class="envelope icon"></i> {{ admin_email }}</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="rel-mt-3">
|
||||
<a href="{{ url_for('security.login') }}" class="ui button primary">
|
||||
<i class="sign-in icon"></i> {{ _("Back to Log In") }}
|
||||
</a>
|
||||
<a href="{{ url_for('index') }}" class="ui button">
|
||||
<i class="home icon"></i> {{ _("Home Page") }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock message %}
|
||||
@@ -0,0 +1,61 @@
|
||||
{#
|
||||
Copyright (C) 2024 I-Form.
|
||||
|
||||
invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||
under the terms of the MIT License; see LICENSE file for more details.
|
||||
#}
|
||||
{% extends "invenio_administration/base.html" %}
|
||||
|
||||
{% block admin_page_content %}
|
||||
<div class="ui container dashboard rel-mt-5">
|
||||
<div class="ui grid">
|
||||
<div class="sixteen wide column">
|
||||
<h2 class="ui header">
|
||||
<i class="setting icon"></i>
|
||||
<div class="content">
|
||||
{{ _("Registration Settings") }}
|
||||
<div class="sub header">{{ _("Enable or disable public user registration on the website.") }}</div>
|
||||
</div>
|
||||
</h2>
|
||||
|
||||
{% with messages = get_flashed_messages(with_categories=true) %}
|
||||
{% if messages %}
|
||||
{% for category, message in messages %}
|
||||
<div class="ui {{ 'positive' if category == 'success' else 'negative' }} message">
|
||||
{{ message }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
|
||||
<div class="ui segment">
|
||||
<h3 class="ui header">{{ _("Public Sign-up Status") }}</h3>
|
||||
|
||||
<p>
|
||||
{% if registration_enabled %}
|
||||
<span class="ui green large label"><i class="check icon"></i> {{ _("Public Sign-ups ENABLED") }}</span>
|
||||
{% else %}
|
||||
<span class="ui red large label"><i class="ban icon"></i> {{ _("Public Sign-ups DISABLED") }}</span>
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
<div class="ui divider"></div>
|
||||
|
||||
<form method="POST" class="ui form">
|
||||
{% if registration_enabled %}
|
||||
<input type="hidden" name="registration_enabled" value="false">
|
||||
<button type="submit" class="ui red button">
|
||||
<i class="ban icon"></i> {{ _("Disable Public Sign-ups") }}
|
||||
</button>
|
||||
{% else %}
|
||||
<input type="hidden" name="registration_enabled" value="true">
|
||||
<button type="submit" class="ui green button">
|
||||
<i class="check icon"></i> {{ _("Enable Public Sign-ups") }}
|
||||
</button>
|
||||
{% endif %}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,120 @@
|
||||
{#
|
||||
Copyright (C) 2024 I-Form.
|
||||
|
||||
invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||
under the terms of the MIT License; see LICENSE file for more details.
|
||||
#}
|
||||
{% extends "invenio_administration/base.html" %}
|
||||
|
||||
{% block admin_page_content %}
|
||||
<div class="ui container dashboard rel-mt-5">
|
||||
<div class="ui grid">
|
||||
<div class="sixteen wide column">
|
||||
<h2 class="ui header">
|
||||
<i class="users icon"></i>
|
||||
<div class="content">
|
||||
{{ _("Role Assignment") }}
|
||||
<div class="sub header">{{ _("Select a role and enable or disable it for users.") }}</div>
|
||||
</div>
|
||||
</h2>
|
||||
|
||||
{% with messages = get_flashed_messages(with_categories=true) %}
|
||||
{% if messages %}
|
||||
{% for category, message in messages %}
|
||||
<div class="ui {{ 'positive' if category == 'success' else 'negative' }} message">
|
||||
{{ message }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
|
||||
<div class="ui segment">
|
||||
<form method="GET" class="ui form">
|
||||
<div class="field">
|
||||
<label>{{ _("Select a Role") }}</label>
|
||||
<div class="ui action input">
|
||||
<select name="role_id" class="ui dropdown">
|
||||
<option value="">{{ _("-- Select a role --") }}</option>
|
||||
{% for r in roles %}
|
||||
<option value="{{ r.id }}" {% if selected_role and selected_role.id == r.id %}selected{% endif %}>
|
||||
{{ r.name }}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<button class="ui button primary" type="submit">{{ _("Select") }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
{% if selected_role %}
|
||||
<div class="ui segment">
|
||||
<h3 class="ui header">
|
||||
{{ _("Users assigned to:") }} {{ selected_role.name }}
|
||||
{% if selected_role.description %}
|
||||
<div class="sub header" style="margin-top: 5px;">
|
||||
<i class="info circle icon"></i> {{ selected_role.description }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</h3>
|
||||
<table class="ui celled striped table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ _("Email") }}</th>
|
||||
<th>{{ _("Active") }}</th>
|
||||
<th class="center aligned">{{ _("Has Role?") }}</th>
|
||||
<th class="center aligned">{{ _("Actions") }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for user in users %}
|
||||
<tr>
|
||||
<td>{{ user.email }}</td>
|
||||
<td>
|
||||
{% if user.active %}
|
||||
<div class="ui green horizontal label">{{ _("Active") }}</div>
|
||||
{% else %}
|
||||
<div class="ui grey horizontal label">{{ _("Inactive") }}</div>
|
||||
{% endif %}
|
||||
</td>
|
||||
|
||||
{% set has_role = selected_role in user.roles %}
|
||||
<td class="center aligned">
|
||||
{% if has_role %}
|
||||
<i class="green check large icon"></i>
|
||||
{% else %}
|
||||
<i class="red times large icon"></i>
|
||||
{% endif %}
|
||||
</td>
|
||||
|
||||
<td class="center aligned">
|
||||
<form method="POST" style="display:inline;">
|
||||
<input type="hidden" name="user_id" value="{{ user.id }}">
|
||||
<input type="hidden" name="role_id" value="{{ selected_role.id }}">
|
||||
{% if has_role %}
|
||||
<input type="hidden" name="action" value="disable">
|
||||
<button class="ui tiny red button" type="submit">
|
||||
<i class="minus icon"></i> {{ _("Disable") }}
|
||||
</button>
|
||||
{% else %}
|
||||
<input type="hidden" name="action" value="enable">
|
||||
<button class="ui tiny green button" type="submit">
|
||||
<i class="plus icon"></i> {{ _("Enable") }}
|
||||
</button>
|
||||
{% endif %}
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
{% else %}
|
||||
<tr>
|
||||
<td colspan="4" class="center aligned">{{ _("No users found.") }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,58 @@
|
||||
{#
|
||||
Copyright (C) 2024 I-Form.
|
||||
|
||||
invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||
under the terms of the MIT License; see LICENSE file for more details.
|
||||
#}
|
||||
{% extends "invenio_administration/base.html" %}
|
||||
|
||||
{% block admin_page_content %}
|
||||
<div class="ui container dashboard rel-mt-5">
|
||||
<div class="ui grid">
|
||||
<div class="sixteen wide column">
|
||||
<h2 class="ui header">
|
||||
<i class="user plus icon"></i>
|
||||
<div class="content">
|
||||
{{ _("Create User") }}
|
||||
<div class="sub header">{{ _("Manually add a new user account.") }}</div>
|
||||
</div>
|
||||
</h2>
|
||||
|
||||
{% with messages = get_flashed_messages(with_categories=true) %}
|
||||
{% if messages %}
|
||||
{% for category, message in messages %}
|
||||
<div class="ui {{ 'positive' if category == 'success' else 'negative' }} message">
|
||||
{{ message }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
|
||||
<div class="ui segment">
|
||||
<form method="POST" class="ui form">
|
||||
<div class="field required">
|
||||
<label>{{ _("Email Address") }}</label>
|
||||
<input type="email" name="email" placeholder="user@example.com" required>
|
||||
</div>
|
||||
|
||||
<div class="field required">
|
||||
<label>{{ _("Password") }}</label>
|
||||
<input type="password" name="password" placeholder="Password" required>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<div class="ui checkbox">
|
||||
<input type="checkbox" name="confirm_email" value="true" id="confirm_email" checked>
|
||||
<label for="confirm_email">{{ _("Automatically confirm email address (allow immediate login)") }}</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="ui button primary">
|
||||
<i class="user plus icon"></i> {{ _("Create User") }}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,108 @@
|
||||
{#
|
||||
Copyright (C) 2020-2023 Graz University of Technology.
|
||||
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
#}
|
||||
|
||||
<!doctype html>
|
||||
<html lang="{{ current_i18n.locale.language|safe }}" dir="{{ current_i18n.locale.text_direction }}">
|
||||
<head>
|
||||
{%- block head %}
|
||||
{%- block head_meta %}
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
{%- if description %}
|
||||
<meta name="description" content="{{ description }}" />
|
||||
{% endif %}
|
||||
|
||||
{%- if keywords %}
|
||||
<meta name="keywords" content="{{ keywords }}" />
|
||||
{% endif %}
|
||||
|
||||
{%- if config.get("THEME_GOOGLE_SITE_VERIFICATION", None) %}
|
||||
{%- for google_id in config.THEME_GOOGLE_SITE_VERIFICATION %}
|
||||
<meta name="google-site-verification" content="{{ google_id }}" />
|
||||
{%- endfor %}
|
||||
{%- endif %}
|
||||
{%- endblock head_meta %}
|
||||
|
||||
{%- block head_title %}
|
||||
{%- set title = title or config.THEME_SITENAME %}
|
||||
<title>{{ title }}</title>
|
||||
{%- endblock head_title %}
|
||||
|
||||
{%- block head_links %}
|
||||
<link rel="shortcut icon" href="{{ url_for('static', filename=config.THEME_FAVICON or 'images/iform-favicon.ico') }}" />
|
||||
|
||||
{%- if keywords %}
|
||||
<link rel="canonical" href="{{ canonical_url }}" />
|
||||
{% endif %}
|
||||
|
||||
{%- block head_links_langs %}
|
||||
{%- if alternate_urls %}
|
||||
{%- for alt_ln, alternate_url in alternate_urls.items() %}
|
||||
<link
|
||||
rel="alternate"
|
||||
hreflang="{{ alt_ln }}"
|
||||
href="{{ alternate_url }}"
|
||||
/>
|
||||
{%- endfor %}
|
||||
{%- endif %}
|
||||
{%- endblock %}
|
||||
{%- endblock head_links %}
|
||||
|
||||
{%- block header %}
|
||||
{% endblock header %}
|
||||
|
||||
{%- block css %}
|
||||
{{ webpack["theme.css"] }}
|
||||
{{ webpack["invenio-theme-iform-theme.css"] }}
|
||||
{%- endblock css %}
|
||||
{%- endblock head %}
|
||||
</head>
|
||||
|
||||
<body
|
||||
itemscope
|
||||
itemtype="http://schema.org/WebPage"
|
||||
data-spy="scroll"
|
||||
data-target=".scrollspy-target"
|
||||
>
|
||||
{%- block body %}
|
||||
{%- block browserupgrade %}
|
||||
<!--[if lt IE 10]>
|
||||
<p class="browserupgrade">
|
||||
You are using an <strong>outdated</strong> browser. Please
|
||||
<a href="http://browsehappy.com/">upgrade your browser</a> to improve your
|
||||
experience.
|
||||
</p>
|
||||
<![endif]-->
|
||||
{%- endblock browserupgrade %}
|
||||
|
||||
{%- block body_inner %}
|
||||
{%- block page_header %}
|
||||
{% include config.THEME_HEADER_TEMPLATE %}
|
||||
{%- endblock page_header %}
|
||||
|
||||
{%- block page_body %}
|
||||
{% include "invenio_theme/body.html" %}
|
||||
{%- endblock page_body %}
|
||||
|
||||
{%- block page_footer %}
|
||||
{% include config.THEME_FOOTER_TEMPLATE %}
|
||||
{%- endblock page_footer %}
|
||||
{%- endblock body_inner %}
|
||||
|
||||
{%- block javascript %}
|
||||
{% include config.THEME_JAVASCRIPT_TEMPLATE %}
|
||||
{%- endblock javascript %}
|
||||
|
||||
{%- block trackingcode %}
|
||||
{% include config.THEME_TRACKINGCODE_TEMPLATE %}
|
||||
{%- endblock %}
|
||||
{%- endblock body %}
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,34 @@
|
||||
{#
|
||||
Copyright (C) 2020-2024 Graz University of Technology.
|
||||
Copyright (C) 2025 I-Form Advanced Manufacturing Research Centre.
|
||||
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
#}
|
||||
|
||||
<div class="ui segment" style="padding-bottom: 10px;">
|
||||
<h4>{{ _("Good reasons to use the I-Form Repository") }}</h4>
|
||||
|
||||
<ul>
|
||||
<li><strong>{{ _("Safe") }}</strong> — {{ _("Your research results are permanently available.") }}</li>
|
||||
<li>
|
||||
<strong>{{ _("Trusted") }}</strong> — {{ _("A service from I-Form, based on software developed by CERN.") }}
|
||||
</li>
|
||||
<li>
|
||||
<strong>{{ _("Citeable") }}</strong> — {{ _("Every upload is assigned a Digital Object Identifier (DOI).") }}
|
||||
</li>
|
||||
<li>
|
||||
<strong>{{ _("No waiting time") }}</strong> — {{ _("Uploads are made available online as soon as you hit publish. Your DOI is registered within seconds.") }}
|
||||
</li>
|
||||
<li>
|
||||
<strong>{{ _("Open or closed") }}</strong> — {{ _("You determine the visibility of your uploads. A restricted access mode is possible.") }}
|
||||
</li>
|
||||
<li>
|
||||
<strong>{{ _("Versioning") }}</strong> — {{ _("Easily update your dataset with the versioning feature.") }}
|
||||
</li>
|
||||
<li>
|
||||
<strong>{{ _("Usage statistics") }}</strong> — {{ _("All uploads display standards compliant usage statistics.") }} <a href="help/statistics">({{ _("More") }})</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -0,0 +1,25 @@
|
||||
{#
|
||||
Copyright (C) 2020-2024 Graz University of Technology.
|
||||
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
#}
|
||||
|
||||
<div class="ui segment">
|
||||
<h4>{{ _("Need help?") }}</h4>
|
||||
|
||||
{%- if config.THEME_IFORM_CONTACT_FORM %}
|
||||
<div style="padding-bottom: 10px;">
|
||||
<a id="feedback-form" class="fluid ui button">{{ _("Contact us") }}</a>
|
||||
</div>
|
||||
{%- endif %}
|
||||
<p>{{ _("We can help with:") }}</p>
|
||||
|
||||
<ul>
|
||||
<li>{{ _("Uploading your research results, software, preprints, etc.") }}</li>
|
||||
<li>{{ _("Increasing upload limit beyond our default policy of 10GB.") }}</li>
|
||||
<li>{{ _("Establishing contact with data stewards.") }}</li>
|
||||
<li>{{ _("Finding individual solutions.") }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -0,0 +1,19 @@
|
||||
{#
|
||||
Copyright (C) 2024 Graz University of Technology.
|
||||
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
#}
|
||||
{% extends config.THEME_ERROR_TEMPLATE %}
|
||||
|
||||
{% block message %}
|
||||
<h1>{{ _("Internal server error") }}</h1>
|
||||
<p>
|
||||
{{ _(
|
||||
'Please contact <a href="mailto:{support_email}">our support</a>\n to let us know about this error.'
|
||||
).format(support_email=config.THEME_IFORM_SUPPORT_EMAIL)|safe
|
||||
}}
|
||||
</p>
|
||||
{# TODO: provide g.sentry_event_id here once sentry is configured, cf. invenio_theme/500.html #}
|
||||
{% endblock message %}
|
||||
@@ -0,0 +1,140 @@
|
||||
{#
|
||||
Copyright (C) 2020-2023 Graz University of Technology.
|
||||
Copyright (C) 2025 I-Form Advanced Manufacturing Research Centre.
|
||||
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
#}
|
||||
|
||||
{%- block css %}
|
||||
{{ webpack['invenio-theme-iform-theme.css'] }}
|
||||
{%- endblock %}
|
||||
|
||||
{%- block javascript %}
|
||||
{{ webpack['invenio-theme-iform-js.js'] }}
|
||||
{%- endblock javascript %}
|
||||
|
||||
<div class="spacer"></div>
|
||||
|
||||
<footer id="footer" class="footer-bottom">
|
||||
<div class="ui container">
|
||||
<div class="ui grid">
|
||||
<div class="doubling three column row">
|
||||
<div class="column">
|
||||
<h2>{{ _("Repository") }}</h2>
|
||||
<div class="ui list">
|
||||
<div class="item">
|
||||
<a
|
||||
href="https://tu-graz-library.github.io/docs-repository"
|
||||
title="Repository documentation"
|
||||
target="_blank"
|
||||
>
|
||||
{{ _("Documentation") }} <i class="external alternate icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
<a
|
||||
href="{{ url_for('invenio_config_iform.guide') }}"
|
||||
title="Quick guide"
|
||||
target="_blank"
|
||||
>
|
||||
{{ _("Reference Guide") }} <i class="download icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
<a
|
||||
href="{{ url_for('invenio_app_rdm.help_search') }}"
|
||||
title="Search guide"
|
||||
>
|
||||
{{ _("Search Guide") }}<i class="angle right icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
<a
|
||||
href="{{ url_for('invenio_config_iform.gdpr') }}"
|
||||
title="General Data Protection Rights"
|
||||
target="_blank"
|
||||
>
|
||||
{{ _("Data Protection") }} <i class="download icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
<a
|
||||
href="{{ url_for('invenio_config_iform.terms') }}"
|
||||
title="Terms and Conditions"
|
||||
target="_blank"
|
||||
>
|
||||
{{ _("Terms and Conditions") }} <i class="download icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="column">
|
||||
<h2>{{ _("Features") }}</h2>
|
||||
|
||||
<div class="ui list">
|
||||
<div class="item">{{ _("Scalability") }}</div>
|
||||
<div class="item">{{ _("Institutional integration") }}</div>
|
||||
<div class="item">{{ _("Next Generation Repository") }}</div>
|
||||
<div class="item">{{ _("Repository Profiles") }}</div>
|
||||
<div class="item">{{ _("Resilient") }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="column">
|
||||
<h2>{{ _("Accessibility") }}</h2>
|
||||
<div class="ui list">
|
||||
<div class="item">{{ _("Tip:") }}</div>
|
||||
<div class="item">{{ _("Use Ctrl + and Crtl -") }}</div>
|
||||
<div class="item">{{ _("to change the font size.") }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ui divider"></div>
|
||||
|
||||
<div class="doubling two column row">
|
||||
<div class="column">
|
||||
<div class="logos">
|
||||
<strong>{{ _("Powered by") }}</strong>
|
||||
<a
|
||||
href="http://inveniosoftware.org/products/rdm"
|
||||
target="_blank"
|
||||
title="InvenioRDM"
|
||||
>
|
||||
<img
|
||||
src="{{ url_for('static', filename='images/invenio-favicon.svg') }}"
|
||||
alt="InvenioRDM logo"
|
||||
style="display: block; height: 50px; margin-top: 8px;"
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="logos">
|
||||
<strong>{{ _("Funded by") }}</strong>
|
||||
<a
|
||||
href="https://www.researchireland.ie"
|
||||
target="_blank"
|
||||
title="Research Ireland"
|
||||
>
|
||||
<img
|
||||
src="{{ url_for('static', filename='images/research-ireland-logo.svg') }}"
|
||||
alt="Research Ireland"
|
||||
style="display: block; height: auto; margin-top: 15px; width: 230px;"
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
@@ -0,0 +1,67 @@
|
||||
{#
|
||||
Copyright (C) 2020-2023 Graz University of Technology.
|
||||
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
#}
|
||||
|
||||
<div class="sixteen wide column random-records-frontpage">
|
||||
<div class="center aligned ui equal height grid">
|
||||
<div class="left aligned column">
|
||||
<div class="ui segment image">
|
||||
<h2>{{ _("Research Results") }}</h2>
|
||||
|
||||
<div>{{ _("Research results is the collective term for all the results of a research project. They describe the data, source code and all digital objects on which publication results are based. These include the tools used to collect and process the research data. The following links offer the possibility to add research results to the repository, but also to search for the results of other people.") }}</div>
|
||||
|
||||
<ul>
|
||||
{#
|
||||
<li>
|
||||
<a href="research-results/browse">Browse</a>
|
||||
</li>
|
||||
#}
|
||||
<li>
|
||||
<a href="records/search">{{ _("Search for research results") }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="me/uploads">{{ _("Upload research results") }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="left aligned column">
|
||||
<div class="ui segment image">
|
||||
<h2>{{ _("Publications") }}</h2>
|
||||
|
||||
<div>{{ _("The section of publications covers citations from several areas. Open Access papers are imported from Pure. Publications from Open Access publishers are shared. Digital copies are offered. University publications are made available to a wide range of people. The following link offers the possibility to search among publications.") }}</div>
|
||||
|
||||
<ul>
|
||||
{#
|
||||
<li>
|
||||
<a href="publications/browse">Browse</a>
|
||||
</li>
|
||||
#}
|
||||
<li>
|
||||
<a href="publications/search">{{ _("Search for publications") }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="left aligned column">
|
||||
<div class="ui segment image">
|
||||
<h2>{{ _("Digital Tools & Software") }}</h2>
|
||||
|
||||
<div>{{ _("Frontpage: Description for digital tools and software") }}</div>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<a href="records/search?q=metadata.resource_type.id:software">{{ _("Search for digital tools & software") }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="me/uploads">{{ _("Upload digital tools & software") }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||