Compare commits

..

2 Commits

Author SHA1 Message Date
Mojib Wali
5cf0a5482d v1.5.0 2021-01-20 17:54:25 +01:00
Mojib Wali
ad8eb897f4 v1.4.1 2021-01-20 17:52:20 +01:00
167 changed files with 3695 additions and 10585 deletions

View File

@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2020-2021 Graz University of Technology.
# Copyright (C) 2020 mojib wali.
#
# invenio-theme-iform is free software; you can redistribute it and/or
# 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.
@@ -15,6 +15,15 @@ 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

5
.envrc
View File

@@ -1,5 +0,0 @@
export DIRENV_WARN_TIMEOUT=20s
eval "$(devenv direnvrc)"
use devenv

View File

@@ -1 +0,0 @@
cd71ecd24b8fc2253a58c60082c80a87c8085601

View File

@@ -1,29 +0,0 @@
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"

View File

@@ -1,26 +0,0 @@
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: Build package
run: uv build
- name: Publish to PyPI
run: uv publish --token ${{ secrets.PYPI_API_TOKEN }}

26
.github/workflows/pypi-publish.yml vendored Normal file
View File

@@ -0,0 +1,26 @@
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 }}

View File

@@ -1,20 +0,0 @@
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__

View File

@@ -1,92 +1,54 @@
# -*- 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
name: CI
on:
push:
branches:
- master
branches: master
pull_request:
branches:
- master
branches: master
schedule:
# * is a special character in YAML so you have to quote this string
- cron: '0 3 * * 6'
workflow_dispatch:
inputs:
reason:
description: "Reason"
description: 'Reason'
required: false
default: "Manual trigger"
default: 'Manual trigger'
jobs:
create-strategy:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.requirements.outputs.matrix }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: requirements
id: requirements
run: |
# 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}})
Tests:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.create-strategy.outputs.matrix) }}
# Simplified environment without service variables
env:
PYTHON_VERSION: ${{ matrix.python-version }}
matrix:
python-version: [3.6, 3.7, 3.8]
requirements-level: [min, pypi]
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v2
- name: Set up uv
uses: astral-sh/setup-uv@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: "${{ matrix.python-version }}"
enable-cache: true
cache-dependency-glob: |
pyproject.toml
cache-suffix: ${{ matrix.python-version }}
python-version: ${{ matrix.python-version }}
- name: Show configuration
- name: Generate dependencies
run: |
uv --version
uv run python --version
python -m pip install --upgrade pip setuptools py wheel requirements-builder
requirements-builder -e all --level=${{ matrix.requirements-level }} setup.py > .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt
- name: Cache pip
uses: actions/cache@v2
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('.${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt') }}
- name: Install dependencies
run: |
uv sync --group tests
pip install -r .${{matrix.requirements-level}}-${{ matrix.python-version }}-requirements.txt
pip install .[all]
pip freeze
- name: Run tests
env:
PYTEST_ADDOPTS: "--cov-report=lcov"
run: |
uv run test
- name: Upload coverage to Coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: coverage.lcov
./run-tests.sh

13
.gitignore vendored
View File

@@ -60,16 +60,3 @@ target/
# Vim swapfiles
.*.sw?
# Devenv
.devenv*
devenv.local.nix
# direnv
.direnv
# python version lock
.python-version
# bun modules
node_modules

View File

@@ -1,45 +0,0 @@
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]

View File

@@ -1,20 +0,0 @@
# 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

16
.tx/config Normal file
View File

@@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2020 mojib wali.
#
# 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

View File

@@ -1,15 +1,13 @@
..
Copyright (C) 2020-2021 Graz University of Technology.
Copyright (C) 2020 mojib wali.
invenio-theme-iform is free software; you can redistribute it and/or
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.
Authors
=======
Invenio module for iform theme.
invenio module for TUGRAZ theme.
- cian hughes <cian.hughes@dcu.ie>
Forked from https://github.com/tu-graz-library/invenio-theme-tugraz
- mojib wali <mojib.wali@tugraz.at>

View File

@@ -1,237 +1,13 @@
..
Copyright (C) 2020-2021 Graz University of Technology.
Copyright (C) 2020 mojib wali.
invenio-theme-iform is free software; you can redistribute it and/or
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.
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
- docs: adjust sphinx to flask2 #251
- update register and login view #247
Version 3.6.1 (released 2021-09-01)
- fix: add font locally and remove google dependency #242
- fix: css for ui divider #243
Version 3.6.0 (released 2021-05-08)
- config: removes i18n config #239
- revert: removes override for details,deposit page #238
- styling: changes deposit form segment color #234
- refactor: views & deposit override #235
- login_user: extended user login template #230
Version 3.4.1 (released 2021-06-04)
- global: route blueprint migrated to config-tugraz #228
Version 3.4.0 (released 2021-06-01)
- documents: adds reference guide version 2 #225
- ui: change title to data-tooltip #224
- global: migrate inveniordm v4 #226
Version 3.0.3 (released 2021-06-01)
- bugfix: removes overrides item #222
Version 3.0.2 (released 2021-05-17)
- feature: adds credits to footer #217
- ui: adapt color badges #220
- badges(ui): adds tug theme badge colors #221
Version 3.0.1 (released 2021-05-07)
- override depsit & edit #210
- ui: display access badge #212
- documents: adds missing documents #216
Version 3.0.0 (released 2021-04-30)
- Migrated to invenioRDM v3 #209
Version 2.0.9 (released 2021-04-15)
- bugfix: created field using old metadata #196
- fix: blur link on click, clickable login with TUG button #194
Version 2.0.6 (released 2021-04-8)
- bugfixes: modified config vars #191
Version 1.9.0 (released 2021-03-11)
- DOI minting #161
- Zammad contact Form #156
Version 1.0.3 (released 2020-07-10)
- firefox compatibility: centering the menu underline #40
- adds font-family #50
Version 1.0.1 (released 2020-07-08)
- Login page modified #48
Version 0.1.0 (released TBD)
- Initial public release.

View File

@@ -10,7 +10,7 @@ Types of Contributions
Report Bugs
~~~~~~~~~~~
Report bugs at https://github.com/Cian-H/invenio-theme-iform/issues.
Report bugs at https://github.com/tu-graz-library/invenio-theme-tugraz/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-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,
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,
articles, and such.
Submit Feedback
~~~~~~~~~~~~~~~
The best way to send feedback is to file an issue at
https://github.com/Cian-H/invenio-theme-iform/issues.
https://github.com/tu-graz-library/invenio-theme-tugraz/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-iform` for local development.
Ready to contribute? Here's how to set up `invenio-theme-tugraz` for local development.
1. Fork the `https://github.com/Cian-H/invenio-theme-iform.git` repo on GitHub.
1. Fork the `https://github.com/tu-graz-library/invenio-theme-tugraz.git` repo on GitHub.
2. Clone your fork locally:
.. code-block:: console
$ git clone git@github.com:your_name_here/invenio-theme-iform.git
$ git clone git@github.com:your_name_here/invenio-theme-tugraz.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-iform` for local develo
.. code-block:: console
$ mkvirtualenv invenio-theme-iform
$ cd invenio-theme-iform/
$ mkvirtualenv invenio-theme-tugraz
$ cd invenio-theme-tugraz/
$ 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/Cian-H/invenio-theme-iform/actions?query=event%3Apull_request
https://github.com/tu-graz-library/invenio-theme-tugraz/actions?query=event%3Apull_request
and make sure that the tests pass for all supported Python versions.

View File

@@ -1,8 +1,8 @@
Installation
============
invenio-theme-iform is on PyPI so all you need is:
invenio-theme-tugraz is on PyPI so all you need is:
.. code-block:: console
$ pip install invenio-theme-iform
$ pip install invenio-theme-tugraz

View File

@@ -1,7 +1,6 @@
MIT License
Copyright (C) 2020 Graz University of Technology.
Copyright (C) 2025 I-Form Advanced Research Manufacturing Research Centre.
Copyright (C) 2020 mojib wali.
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

View File

@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2020-2021 Graz University of Technology.
# Copyright (C) 2020 mojib wali.
#
# invenio-theme-iform is free software; you can redistribute it and/or
# 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.
@@ -10,7 +10,7 @@ include .dockerignore
include .editorconfig
include .tx/config
prune docs/_build
recursive-include invenio_theme_iform/translations *.po *.pot *.mo
recursive-include invenio_theme_tugraz/translations *.po *.pot *.mo
# added by check_manifest.py
include *.md
@@ -19,25 +19,21 @@ 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_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 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 tests *.py
recursive-include invenio_theme_iform *.jpg
recursive-include invenio_theme_iform *.gitkeep
recursive-include .github/workflows *.yml
include .git-blame-ignore-revs
recursive-include invenio_theme_tugraz *.jpg
recursive-include invenio_theme_tugraz *.gitkeep
recursive-include .github/workflows *.yml

View File

@@ -1,47 +1,45 @@
..
Copyright (C) 2020-2021 Graz University of Technology.
Copyright (C) 2020 Mojib wali.
invenio-theme-iform is free software; you can redistribute it and/or
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.
======================
invenio-theme-iform
invenio-theme-tugraz
======================
.. 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://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://img.shields.io/pypi/dm/invenio-theme-iform.svg
:target: https://pypi.python.org/pypi/invenio-theme-iform
.. 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/github/tag/Cian-H/invenio-theme-iform.svg
:target: https://github.com/Cian-H/invenio-theme-iform/releases
.. 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/license/Cian-H/invenio-theme-iform.svg
:target: https://github.com/Cian-H/invenio-theme-iform/blob/master/LICENSE
.. 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://readthedocs.org/projects/invenio-theme-iform/badge/?version=latest
:target: https://invenio-theme-iform.readthedocs.io/en/latest/?badge=latest
.. 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://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.
TU Graz standard theme.
Features:
* 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.
* 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.
Further documentation is available on
https://invenio-theme-iform.readthedocs.io/
Forked from https://github.com/tu-graz-library/invenio-theme-tugraz
https://invenio-theme-tugraz.readthedocs.io/

24
babel.ini Normal file
View File

@@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2020 mojib wali.
#
# 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.
# Extraction from Python source files
[python: **.py]
encoding = utf-8
# Extraction from Jinja2 templates
[jinja2: **/templates/**.html]
encoding = utf-8
extensions = jinja2.ext.autoescape, jinja2.ext.with_
# Extraction from JavaScript files
[javascript: **.js]
encoding = utf-8
extract_messages = $._, jQuery._

543
bun.lock
View File

@@ -1,543 +0,0 @@
{
"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=="],
}
}

View File

@@ -1,103 +0,0 @@
{
"nodes": {
"devenv": {
"locked": {
"dir": "src/modules",
"lastModified": 1746707904,
"owner": "cachix",
"repo": "devenv",
"rev": "fada79d97f2066c444766d039b0a62affd3e3cab",
"type": "github"
},
"original": {
"dir": "src/modules",
"owner": "cachix",
"repo": "devenv",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1733328505,
"owner": "edolstra",
"repo": "flake-compat",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"git-hooks": {
"inputs": {
"flake-compat": "flake-compat",
"gitignore": "gitignore",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1746537231,
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "fa466640195d38ec97cf0493d6d6882bc4d14969",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"git-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1745934659,
"owner": "cachix",
"repo": "devenv-nixpkgs",
"rev": "fbc071e5c11e23fba50037de37268e3d8a1858eb",
"type": "github"
},
"original": {
"owner": "cachix",
"ref": "rolling",
"repo": "devenv-nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"devenv": "devenv",
"git-hooks": "git-hooks",
"nixpkgs": "nixpkgs",
"pre-commit-hooks": [
"git-hooks"
]
}
}
},
"root": "root",
"version": 7
}

View File

@@ -1,26 +0,0 @@
{
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;
};
};
}

View File

@@ -1,4 +0,0 @@
# yaml-language-server: $schema=https://devenv.sh/devenv.schema.json
inputs:
nixpkgs:
url: github:cachix/devenv-nixpkgs/rolling

View File

@@ -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-iform.qhcp"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/invenio-theme-tugraz.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/invenio-theme-iform.qhc"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/invenio-theme-tugraz.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-iform"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/invenio-theme-iform"
@echo "# mkdir -p $$HOME/.local/share/devhelp/invenio-theme-tugraz"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/invenio-theme-tugraz"
@echo "# devhelp"
epub:

View File

@@ -1,7 +1,7 @@
..
Copyright (C) 2020-2021 Graz University of Technology.
Copyright (C) 2020 mojib wali.
invenio-theme-iform is free software; you can redistribute it and/or
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.
@@ -9,11 +9,11 @@
API Docs
========
.. automodule:: invenio_theme_iform.ext
.. automodule:: invenio_theme_tugraz.ext
:members:
Views
-----
.. automodule:: invenio_theme_iform.views
.. automodule:: invenio_theme_tugraz.views
:members:

View File

@@ -1,7 +1,7 @@
..
Copyright (C) 2020-2021 Graz University of Technology.
Copyright (C) 2020 mojib wali.
invenio-theme-iform is free software; you can redistribute it and/or
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.

View File

@@ -1,7 +1,7 @@
..
Copyright (C) 2020-2021 Graz University of Technology.
Copyright (C) 2020 mojib wali.
invenio-theme-iform is free software; you can redistribute it and/or
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.

View File

@@ -1,14 +1,14 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2020-2021 Graz University of Technology.
# Copyright (C) 2020 mojib wali.
#
# invenio-theme-iform is free software; you can redistribute it and/or
# 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.
"""Sphinx configuration."""
from invenio_theme_iform import __version__
import os
# -- General configuration ------------------------------------------------
@@ -44,9 +44,9 @@ source_suffix = ".rst"
master_doc = "index"
# General information about the project.
project = "invenio-theme-iform"
copyright = "2025, I-Form"
author = "I-Form"
project = u"invenio-theme-tugraz"
copyright = u"2020, mojib wali"
author = u"mojib wali"
# 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,15 +54,24 @@ author = "I-Form"
#
# 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 = "en"
language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
@@ -106,15 +115,15 @@ todo_include_todos = False
html_theme = "alabaster"
html_theme_options = {
"description": "invenio module for I-Form theme.",
"github_user": "Cian-H",
"github_repo": "invenio-theme-iform",
"github_button": True,
"github_banner": False,
"description": "invenio module for TUGRAZ theme.",
"github_user": "TU Graz",
"github_repo": "invenio-theme-tugraz",
"github_button": False,
"github_banner": True,
"show_powered_by": False,
"extra_nav_links": {
"invenio-theme-iform@GitHub": "https://github.com/Cian-H/invenio-theme-iform",
"invenio-theme-iform@PyPI": "https://pypi.python.org/pypi/invenio-theme-iform/",
"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/",
},
}
@@ -219,7 +228,7 @@ html_sidebars = {
# html_search_scorer = 'scorer.js'
# Output file base name for HTML help builder.
htmlhelp_basename = "invenio-theme-iform_namedoc"
htmlhelp_basename = "invenio-theme-tugraz_namedoc"
# -- Options for LaTeX output ---------------------------------------------
@@ -240,9 +249,9 @@ latex_elements = {
latex_documents = [
(
master_doc,
"invenio-theme-iform.tex",
"invenio-theme-iform Documentation",
"I-Form",
"invenio-theme-tugraz.tex",
u"invenio-theme-tugraz Documentation",
u"mojib wali",
"manual",
),
]
@@ -275,8 +284,8 @@ latex_documents = [
man_pages = [
(
master_doc,
"invenio-theme-iform",
"invenio-theme-iform Documentation",
"invenio-theme-tugraz",
u"invenio-theme-tugraz Documentation",
[author],
1,
)
@@ -294,11 +303,11 @@ man_pages = [
texinfo_documents = [
(
master_doc,
"invenio-theme-iform",
"invenio-theme-iform Documentation",
"invenio-theme-tugraz",
u"invenio-theme-tugraz Documentation",
author,
"invenio-theme-iform",
"invenio module for I-Form theme.",
"invenio-theme-tugraz",
"invenio module for TUGRAZ theme.",
"Miscellaneous",
),
]
@@ -319,8 +328,6 @@ texinfo_documents = [
# Example configuration for intersphinx: refer to the Python standard library.
intersphinx_mapping = {
"python": ("https://docs.python.org/", None),
"flask": ("https://flask.palletsprojects.com/", None),
"werkzeug": ("https://werkzeug.palletsprojects.com/", None),
# TODO: Configure external documentation references, eg:
# 'Flask-Admin': ('https://flask-admin.readthedocs.io/en/latest/', None),
}

View File

@@ -1,7 +1,7 @@
..
Copyright (C) 2020-2021 Graz University of Technology.
Copyright (C) 2020 mojib wali.
invenio-theme-iform is free software; you can redistribute it and/or
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.
@@ -9,5 +9,5 @@
Configuration
=============
.. automodule:: invenio_theme_iform.config
.. automodule:: invenio_theme_tugraz.config
:members:

View File

@@ -1,7 +1,7 @@
..
Copyright (C) 2020-2021 Graz University of Technology.
Copyright (C) 2020 mojib wali.
invenio-theme-iform is free software; you can redistribute it and/or
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.

View File

@@ -1,7 +1,7 @@
..
Copyright (C) 2020-2021 Graz University of Technology.
Copyright (C) 2020 mojib wali.
invenio-theme-iform is free software; you can redistribute it and/or
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.
@@ -12,7 +12,7 @@ User's Guide
------------
This part of the documentation will show you how to get started in using
invenio-theme-iform.
invenio-theme-tugraz.
.. toctree::
:maxdepth: 2

View File

@@ -1,7 +1,7 @@
..
Copyright (C) 2020-2021 Graz University of Technology.
Copyright (C) 2020 mojib wali.
invenio-theme-iform is free software; you can redistribute it and/or
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.

View File

@@ -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-iform.qhcp
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\invenio-theme-tugraz.qhcp
echo.To view the help file:
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\invenio-theme-iform.ghc
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\invenio-theme-tugraz.ghc
goto end
)

1
docs/requirements.txt Normal file
View File

@@ -0,0 +1 @@
-e .[docs,tests]

View File

@@ -1,7 +1,7 @@
..
Copyright (C) 2020-2021 Graz University of Technology.
Copyright (C) 2020 mojib wali.
invenio-theme-iform is free software; you can redistribute it and/or
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.
@@ -9,4 +9,4 @@
Usage
=====
.. automodule:: invenio_theme_iform
.. automodule:: invenio_theme_tugraz

View File

@@ -1,32 +0,0 @@
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" } } },
]);

View File

@@ -1,11 +0,0 @@
# -*- 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__ = "2025.6.6.2"

View File

@@ -1,14 +0,0 @@
# -*- 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")

View File

@@ -1,86 +0,0 @@
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 () {
importZammadScript();
syncLogoHover();
});
function importZammadScript() {
let scriptNode = document.createElement("hidden"); //needed for zammad script
scriptNode.id = "zammad_form_script";
scriptNode.src = "https://ub-support.tugraz.at/assets/form/form.js";
document.head.appendChild(scriptNode);
$.getScript("https://ub-support.tugraz.at/assets/form/form.js", () => {
$("#feedback-form").ZammadForm({
messageTitle: "Contact us",
showTitle: true,
messageSubmit: "Submit",
messageThankYou:
"Thank you for your message, (#%s). We will get back to you as quickly as possible!",
modal: true,
});
});
}
// 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);
// 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;
ReactDOM.render(
<MultipleOptionsSearchBar
options={searchBarOptions}
placeholder={i18next.t("Search records...")}
/>,
headerSearchbar,
);

View File

@@ -1,42 +0,0 @@
// 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.
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 form
$.getScript("https://ub-support.tugraz.at/assets/form/form.js", () => {
$("#anchor-unlock-form").ZammadForm({
attributes: [
{},
{ defaultValue: email },
{
defaultValue: `Could you unlock my account (${email}) for research-uploads?`,
// TODO: add to defaultValue once policy on how to get accepted is decided...
},
],
modal: false,
});
// focus first entry of now-shown form
document.getElementById("zammad-form-name-inline").focus();
});
}
$(function () {
// called when DOM is ready
const generateFormElement = document.getElementById("generate-unlock-form");
if (generateFormElement) {
generateFormElement.onclick = generateForm;
}
});

View File

@@ -1,165 +0,0 @@
/*
* 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;
}
}

View File

@@ -1,14 +0,0 @@
/*
* 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;
}

View File

@@ -1,16 +0,0 @@
/*
* 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;
}
}

View File

@@ -1,93 +0,0 @@
Copyright 2010, 2012, 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name Source.
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@@ -1,57 +0,0 @@
/*
* 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 a:hover {
background-color: transparent !important;
}
}
.bodytext {
font-size: 16px;
}
.spacer {
margin-top: 10px;
}
.spacer-long {
margin-top: 30px;
}

View File

@@ -1,97 +0,0 @@
/*
* 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;
}

View File

@@ -1,264 +0,0 @@
/*
* 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;
}
.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-block;
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;
}
}

View File

@@ -1,40 +0,0 @@
/*
* 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;
}
}

View File

@@ -1,17 +0,0 @@
/*
* 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.
*/
/*
* authors.html
*/
.inline-orcid {
height: 14px;
}
.text-muted {
color: @greyDark;
}

View File

@@ -1,198 +0,0 @@
/*
* 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;
}

View File

@@ -1,17 +0,0 @@
/*
* 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;
}

View File

@@ -1,28 +0,0 @@
/*
* 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;
}

View File

@@ -1,51 +0,0 @@
/*
* 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;
}

View File

@@ -1,72 +0,0 @@
/*
* 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;
// record specific
@recordVersionBackground: #f2f2f2;
@randomRecordsFrontpageArticle: #22242626;
// input
@outlineColor: #85b7d9;
// notification
@notificationBackground: #fffaf3;
@notificationBorder: #e2d5c2;

View File

@@ -1,114 +0,0 @@
# -*- 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."""
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_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_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",
}

View File

@@ -1,105 +0,0 @@
# -*- 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
from flask_login import login_required
from invenio_records_marc21.ui.theme import current_identity_can_view
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.context_processor
def inject_visibility():
def can_view_marc21():
try:
# Only check if we're in a request context and identity exists
if has_request_context() and hasattr(g, "identity") and g.identity:
return current_identity_can_view()
return False
except (AttributeError, RuntimeError):
return False
return {"can_view_marc21": can_view_marc21()}
app.extensions["invenio-theme-iform"] = self
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 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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 330 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -1 +0,0 @@
<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>

Before

Width:  |  Height:  |  Size: 583 B

View File

@@ -1 +0,0 @@
<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>

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -1,349 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="tracés_techniques"
data-name="tracés techniques"
viewBox="0 0 164.5 162"
version="1.1"
sodipodi:docname="inveniordm-tail.svg"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
inkscape:export-filename="/Users/jbenito/cernbox-dr/Services_Projects/Invenio/Stationary/Stickers/inveniordm-logo.png"
inkscape:export-xdpi="1050.47"
inkscape:export-ydpi="1050.47">
<metadata
id="metadata8884">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>inveni</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1156"
id="namedview8882"
showgrid="false"
inkscape:zoom="5.8209877"
inkscape:cx="82.25"
inkscape:cy="81"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="g10401"
showguides="true"
inkscape:guide-bbox="true"
inkscape:pagecheckerboard="true">
<sodipodi:guide
position="104.19363,108.0604"
orientation="0,1"
id="guide10153"
inkscape:locked="false" />
<sodipodi:guide
position="97.87095,97.243907"
orientation="0,1"
id="guide10155"
inkscape:locked="false" />
<sodipodi:guide
position="59.984887,98.88665"
orientation="1,0"
inkscape:locked="false"
id="guide10173" />
<sodipodi:guide
position="0.36464977,117.63145"
orientation="1,0"
inkscape:locked="false"
id="guide10175" />
<sodipodi:guide
position="12.735418,125.98478"
orientation="0,1"
inkscape:locked="false"
id="guide5142" />
<sodipodi:guide
position="26.703297,95.857988"
orientation="0,1"
inkscape:locked="false"
id="guide5144" />
</sodipodi:namedview>
<defs
id="defs8802">
<linearGradient
inkscape:collect="always"
id="linearGradient9726">
<stop
style="stop-color:#0377cd;stop-opacity:1;"
offset="0"
id="stop9722" />
<stop
style="stop-color:#fb8273;stop-opacity:1"
offset="1"
id="stop9724" />
</linearGradient>
<style
id="style8800">.cls-1{fill:#2e6b8d;}.cls-2{fill:#fff;}.cls-3{fill:none;stroke:#fff;stroke-width:1.19px;}.cls-4{isolation:isolate;}.cls-5{fill:#66c5ee;}</style>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient9726"
id="linearGradient9728"
x1="83.806313"
y1="123.8721"
x2="82.227898"
y2="14.32421"
gradientUnits="userSpaceOnUse" />
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath10405">
<rect
style="fill:#0000ff;fill-rule:evenodd;stroke-width:2.32305741"
id="rect10407"
width="84.355652"
height="160.25584"
x="280.57312"
y="-25.69305" />
</clipPath>
</defs>
<title
id="title8804">inveni</title>
<text
id="text8818" />
<g
inkscape:groupmode="layer"
id="g10401"
inkscape:label="Layer 8"
style="display:inline">
<path
style="fill:url(#linearGradient9728);fill-opacity:1"
id="path10323"
class="cls-1"
d="M 20,117 V 45 L 82.25,9 144.47,45 v 72 l -62.22,36 z"
inkscape:connector-curvature="0" />
<g
transform="rotate(-60,83.460224,80.384206)"
id="g10365"
class="cls-4"
style="isolation:isolate">
<g
class="cls-4"
id="g10363"
style="isolation:isolate">
<path
class="cls-2"
d="m 32,114.22 0.47,0.26 -1.55,2.72 -0.47,-0.27 z m 0.58,-1 0.47,0.27 -0.29,0.52 -0.47,-0.27 z"
id="path10325"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="cls-2"
d="m 33.19,114.87 0.43,0.25 -0.22,0.38 a 1.55,1.55 0 0 1 0.61,-0.11 1.41,1.41 0 0 1 0.54,0.17 0.93,0.93 0 0 1 0.55,0.86 1.65,1.65 0 0 1 -0.25,0.7 l -1,1.75 -0.47,-0.27 1,-1.72 a 1,1 0 0 0 0.16,-0.44 0.5,0.5 0 0 0 -0.3,-0.51 1.07,1.07 0 0 0 -0.28,-0.12 0.73,0.73 0 0 0 -0.46,0 0.76,0.76 0 0 0 -0.31,0.2 2.27,2.27 0 0 0 -0.27,0.39 l -0.81,1.43 -0.46,-0.26 z"
id="path10327"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="cls-2"
d="m 36.31,116.65 -0.54,2.64 2,-1.79 0.51,0.29 -2.59,2.14 -0.48,-0.27 0.55,-3.31 z"
id="path10329"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="cls-2"
d="m 40.33,119.05 a 1.18,1.18 0 0 1 0.21,0.59 1.54,1.54 0 0 1 -0.09,0.59 3.86,3.86 0 0 1 -0.31,0.62 l -2,-1.13 a 1.31,1.31 0 0 0 -0.18,0.78 0.71,0.71 0 0 0 0.41,0.57 0.83,0.83 0 0 0 0.71,0.09 1,1 0 0 0 0.35,-0.22 l 0.45,0.25 a 0.93,0.93 0 0 1 -0.31,0.27 1.55,1.55 0 0 1 -0.4,0.18 1.28,1.28 0 0 1 -0.67,0 3.09,3.09 0 0 1 -0.39,-0.17 1.34,1.34 0 0 1 -0.65,-0.87 1.67,1.67 0 0 1 0.25,-1.24 1.84,1.84 0 0 1 1,-0.86 1.33,1.33 0 0 1 1.16,0.12 1.47,1.47 0 0 1 0.46,0.43 z m -0.45,1.17 a 1.27,1.27 0 0 0 0.14,-0.55 0.75,0.75 0 0 0 -0.43,-0.69 0.79,0.79 0 0 0 -0.65,-0.07 1,1 0 0 0 -0.56,0.45 z"
id="path10331"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="cls-2"
d="m 41.59,119.67 0.43,0.25 -0.22,0.39 a 1.39,1.39 0 0 1 0.61,-0.11 1.26,1.26 0 0 1 0.54,0.17 0.93,0.93 0 0 1 0.55,0.86 1.57,1.57 0 0 1 -0.25,0.69 l -1,1.76 -0.47,-0.27 1,-1.72 a 1.19,1.19 0 0 0 0.15,-0.45 0.52,0.52 0 0 0 -0.3,-0.51 0.77,0.77 0 0 0 -0.28,-0.11 0.73,0.73 0 0 0 -0.46,0 0.86,0.86 0 0 0 -0.31,0.19 2.26,2.26 0 0 0 -0.27,0.4 L 40.5,122.64 40,122.4 Z"
id="path10333"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="cls-2"
d="m 44.48,121.34 0.46,0.27 -1.55,2.72 -0.46,-0.27 z m 0.58,-1 0.47,0.26 -0.3,0.52 -0.46,-0.26 z"
id="path10335"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="cls-2"
d="m 47.46,123.4 a 1.58,1.58 0 0 1 -0.23,1.24 2.05,2.05 0 0 1 -0.94,0.91 1.32,1.32 0 0 1 -1.23,-0.14 1.27,1.27 0 0 1 -0.67,-0.89 1.73,1.73 0 0 1 0.25,-1.21 1.87,1.87 0 0 1 1,-0.89 1.35,1.35 0 0 1 1.17,0.12 1.42,1.42 0 0 1 0.65,0.86 z m -1.32,1.65 a 2.08,2.08 0 0 0 0.61,-0.67 1.69,1.69 0 0 0 0.23,-0.69 0.78,0.78 0 0 0 -0.44,-0.76 0.75,0.75 0 0 0 -0.79,0 1.68,1.68 0 0 0 -0.63,0.66 1.53,1.53 0 0 0 -0.23,0.84 0.78,0.78 0 0 0 0.44,0.63 0.71,0.71 0 0 0 0.81,-0.01 z"
id="path10337"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="cls-2"
d="m 47.74,125.68 a 0.76,0.76 0 0 0 -0.08,0.42 0.83,0.83 0 0 0 0.49,0.57 1,1 0 0 0 0.52,0.15 0.4,0.4 0 0 0 0.39,-0.23 0.32,0.32 0 0 0 0,-0.35 1.68,1.68 0 0 0 -0.32,-0.36 l -0.32,-0.3 a 2.19,2.19 0 0 1 -0.41,-0.5 0.66,0.66 0 0 1 0,-0.68 0.9,0.9 0 0 1 0.64,-0.47 1.29,1.29 0 0 1 0.9,0.2 1.18,1.18 0 0 1 0.69,0.87 0.9,0.9 0 0 1 -0.11,0.59 l -0.43,-0.24 a 0.7,0.7 0 0 0 0,-0.35 0.86,0.86 0 0 0 -0.46,-0.5 0.76,0.76 0 0 0 -0.46,-0.13 0.34,0.34 0 0 0 -0.29,0.18 0.39,0.39 0 0 0 0,0.39 1.72,1.72 0 0 0 0.24,0.29 l 0.27,0.25 a 2.69,2.69 0 0 1 0.54,0.61 0.7,0.7 0 0 1 -0.05,0.71 1,1 0 0 1 -0.64,0.47 1.37,1.37 0 0 1 -1,-0.22 1.33,1.33 0 0 1 -0.71,-0.78 1.19,1.19 0 0 1 0.11,-0.84 z"
id="path10339"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="cls-2"
d="m 53,126.55 a 1.61,1.61 0 0 1 -0.22,1.24 2.15,2.15 0 0 1 -0.94,0.91 1.34,1.34 0 0 1 -1.24,-0.14 1.3,1.3 0 0 1 -0.67,-0.89 1.74,1.74 0 0 1 0.26,-1.21 1.86,1.86 0 0 1 1,-0.9 1.34,1.34 0 0 1 1.16,0.13 1.36,1.36 0 0 1 0.65,0.86 z m -1.32,1.65 a 2,2 0 0 0 0.61,-0.67 1.69,1.69 0 0 0 0.23,-0.69 0.78,0.78 0 0 0 -0.44,-0.76 0.75,0.75 0 0 0 -0.79,0 1.75,1.75 0 0 0 -0.63,0.66 1.51,1.51 0 0 0 -0.22,0.84 0.76,0.76 0 0 0 0.43,0.63 0.72,0.72 0 0 0 0.77,-0.01 z"
id="path10341"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="cls-2"
d="m 54.73,126.09 a 0.83,0.83 0 0 1 0.75,0.12 l 0.09,0.05 0.1,0.07 -0.24,0.42 -0.1,-0.07 h -0.06 c -0.14,-0.08 -0.24,-0.09 -0.31,0 a 2.4,2.4 0 0 0 -0.36,0.53 l 0.46,0.26 -0.21,0.36 -0.46,-0.26 -1.34,2.36 -0.45,-0.26 1.34,-2.36 -0.38,-0.21 0.21,-0.37 0.38,0.22 0.24,-0.43 a 1.08,1.08 0 0 1 0.34,-0.43 z"
id="path10343"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="cls-2"
d="m 56,126.92 0.46,0.27 -0.46,0.81 0.44,0.25 -0.21,0.37 -0.44,-0.25 -1,1.79 a 0.23,0.23 0 0 0 0,0.24 0.52,0.52 0 0 0 0.17,0.13 h 0.07 0.09 l -0.21,0.37 -0.18,-0.06 -0.19,-0.1 c -0.21,-0.12 -0.33,-0.26 -0.34,-0.41 a 0.77,0.77 0 0 1 0.13,-0.49 l 1,-1.81 -0.37,-0.21 0.21,-0.38 0.37,0.21 z"
id="path10345"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="cls-2"
d="m 57.15,128.58 -0.7,2.45 1.76,-1.84 0.51,0.29 -0.72,2.44 1.78,-1.82 0.46,0.27 -2.35,2.27 -0.47,-0.27 0.65,-2.43 -1.75,1.81 -0.47,-0.28 0.77,-3.18 z"
id="path10347"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="cls-2"
d="m 61.55,132.53 a 0.28,0.28 0 0 0 0.28,0 0.33,0.33 0 0 0 0.13,-0.15 0.44,0.44 0 0 0 0,-0.44 1.09,1.09 0 0 0 -0.41,-0.38 0.59,0.59 0 0 0 -0.91,0.16 l -0.43,-0.24 a 0.91,0.91 0 0 1 0.73,-0.52 1.56,1.56 0 0 1 0.84,0.22 1.64,1.64 0 0 1 0.67,0.63 0.73,0.73 0 0 1 0,0.74 l -0.9,1.57 a 0.25,0.25 0 0 0 0,0.14 0.24,0.24 0 0 0 0.1,0.11 h 0.07 0.09 l -0.19,0.34 -0.19,-0.06 a 0.56,0.56 0 0 1 -0.15,-0.08 0.42,0.42 0 0 1 -0.25,-0.36 0.75,0.75 0 0 1 0.06,-0.3 1.29,1.29 0 0 1 -0.58,0.09 1.34,1.34 0 0 1 -0.66,-0.2 1,1 0 0 1 -0.48,-0.58 0.85,0.85 0 0 1 0.08,-0.71 0.87,0.87 0 0 1 0.58,-0.46 1.3,1.3 0 0 1 0.76,0.1 z m -1.67,0.69 a 0.62,0.62 0 0 0 0.27,0.31 1.21,1.21 0 0 0 0.54,0.15 0.72,0.72 0 0 0 0.72,-0.39 l 0.21,-0.37 a 0.63,0.63 0 0 1 -0.26,0 l -0.29,-0.1 -0.3,-0.12 a 1.28,1.28 0 0 0 -0.43,-0.11 0.46,0.46 0 0 0 -0.43,0.26 0.41,0.41 0 0 0 -0.03,0.37 z"
id="path10349"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="cls-2"
d="m 63.61,132.28 0.44,0.25 -0.27,0.47 a 1.4,1.4 0 0 1 0.45,-0.19 0.8,0.8 0 0 1 0.59,0.08 h 0.05 L 65,133 l -0.27,0.48 -0.07,-0.05 h -0.08 a 0.76,0.76 0 0 0 -0.65,-0.08 0.92,0.92 0 0 0 -0.48,0.41 l -0.9,1.57 -0.45,-0.26 z"
id="path10351"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="cls-2"
d="m 67,134.3 a 1.18,1.18 0 0 1 0.21,0.59 1.24,1.24 0 0 1 -0.09,0.59 3,3 0 0 1 -0.3,0.62 l -2,-1.13 a 1.4,1.4 0 0 0 -0.19,0.78 0.75,0.75 0 0 0 0.42,0.57 0.8,0.8 0 0 0 0.7,0.09 0.82,0.82 0 0 0 0.35,-0.23 l 0.46,0.26 a 1,1 0 0 1 -0.32,0.27 1.11,1.11 0 0 1 -0.39,0.17 1.27,1.27 0 0 1 -0.67,0 2,2 0 0 1 -0.4,-0.18 1.29,1.29 0 0 1 -0.64,-0.86 1.71,1.71 0 0 1 0.24,-1.24 1.8,1.8 0 0 1 1,-0.86 1.33,1.33 0 0 1 1.16,0.12 1.47,1.47 0 0 1 0.46,0.44 z m -0.44,1.17 a 1.44,1.44 0 0 0 0.14,-0.55 0.76,0.76 0 0 0 -0.44,-0.69 0.78,0.78 0 0 0 -0.65,-0.07 1,1 0 0 0 -0.56,0.45 z"
id="path10353"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="cls-2"
d="m 67.1,137.16 0.53,0.31 -0.31,0.55 -0.54,-0.3 z"
id="path10355"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="cls-2"
d="m 71.5,137.15 a 1.57,1.57 0 0 1 -0.23,1.24 2,2 0 0 1 -0.94,0.91 1.31,1.31 0 0 1 -1.23,-0.13 1.27,1.27 0 0 1 -0.67,-0.89 1.73,1.73 0 0 1 0.25,-1.21 1.9,1.9 0 0 1 1,-0.9 1.3,1.3 0 0 1 1.16,0.13 1.42,1.42 0 0 1 0.66,0.85 z m -1.32,1.66 a 2,2 0 0 0 0.6,-0.68 1.51,1.51 0 0 0 0.24,-0.69 0.78,0.78 0 0 0 -0.45,-0.75 0.74,0.74 0 0 0 -0.78,0 1.78,1.78 0 0 0 -0.63,0.67 1.52,1.52 0 0 0 -0.23,0.83 0.79,0.79 0 0 0 0.43,0.64 0.74,0.74 0 0 0 0.82,-0.02 z"
id="path10357"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="cls-2"
d="m 72.59,137.42 0.43,0.25 -0.26,0.47 a 1.3,1.3 0 0 1 0.45,-0.19 0.8,0.8 0 0 1 0.59,0.08 v 0 a 0.37,0.37 0 0 1 0.1,0.07 l -0.27,0.48 -0.07,-0.05 -0.08,-0.05 a 0.75,0.75 0 0 0 -0.66,-0.08 0.94,0.94 0 0 0 -0.47,0.41 l -0.9,1.57 -0.46,-0.26 z"
id="path10359"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="cls-2"
d="m 75.76,139.38 a 1.42,1.42 0 0 1 0.12,0.41 l 0.19,-0.34 0.43,0.24 -1.42,2.48 a 1.93,1.93 0 0 1 -0.62,0.73 1.24,1.24 0 0 1 -1.39,-0.05 1.54,1.54 0 0 1 -0.62,-0.62 0.86,0.86 0 0 1 0,-0.81 l 0.46,0.26 a 0.58,0.58 0 0 0 0,0.36 0.78,0.78 0 0 0 0.4,0.43 0.76,0.76 0 0 0 0.9,0 2.38,2.38 0 0 0 0.53,-0.73 0.94,0.94 0 0 1 -0.5,0.12 1.36,1.36 0 0 1 -1.16,-0.94 1.58,1.58 0 0 1 0.26,-1.23 1.8,1.8 0 0 1 0.94,-0.88 1.19,1.19 0 0 1 1,0.07 1.06,1.06 0 0 1 0.48,0.5 z m -0.22,0.52 a 0.78,0.78 0 0 0 -0.39,-0.54 0.75,0.75 0 0 0 -0.92,0.07 2.24,2.24 0 0 0 -0.45,0.58 1.31,1.31 0 0 0 -0.22,0.81 0.73,0.73 0 0 0 0.37,0.53 0.8,0.8 0 0 0 0.94,0 1.71,1.71 0 0 0 0.45,-0.53 1.28,1.28 0 0 0 0.22,-0.92 z"
id="path10361"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
</g>
</g>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:condensed;font-size:43.37393951px;line-height:1.25;font-family:'DIN Condensed';-inkscape-font-specification:'DIN Condensed, Bold Condensed';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#fb8273;fill-opacity:1;stroke:none;stroke-width:8.78208637;stroke-miterlimit:4;stroke-dasharray:none"
x="55.735847"
y="101.25121"
id="text10369"
transform="scale(1.0429084,0.95885698)"><tspan
y="101.25121"
x="55.735847"
id="tspan10367"
sodipodi:role="line"
style="stroke-width:8.78208637">RDM</tspan></text>
<g
transform="matrix(0.43046721,0,0,0.43046721,-304.9125,-41.41547)"
id="g10385">
<g
id="g10377"
transform="translate(474.21725,226.44114)">
<g
id="g10375">
<g
id="g10373">
<path
inkscape:connector-curvature="0"
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"
id="path10371"
style="fill:#ffffff" />
</g>
</g>
</g>
<g
id="g10383"
transform="matrix(0.38742049,0,0,0.38742049,670.93796,251.12579)">
<path
inkscape:connector-curvature="0"
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"
id="path10379"
style="fill:#ffffff" />
<path
inkscape:connector-curvature="0"
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"
id="path10381"
style="fill:none;stroke:#ffffff" />
</g>
</g>
<circle
r="4.3097267"
cy="59.329391"
cx="114.42316"
id="circle10387"
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2.26771665;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#ffffff;stroke-width:0.16677181"
x="60.269562"
id="rect10389"
height="10.714088"
width="2.3428104"
y="54.011116" />
<polygon
transform="matrix(0.16677181,0,0,0.16677181,60.269562,52.640917)"
style="fill:#ffffff"
id="polygon10391"
points="101.318,8.433 113.62,36.814 125.814,8.325 140.814,8.325 113.512,72.427 86.21,8.433 " />
<polygon
transform="matrix(0.16677181,0,0,0.16677181,60.269562,52.640917)"
style="fill:#ffffff"
id="polygon10393"
points="218.848,43.075 254.537,74.124 254.537,7.961 239.34,7.961 239.34,36.974 203.65,8.076 203.65,72.318 218.848,72.318 " />
<polygon
transform="matrix(0.16677181,0,0,0.16677181,60.269562,52.640917)"
style="fill:#ffffff"
id="polygon10395"
points="27.65,8.242 27.65,72.484 42.848,72.484 42.848,43.241 78.537,74.29 78.537,8.127 63.34,8.127 63.34,37.14 " />
<rect
style="fill:#ffffff;stroke-width:0.16677181"
id="rect10397"
height="10.713921"
width="2.342977"
y="54.042175"
x="104.96441" />
<polygon
transform="matrix(0.16677181,0,0,0.16677181,60.269562,52.640917)"
style="fill:#ffffff"
id="polygon10399"
points="166.976,20.927 192.991,20.927 192.991,7.974 149.193,7.974 149.193,72.079 193.649,72.079 193.649,59.346 166.976,59.346 166.976,45.624 191.783,45.624 191.783,32.672 166.976,32.672 " />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -1,40 +0,0 @@
<?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>

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 321 KiB

View File

@@ -1,3 +0,0 @@
<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>

Before

Width:  |  Height:  |  Size: 256 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -1 +0,0 @@
<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>

Before

Width:  |  Height:  |  Size: 510 B

View File

@@ -1 +0,0 @@
.zed

View File

@@ -1,13 +0,0 @@
{#
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 %}

View File

@@ -1,134 +0,0 @@
{#
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('invenio_theme_iform.static', filename='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('invenio_theme_iform.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>

View File

@@ -1,32 +0,0 @@
{%- if config.ACCOUNTS %}
{%- if not current_user.is_authenticated %}
{%- if config.SECURITY_REGISTERABLE %}
<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>
<div class="short-menu-right-button">
<a class="dropdown-item no-decoration" href="{{ url_for_security('logout') }}"
>Sign out</a
>
</div>
{%- endif %}
{%- endif %}
{%- endif %}

View File

@@ -1,111 +0,0 @@
{#
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('invenio_theme_iform.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 %}

View File

@@ -1,108 +0,0 @@
{#
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('invenio_theme_iform.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 %}

View File

@@ -1,108 +0,0 @@
{#
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('inveino_theme_iform.static', filename='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>

View File

@@ -1,40 +0,0 @@
{#
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> &mdash; Your research results are permanently available.</li>
<li>
<strong>Trusted</strong> &mdash; A service from I-Form, based on software developed by
CERN.
</li>
<li>
<strong>Citeable</strong> &mdash; Every upload is assigned a Digital Object Identifier
(DOI).
</li>
<li>
<strong>No waiting time</strong> &mdash; Uploads are made available online as soon as
you hit publish. Your DOI is registered within seconds.
</li>
<li>
<strong>Open or closed</strong> &mdash; You determine the visibility of your uploads. A
restricted access mode is possible.
</li>
<li>
<strong>Versioning</strong> &mdash; Easily update your dataset with the versioning
feature.
</li>
<li>
<strong>Usage statistics</strong> &mdash; All uploads display standards compliant usage
statistics. <a href="help/statistics">(More)</a>
</li>
</ul>
</div>

View File

@@ -1,25 +0,0 @@
{#
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>

View File

@@ -1,17 +0,0 @@
{#
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:{{ config.THEME_IFORM_SUPPORT_EMAIL }}">our support</a> to
let us know about this error.
</p>
{# TODO: provide g.sentry_event_id here once sentry is configured, cf. invenio_theme/500.html #}
{% endblock message %}

View File

@@ -1,161 +0,0 @@
{#
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>Connected Services</h2>
<div class="ui list">
<div class="item">
<a href="https://pure.tugraz.at" title="PURE" target="_blank">
PURE <i class="external alternate icon"></i>
</a>
</div>
<div class="item">
<a href="http://campusonline.tugraz.at" title="CAMPUS online" target="_blank">
CampusOnline <i class="external alternate icon"></i>
</a>
</div>
<div class="item">
<a href="https://rdm.i-form.ie" title="Research Data Management" target="_blank">
Research Data Management <i class="external alternate icon"></i>
</a>
</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('invenio_theme_iform.static', filename='images/inveniordm-tail.svg') }}"
alt="InvenioRDM logo"
style="display: block; height: 90px; margin-top: 8px;"
/>
</a>
</div>
</div>
<div class="column">
<div class="logos">
<strong>Funded by</strong>
<a
href="https://www.sfi.ie"
target="_blank"
title="Science Foundation Ireland"
>
<img
src="{{ url_for('invenio_theme_iform.static', filename='images/SFI_logo.png') }}"
alt="Science Foundation Ireland"
style="display: block; height: auto; margin-top: 15px; width: 230px;"
/>
</a>
</div>
</div>
</div>
</div>
</div>
</footer>

View File

@@ -1,72 +0,0 @@
{#
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>Frontpage: Description for research results</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>Frontpage: Description for 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>Educational Resources</h2>
<div>Frontpage: Description for open educational resources</div>
<ul>
{#
<li>
<a href="oer/browse">Browse</a>
</li>
#}
<li>
<a href="oer/search">Search for educational resourses</a>
</li>
<li>
<a href="oer/uploads">Upload educational resources</a>
</li>
</ul>
</div>
</div>
</div>
</div>

View File

@@ -1,70 +0,0 @@
{#
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.
#}
{% 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 %}
<div>
<header>
{%- block site_banner %}
{% from 'invenio_banners/banner.html' import banner %}
{{ banner() }}
{%- endblock site_banner %}
{%- block navbar %}
<nav>
{%- block navbar_header %}
{%- include "invenio_theme_iform/navbar.html" %}
{%- endblock navbar_header %}
<div class="ui container">
<div class="ui grid stackable container">
<div class="three column row centered" style="padding-bottom: 0;">
<div class="two wide column main-menu-entry">
<a
href="{{ url_for('invenio_theme_iform.index') }}"
title="Home"
class="no-decoration"
>
<span class="home-inline">
{%- include "invenio_theme_iform/home_icon.svg" %} Home
</span>
</a>
</div>
<div class="two wide column main-menu-entry">
<a role="menuitem" href="/communities" class="no-decoration"
>Communities</a
>
</div>
<div class="two wide column main-menu-entry">
<a role="menuitem" href="/me/overview" class="no-decoration"
>Dashboard</a
>
</div>
</div>
<div id="margin-divider" class="ui divider main-menu-underline-line"></div>
</div>
<div class="spacer"></div>
</div>
</nav>
{%- endblock navbar %}
{%- block flashmessages %}
{%- from "invenio_theme/macros/messages.html" import flashed_messages with context -%}
{{ flashed_messages() }}
{%- endblock %}
</header>
</div>

View File

@@ -1 +0,0 @@
<svg id="int-menu-q-home-icon" width="35.969" height="36.997" enable-background="new 0 0 595.28 841.89" shape-rendering="geometricPrecision" version="1.1" viewBox="0 0 35.969 36.997" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><polyline id="home-polyline" transform="translate(-279.72 -403.28)" points="282.72 437.28 282.72 414.77 297.71 406.69 312.69 414.77 312.69 437.28" style="fill:none;stroke-linecap:square;stroke-width:4;stroke:#069f4b"></polyline></svg>

Before

Width:  |  Height:  |  Size: 474 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -1,29 +0,0 @@
{#
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.
#}
{%- extends config.INVENIO_THEME_IFORM_BASE_TEMPLATE %}
{%- block javascript %}
{{ webpack['invenio-theme-iform-js.js'] }}
{%- endblock javascript %}
{%- block page_body %}
<div class="ui container">
<div class="ui divider hidden"></div>
<div class="ui stackable grid">
{% include "invenio_theme_iform/frontpage_overview.html" %}
{% include "invenio_theme_iform/recent_uploads.html" %}
<!---segments-->
<div class="six wide column">
{% include "invenio_theme_iform/contact_us.html" %}
{% include "invenio_theme_iform/benefits.html" %}
</div>
</div>
</div>
{%- endblock %}

View File

@@ -1,39 +0,0 @@
{#
Copyright (C) 2020 Zenodo
Copyright (C) 2020 TUGRAZ
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.
#}
{%- macro creators (authors_list) %}
{%- for creators in authors_list %}
{%- if creators.identifiers and creators.identifiers.orcid %}
<a href="{{ creators.identifiers.orcid|pid_url('orcid') }}" target="_blank"
><img
class="inline-orcid"
src="{{ url_for('invenio_theme_iform.static', filename='extra/orcid.png') }}"
/></a>
{%- endif %}
<span
class="text-muted"
{% if creators.affiliations %}{% for affiliation in creators.affiliations %}
data-tooltip="{{ affiliation.name }}" data-inverted=""
{%- endfor %}{% endif %}
>{{ creators.person_or_org.name }}</span
>
{% if not loop.last %};{% endif %}
{%- endfor %}
{%- endmacro %}
<!--TODO: contributers-->
{%- macro contributors(contributors_list) %}
{%- for group in contributors_list|groupby('type') %}
<h5>{{ group.grouper }}(s)</h5>
{{ authors(group.list) }}
{%- endfor %}
{%- endmacro %}

View File

@@ -1,98 +0,0 @@
{#
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.
#}
{%
set options = [
{
"key": "records",
"text": "All",
"value": url_for("invenio_search_ui.search"),
"title": "repo",
},{
"key": "rdm",
"text": "Research Results",
"value": "/records/search",
"title": "Research Data",
},{
"key": "marc21",
"text": "Publications",
"value": url_for("invenio_records_marc21.search"),
"title": "publication",
},{
"key": "lom",
"text": "Educational Resources",
"value": url_for("invenio_records_lom.search"),
"title": "oer",
}
]
%}
<div class="ui container">
<div class="short-menu" id="all-menu-top-table">
<div class="short-menu-left">
<div id="all-menu-top-left-item">
<div class="short-menu-left-search">
<div style="display: inline-block;">
<div class="item p-0 search-bar rel-mr-1">
<!-- prettier-ignore-attribute data-options -->
<div id="header-search-bar" data-options='{{ options | tojson }}'></div>
</div>
</div>
</div>
</div>
</div>
<div class="short-menu-right">
{%- block navbar_right %}
{%- include config.THEME_HEADER_LOGIN_TEMPLATE %}
{%- endblock navbar_right %}
</div>
</div>
<!----END MENU------------------------------------------------------------->
<div class="ui grid" id="main-logo">
<!-- Left -->
<div class="left floated left aligned six wide column" id="repo-logo">
<div class="inline-elements">
<div class="repo-img">{%- include "invenio_theme_iform/repository_logo.svg" %}</div>
<div class="affiliation-text">
<a
title="Home"
href="{{ url_for('invenio_theme_iform.index') }}"
class="no-decoration"
>
I-FORM
<br />
RESEARCH DATA
<br />
REPOSITORY
</a>
</div>
</div>
</div>
<!-- Right -->
<div class="right floated right aligned six wide column">
<div class="affiliation-logo" id="int-header-logo">
<div class="affiliation-logo-claim">
<div class="affiliation-logo-claim-single">Excellence</div>
<div class="affiliation-logo-claim-single">Through</div>
<div class="affiliation-logo-claim-single">Expertise</div>
</div>
<a
href="https://www.i-form.ie"
title="I-Form Home"
target="_blank"
class="no-decoration"
>
{%- include "invenio_theme_iform/iform_logo.svg" %}
</a>
</div>
</div>
</div>
</div>

View File

@@ -1,154 +0,0 @@
{#
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.
#}
{%- extends config.INVENIO_THEME_IFORM_BASE_TEMPLATE %}
{%- set active_dashboard_menu_item = "overview" %}
{%- set title = "Overview" %}
{% block javascript %}
{{ super() }}
{{ webpack['invenio-theme-iform-unlock.js'] }}
{% endblock javascript %}
{%- block page_body %}
{%- block user_dashboard_header %}
{% include "invenio_app_rdm/users/header.html" %}
{%- endblock user_dashboard_header %}
<div class="ui container rel-mt-2">
<h2>Overview</h2>
<div class="ui five column stackable grid overview">
{% if is_iform_authenticated %}
{# 3 columns: Research-Uploads, Communities, and Requests #}
<div class="column">
<div class="ui segment" style="height: 480px">
<h2>Research Results</h2>
<a class="ui left floated image" href="/me/uploads">
<img
width="400px"
alt="Research Results"
src="{{ url_for('invenio_theme_iform.static', filename='images/diamond.svg') }}"
/>
</a>
<div class="ui right floated text">
Overview: Description for research results
</div>
</div>
</div>
<div class="column">
<div class="ui segment" style="height: 480px">
<h2>Communities</h2>
<a class="ui left floated image" href="/me/communities">
<img
width="400px"
alt="Communities"
src="{{ url_for('invenio_theme_iform.static', filename='images/group-discussion.svg') }}"
/>
</a>
<div>Overview: Description of Communities</div>
</div>
</div>
<div class="column">
<div class="ui segment" style="height: 480px">
<h2>Requests</h2>
<a class="ui left floated image" href="/me/requests">
<img
width="400px"
alt="Requests"
src="{{ url_for('invenio_theme_iform.static', filename='images/umbrella.svg') }}"
/>
</a>
<div>Overview: Description of Requests</div>
</div>
</div>
{% else %}
{# not is_iform_authenticated #}
{# 1 column: greyed out Research-Uploads #}
<div class="column">
{# a modal's HTML can be placed anywhere, so I placed it here, right before it's used #}
<div class="ui small modal" id="iform-unlock-modal">
<div class="header">On unlocking research uploads</div>
<div class="content">
<p>
To ensure a well-curated repository, new users need to get unlocked
before being allowed to upload. Once unlocked, you can upload your
research, request its inclusion in a community, generate a DOI for
it, and publish it.
{# TODO: extra lines on policy about who gets accepted how for Research-Uploads #}
</p>
<div id="anchor-unlock-form">
{# will be replaced with ZammadForm when generating it #}
<button
class="ui fluid button"
onclick="
$('#iform-unlock-modal')
.modal('hide')"
>
Got it!
</button>
<button id="generate-unlock-form" class="ui fluid button">
Request unlocking
</button>
</div>
</div>
</div>
{# actual column contents start here #}
<div class="ui disabled segment" style="height: 480px">
<h2>Research Results</h2>
<div
class="ui left floated image"
style="cursor: pointer"
onclick="
$('#iform-unlock-modal')
.modal('show')"
>
<img
width="400px"
alt="Research Results"
src="{{ url_for('invenio_theme_iform.static', filename='images/diamond.svg') }}"
/>
</div>
<div class="ui right floated text">
Overview: Description for research results
</div>
</div>
</div>
{% endif %}
{% if can_view_marc21 %}
<div class="column">
<div class="ui segment" style="height: 480px">
<h2>Publications</h2>
<a class="ui left floated image" href="/publications/uploads">
<img
width="400px"
alt="Publications"
src="{{ url_for('invenio_theme_iform.static', filename='images/library-book-svgrepo-com.svg') }}"
/>
</a>
<div>Overview: Description for publications</div>
</div>
</div>
{% endif %}
<div class="column">
<div class="ui segment" style="height: 480px">
<h2>Educational Resources</h2>
<a class="ui left floated image" href="/oer/uploads">
<img
width="400px"
alt="Open Educational Resources"
src="{{ url_for('invenio_theme_iform.static', filename='images/play.svg') }}"
/>
</a>
<div>Overview: Description for open educational resources</div>
</div>
</div>
</div>
</div>
{%- endblock %}

View File

@@ -1,89 +0,0 @@
{#
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.
#}
<!---Recent uploads-->
<div class="ten wide column random-records-frontpage">
<h2>Recent uploads</h2>
{% if not records %}
<div class="ui centered grid">
<p style="font-size: medium;">There are no public records to show.</p>
</div>
{% endif %}
{%- for r in records %}
{%- set creation_date = r.created | from_isodatetime -%}
{%- set record_url = r.original.view %}
<article>
<div class="badges">
{# Publication date/Version badge #}
<span class="ui label blue" data-tooltip="Publication date" data-inverted="">
{{ r.created_date_l10n_long }}
</span>
{# Resource type badge #}
{% if r.metadata.types | length > 0 %}
<span class="ui label grey" data-tooltip="Resource type" data-inverted="">
{{ r.metadata.types[0] }}
</span>
{% endif %}
<span
class="ui label access-status {{ r.access_status.id }}"
data-tooltip="{{ r.access_status.description_l10n }}"
data-inverted=""
>
<i class="icon {{ r.access_status.icon }}"></i>
{{ r.access_status.title_l10n }}
</span>
<span class="ui label schema" data-tooltip="Schema Type" data-inverted="">
{{ r.original.schema_l10n }}
</span>
</div>
<h4>
<a href="{{ record_url }}" class="no-decoration"> {{ r.metadata.titles[0] }} </a>
</h4>
<p>
{%- for creator in r.metadata.creators %}
<span>{{ creator }}</span>
{%- endfor %}
</p>
<p class="hidden-xs">
<a href="{{ record_url }}" class="no-decoration">
{{ r.metadata.descriptions | join(" ") | striptags | truncate(300) }}
</a>
</p>
<div class="ui">
{%- for subject in r.metadata.subjects %}
<span class="ui tiny label">{{ subject }}</span>
{%- endfor %}
<div>
<small>
{#
{% trans user=userprofile, date=creation_date | dateformat("long")%}
Uploaded on {{date}}
{% endtrans %}
#}
</small>
</div>
</div>
</article>
{%- endfor %}
{% if records %}
<div class="ui centered grid">
<a class="ui button more" href="{{ url_for('invenio_search_ui.search') }}">More</a>
</div>
{%- endif %}
</div>

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.1 KiB

View File

@@ -1,142 +0,0 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2020-2025 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 functools import wraps
from typing import Dict
from flask import Blueprint, Flask, current_app, g, redirect, render_template, url_for
from flask_login import current_user, login_required
from invenio_rdm_records.proxies import current_rdm_records
from invenio_records_global_search.resources.serializers import (
GlobalSearchJSONSerializer,
)
from invenio_users_resources.proxies import current_user_resources
from opensearch_dsl.utils import AttrDict
from .search import FrontpageRecordsSearch
def create_blueprint(app: Flask) -> Blueprint:
"""Create blueprint."""
blueprint = Blueprint(
"invenio_theme_iform",
__name__,
template_folder="templates",
static_folder="static",
)
routes = app.config.get("THEME_IFORM_ROUTES")
blueprint.add_url_rule(routes["records-search"], view_func=records_search)
blueprint.add_url_rule(routes["index"], view_func=index)
blueprint.add_url_rule(routes["overview"], view_func=overview)
# base case for any otherwise unhandled exception
app.register_error_handler(Exception, default_error_handler)
blueprint.add_app_template_filter(make_dict_like)
blueprint.add_app_template_filter(cast_to_dict)
return blueprint
def records_search():
"""Search page ui.
With this route it is possible to override the default route
"/search" to get to the rdm-records search. The default route will
be overriden by the global search with changing the
SEARCH_UI_SEARCH_TEMPLATE variable to the value
"invenio_records_global_search/search/search.html" in the
invenio.cfg file.
"""
return render_template("invenio_app_rdm/records/search.html")
def current_identity_is_iform_authenticated() -> bool:
"""Checks whether current identity has iform-authentication.
NOTE: Default permission-policy has no field for `iform_authenticated`.
Should the field not exist, the service checks against admin-permissions instead.
You probably meant to configure a custom permission-policy.
"""
rdm_service = current_rdm_records.records_service
return rdm_service.check_permission(g.identity, "iform_authenticated")
def require_iform_authenticated(view_func):
"""Decorator for guarding view-functions against unauthenticated users.
Redirects un-authenticated users to their personal dashboard's overview.
"""
@wraps(view_func)
def decorated_view(*args, **kwargs):
if not current_identity_is_iform_authenticated():
return redirect(url_for("invenio_theme_iform.overview"))
return view_func(*args, **kwargs)
return decorated_view
@login_required
def overview():
"""Overview."""
url = current_user_resources.users_service.links_item_tpl.expand(g.identity, current_user)[
"avatar"
]
is_iform_authenticated = current_identity_is_iform_authenticated()
return render_template(
"invenio_theme_iform/overview.html",
is_iform_authenticated=is_iform_authenticated,
user_avatar=url,
)
def make_dict_like(value: str, key: str) -> Dict[str, str]:
"""Convert the value to a dict like structure.
in the form of a key -> value pair.
"""
return {key: value}
def cast_to_dict(attr_dict):
"""Return the dict structure of AttrDict variable."""
return AttrDict.to_dict(attr_dict)
def default_error_handler(e: Exception):
"""Called when an otherwise unhandled error occurs."""
# TODO: use sentry here once it's configured
# information we might want to log for debugging the error:
# - `flask.request`, a proxy to the current http-request in which the error occured
# - `flask.session`, a proxy to the current http-session
# - `e`, the passed-in exception
# to get proxied-to objects: `flask.request._get_current_object()`
return render_template(current_app.config["THEME_500_TEMPLATE"]), 500
def records_serializer(records=None):
"""Serialize list of records."""
serializer = GlobalSearchJSONSerializer()
return [serializer.dump_obj(r.to_dict()) for r in records]
def index():
"""Frontpage."""
records = FrontpageRecordsSearch()[:5].sort("-created").execute()
return render_template("invenio_theme_iform/index.html", records=records_serializer(records))
def locked(e):
"""Error page for status locked."""
return render_template("invenio_theme_iform/423.html")

View File

@@ -1,27 +0,0 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2020 TUGRAZ.
#
# invenio-theme-iform is free software.
"""JS/CSS Webpack bundles for theme."""
from invenio_assets.webpack import WebpackThemeBundle
theme = WebpackThemeBundle(
__name__,
"assets",
default="semantic-ui",
themes={
"semantic-ui": dict(
entry={
"invenio-theme-iform-theme": "./less/invenio_theme_iform/theme.less",
"invenio-theme-iform-js": "./js/invenio_theme_iform/theme.js",
"invenio-theme-iform-unlock": "./js/invenio_theme_iform/unlock.js",
},
dependencies={
"jquery": "^3.2.1", # zammad-form, semantic-ui's modals
},
)
},
)

View File

@@ -0,0 +1,14 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2020 mojib wali.
#
# 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.
"""invenio module for TUGRAZ theme."""
from .ext import InvenioThemeTugraz
from .version import __version__
__all__ = ("__version__", "InvenioThemeTugraz")

View File

@@ -0,0 +1,29 @@
/*
* Copyright (C) 2020 TUGRAZ.
* Copyright (C) 2020 mojib wali.
*
* 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.
*/
#footer {
color: #fff;
&.footer-bottom {
background-color: #E4154B;
padding-top: 15px;
padding-bottom: 15px;
font-weight: 300;
font-size: 14px;
a {
text-decoration: none;
color: #ffffffd6;
font-weight: 600;
&:hover, &:focus {
color: #ffffff;
}
}
}
}

Some files were not shown because too many files have changed in this diff Show More