Compare commits
121 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ab8a357137 | |||
| 6cba9a6d2b | |||
| b66f7a75df | |||
| b02b7aca14 | |||
| 56d5d223f3 | |||
| c14168c194 | |||
| 5b71404fda | |||
| 926196b30f | |||
| e74d2017fc | |||
| ef1f268298 | |||
| af61f927f1 | |||
| d5b9686302 | |||
| c5bd3d138e | |||
| d5f63f4387 | |||
| f7d0aa1bcf | |||
| 4155fb875a | |||
| 51dac9f287 | |||
| de36035b59 | |||
| f0643b3488 | |||
| 9b5e74ae67 | |||
| 1a91b1c33c | |||
| f4d6435146 | |||
| 2297d2f3dd | |||
| 626eeafe25 | |||
| 62f4b88759 | |||
| d2ab271883 | |||
| 725c4197b9 | |||
| 7e690305a6 | |||
| 7e6426b9a2 | |||
| fc21c491b2 | |||
| 62ecc4e986 | |||
| 31bf58574f | |||
| 85ec2f7cef | |||
| 8bf419a22f | |||
| 3475f6e7e5 | |||
| 2f7b008301 | |||
| 4bb4e68cdd | |||
| 4bb0bcfb8e | |||
| 0a58f44a18 | |||
| 6e5f414db0 | |||
| 1661c02de0 | |||
| 063094f338 | |||
| 2cb7bbbd18 | |||
| 38e3dccdfd | |||
| 5c9dc284e8 | |||
| 11e4db6672 | |||
| 3f85457c6e | |||
| b325b2d4b2 | |||
| 6cd04471e0 | |||
| 1ba51405d7 | |||
| 73828219da | |||
| d265ea7ca5 | |||
| dbb9a62b97 | |||
| 2dad05ffb7 | |||
| d821addad3 | |||
| 86a42f3c9b | |||
| 5309a72233 | |||
| eb31090c13 | |||
| ba9f7c35c9 | |||
| 48dde0079c | |||
| 65af4cffb3 | |||
| 28e8632128 | |||
| d08b0faaeb | |||
| d54811a755 | |||
| 3ed90a2392 | |||
| 2f10189a52 | |||
| 9d615f23e6 | |||
| c07d438ce3 | |||
| 7ac561a033 | |||
| 25a2a3a086 | |||
| a4eae3cd87 | |||
| 35a17bde25 | |||
| 1d5cd3501e | |||
| 24b979f9fc | |||
| c70b127002 | |||
| e23a3dcce1 | |||
| b061f509e8 | |||
| 2895e4f5ab | |||
| 57212ea710 | |||
| c54db69862 | |||
| efa4551932 | |||
| c01f2f44fd | |||
| b5dba87a89 | |||
| 5285471636 | |||
| e8dcfa3c82 | |||
| f15ade1bf4 | |||
| 3c4ac5580a | |||
| 85f997a171 | |||
| 3a8146bde7 | |||
| 1bf6293a0c | |||
| dbd88c32af | |||
| 7c41838349 | |||
| 10e3682fa4 | |||
| 7234881ae7 | |||
| e425a6cba5 | |||
| 07f8c8c8b6 | |||
| c3867ca695 | |||
| 88a3aff0c2 | |||
|
|
8866b87459 | ||
|
|
3a91743f9b | ||
|
|
fa705221dd | ||
|
|
aa21adb1cf | ||
|
|
5865f0df54 | ||
|
|
4b8d5bee9f | ||
|
|
923d4e8120 | ||
|
|
049063fd7d | ||
|
|
4a13f22de4 | ||
|
|
dac35b2e0e | ||
|
|
cf5ecfd2f6 | ||
|
|
0919760cfd | ||
|
|
40be6ff4b4 | ||
|
|
602c4b6523 | ||
|
|
4a581d6703 | ||
|
|
b426e0cc39 | ||
|
|
b975800532 | ||
|
|
19143a7860 | ||
|
|
2d47e30416 | ||
|
|
87bead9b7e | ||
|
|
11bce0a1ce | ||
|
|
ebcd040be0 | ||
|
|
515a02aed5 |
@@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2020-2021 Graz University of Technology.
|
# Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
#
|
#
|
||||||
# invenio-theme-tugraz is free software; you can redistribute it and/or
|
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
# details.
|
# details.
|
||||||
|
|
||||||
|
|||||||
5
.envrc
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
export DIRENV_WARN_TIMEOUT=20s
|
||||||
|
|
||||||
|
eval "$(devenv direnvrc)"
|
||||||
|
|
||||||
|
use devenv
|
||||||
29
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "uv"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
||||||
|
day: "monday"
|
||||||
|
time: "04:00"
|
||||||
|
open-pull-requests-limit: 8
|
||||||
|
allow:
|
||||||
|
- dependency-type: "all"
|
||||||
|
reviewers:
|
||||||
|
- "Cian-H"
|
||||||
|
assignees:
|
||||||
|
- "Cian-H"
|
||||||
|
commit-message:
|
||||||
|
prefix: "uv-deps"
|
||||||
|
prefix-development: "uv-deps-dev"
|
||||||
|
include: "scope"
|
||||||
|
|
||||||
|
- package-ecosystem: "github-actions"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
||||||
|
day: "monday"
|
||||||
|
time: "04:00"
|
||||||
|
open-pull-requests-limit: 5
|
||||||
|
commit-message:
|
||||||
|
prefix: "ci"
|
||||||
26
.github/workflows/publish.yml
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
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
@@ -1,26 +0,0 @@
|
|||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- v*
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-n-publish:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- name: Set up Python 3.7
|
|
||||||
uses: actions/setup-python@v2
|
|
||||||
with:
|
|
||||||
python-version: 3.7
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
python -m pip install --upgrade pip
|
|
||||||
pip install setuptools wheel babel
|
|
||||||
- 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 }}
|
|
||||||
20
.github/workflows/tagging.yml
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
name: Auto Version Tag
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_run:
|
||||||
|
workflows:
|
||||||
|
- Tests
|
||||||
|
types:
|
||||||
|
- completed
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
tag:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Version tag
|
||||||
|
uses: Jorricks/action-python-autotagging@1.0.1
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
path: invenio_theme_iform/__about__.py
|
||||||
|
variable: __version__
|
||||||
109
.github/workflows/tests.yml
vendored
@@ -1,71 +1,92 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# Copyright (C) 2020-2022 Graz University of Technology.
|
# Copyright (C) 2025 I-Form Advanced Manufacturing Research Centre.
|
||||||
#
|
#
|
||||||
# invenio-theme-tugraz is free software; you can redistribute it and/or
|
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
# details.
|
# details.
|
||||||
|
|
||||||
name: CI
|
name: Tests
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: master
|
branches:
|
||||||
|
- master
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: master
|
branches:
|
||||||
schedule:
|
- master
|
||||||
# * is a special character in YAML so you have to quote this string
|
|
||||||
- cron: '0 3 * * 6'
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
inputs:
|
inputs:
|
||||||
reason:
|
reason:
|
||||||
description: 'Reason'
|
description: "Reason"
|
||||||
required: false
|
required: false
|
||||||
default: 'Manual trigger'
|
default: "Manual trigger"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
Tests:
|
create-strategy:
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
|
||||||
matrix:
|
outputs:
|
||||||
python-version: [3.9, "3.10"]
|
matrix: ${{ steps.requirements.outputs.matrix }}
|
||||||
requirements-level: [pypi]
|
|
||||||
db-service: [postgresql13]
|
|
||||||
search-service: [opensearch2]
|
|
||||||
include:
|
|
||||||
- search-service: opensearch2
|
|
||||||
SEARCH_EXTRAS: "opensearch2"
|
|
||||||
|
|
||||||
env:
|
|
||||||
DB: ${{ matrix.db-service }}
|
|
||||||
SEARCH: ${{ matrix.search-service }}
|
|
||||||
EXTRAS: tests,${{ matrix.SEARCH_EXTRAS }}
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Set up Python ${{ matrix.python-version }}
|
- name: requirements
|
||||||
uses: actions/setup-python@v2
|
id: requirements
|
||||||
with:
|
|
||||||
python-version: ${{ matrix.python-version }}
|
|
||||||
|
|
||||||
- name: Generate dependencies
|
|
||||||
run: |
|
run: |
|
||||||
pip install wheel requirements-builder
|
# Define a simple matrix with your Python version
|
||||||
requirements-builder -e "$EXTRAS" --level=${{ matrix.requirements-level }} setup.py > .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt
|
# Since we're using pyproject.toml with Python 3.12 requirement
|
||||||
- name: Cache pip
|
echo "matrix={\"include\": [{\"python-version\": \"3.12\"}]}" >> $GITHUB_OUTPUT
|
||||||
uses: actions/cache@v2
|
|
||||||
|
# Print the matrix for debugging
|
||||||
|
echo "-------------------"
|
||||||
|
echo "Matrix: {\"include\": [{\"python-version\": \"3.12\"}]}"
|
||||||
|
echo "-------------------"
|
||||||
|
|
||||||
|
tests:
|
||||||
|
needs: create-strategy
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
name: Test (Python ${{matrix.python-version}})
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix: ${{ fromJson(needs.create-strategy.outputs.matrix) }}
|
||||||
|
|
||||||
|
# Simplified environment without service variables
|
||||||
|
env:
|
||||||
|
PYTHON_VERSION: ${{ matrix.python-version }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up uv
|
||||||
|
uses: astral-sh/setup-uv@v6
|
||||||
with:
|
with:
|
||||||
path: ~/.cache/pip
|
python-version: "${{ matrix.python-version }}"
|
||||||
key: ${{ runner.os }}-pip-${{ hashFiles('.${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt') }}
|
enable-cache: true
|
||||||
|
cache-dependency-glob: |
|
||||||
|
pyproject.toml
|
||||||
|
cache-suffix: ${{ matrix.python-version }}
|
||||||
|
|
||||||
|
- name: Show configuration
|
||||||
|
run: |
|
||||||
|
uv --version
|
||||||
|
uv run python --version
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
pip install -r .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt
|
uv sync --group tests
|
||||||
pip install ".[$EXTRAS]"
|
|
||||||
pip freeze
|
|
||||||
docker --version
|
|
||||||
docker-compose --version
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
|
env:
|
||||||
|
PYTEST_ADDOPTS: "--cov-report=lcov"
|
||||||
run: |
|
run: |
|
||||||
./run-tests.sh
|
uv run test
|
||||||
|
|
||||||
|
- name: Upload coverage to Coveralls
|
||||||
|
uses: coverallsapp/github-action@master
|
||||||
|
with:
|
||||||
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
path-to-lcov: coverage.lcov
|
||||||
|
|||||||
13
.gitignore
vendored
@@ -60,3 +60,16 @@ target/
|
|||||||
|
|
||||||
# Vim swapfiles
|
# Vim swapfiles
|
||||||
.*.sw?
|
.*.sw?
|
||||||
|
|
||||||
|
# Devenv
|
||||||
|
.devenv*
|
||||||
|
devenv.local.nix
|
||||||
|
|
||||||
|
# direnv
|
||||||
|
.direnv
|
||||||
|
|
||||||
|
# python version lock
|
||||||
|
.python-version
|
||||||
|
|
||||||
|
# bun modules
|
||||||
|
node_modules
|
||||||
|
|||||||
45
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
repos:
|
||||||
|
- repo: local
|
||||||
|
hooks:
|
||||||
|
- id: check-version-increment
|
||||||
|
name: Check Version Increment
|
||||||
|
entry: python scripts/hooks/pre-push/check_version_increment.py
|
||||||
|
language: system
|
||||||
|
pass_filenames: false
|
||||||
|
stages: [pre-push]
|
||||||
|
|
||||||
|
- id: tests
|
||||||
|
name: Run Python Tests
|
||||||
|
entry: uv run test
|
||||||
|
language: system
|
||||||
|
pass_filenames: false
|
||||||
|
stages: [pre-push]
|
||||||
|
|
||||||
|
- id: prettier-with-jinja
|
||||||
|
name: Prettier (with Jinja support)
|
||||||
|
entry: bun run prettier -c
|
||||||
|
language: system
|
||||||
|
types_or:
|
||||||
|
[javascript, jsx, ts, tsx, css, scss, sass, less, yaml, json, markdown, html, jinja]
|
||||||
|
stages: [pre-push]
|
||||||
|
|
||||||
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||||
|
rev: v0.11.9
|
||||||
|
hooks:
|
||||||
|
- id: ruff
|
||||||
|
stages: [pre-push]
|
||||||
|
- id: ruff-format
|
||||||
|
stages: [pre-push]
|
||||||
|
|
||||||
|
- repo: https://github.com/pre-commit/mirrors-eslint
|
||||||
|
rev: v9.26.0
|
||||||
|
hooks:
|
||||||
|
- id: eslint
|
||||||
|
additional_dependencies:
|
||||||
|
- eslint@latest
|
||||||
|
- eslint/js
|
||||||
|
- eslint/json
|
||||||
|
- eslint-plugin-react
|
||||||
|
|
||||||
|
files: \.(js|ts|jsx|tsx)$
|
||||||
|
stages: [pre-push]
|
||||||
20
.readthedocs.yaml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Read the Docs configuration file
|
||||||
|
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
||||||
|
|
||||||
|
# Required
|
||||||
|
version: 2
|
||||||
|
|
||||||
|
# Set the OS, Python version, and other tools you might need
|
||||||
|
build:
|
||||||
|
os: ubuntu-24.04
|
||||||
|
tools:
|
||||||
|
python: "3.13"
|
||||||
|
jobs:
|
||||||
|
pre_create_environment:
|
||||||
|
- asdf plugin add uv
|
||||||
|
- asdf install uv latest
|
||||||
|
- asdf global uv latest
|
||||||
|
create_environment:
|
||||||
|
- uv sync --group docs
|
||||||
|
install:
|
||||||
|
- uv run python -m sphinx -T -d docs/_build/doctrees -D language=en docs $READTHEDOCS_OUTPUT/html
|
||||||
21
.tx/config
@@ -1,21 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
#
|
|
||||||
# Copyright (C) 2020-2021 Graz University of Technology.
|
|
||||||
#
|
|
||||||
# invenio-theme-tugraz is free software; you can redistribute it and/or
|
|
||||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
|
||||||
# details.
|
|
||||||
#
|
|
||||||
# 1) Create message catalog:
|
|
||||||
# $ python setup.py extract_messages
|
|
||||||
# $ python setup.py update_catalog -l de
|
|
||||||
# $ python setup.py compile_catalog
|
|
||||||
|
|
||||||
[main]
|
|
||||||
host = https://www.transifex.com
|
|
||||||
|
|
||||||
[invenio.invenio-theme-tugraz-messages]
|
|
||||||
file_filter = invenio_theme_tugraz/translations/<lang>/LC_MESSAGES/messages.po
|
|
||||||
source_file = invenio_theme_tugraz/translations/messages.pot
|
|
||||||
source_lang = en
|
|
||||||
type = PO
|
|
||||||
@@ -1,13 +1,15 @@
|
|||||||
..
|
..
|
||||||
Copyright (C) 2020-2021 Graz University of Technology.
|
Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
|
|
||||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the MIT License; see LICENSE file for more
|
modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
details.
|
details.
|
||||||
|
|
||||||
Authors
|
Authors
|
||||||
=======
|
=======
|
||||||
|
|
||||||
invenio module for TUGRAZ theme.
|
Invenio module for iform theme.
|
||||||
|
|
||||||
- mojib wali <mojib.wali@tugraz.at>
|
- cian hughes <cian.hughes@dcu.ie>
|
||||||
|
|
||||||
|
Forked from https://github.com/tu-graz-library/invenio-theme-tugraz
|
||||||
|
|||||||
47
CHANGES.rst
@@ -1,13 +1,58 @@
|
|||||||
..
|
..
|
||||||
Copyright (C) 2020-2021 Graz University of Technology.
|
Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
|
|
||||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the MIT License; see LICENSE file for more
|
modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
details.
|
details.
|
||||||
|
|
||||||
Changes
|
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)
|
Version v4.12.3 (release 2024-01-28)
|
||||||
|
|
||||||
- wording: update text in benefits
|
- wording: update text in benefits
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ Types of Contributions
|
|||||||
Report Bugs
|
Report Bugs
|
||||||
~~~~~~~~~~~
|
~~~~~~~~~~~
|
||||||
|
|
||||||
Report bugs at https://github.com/tu-graz-library/invenio-theme-tugraz/issues.
|
Report bugs at https://github.com/Cian-H/invenio-theme-iform/issues.
|
||||||
|
|
||||||
If you are reporting a bug, please include:
|
If you are reporting a bug, please include:
|
||||||
|
|
||||||
@@ -33,15 +33,15 @@ is open to whoever wants to implement it.
|
|||||||
Write Documentation
|
Write Documentation
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
invenio-theme-tugraz could always use more documentation, whether as part of the
|
invenio-theme-iform 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,
|
official invenio-theme-iform docs, in docstrings, or even on the web in blog posts,
|
||||||
articles, and such.
|
articles, and such.
|
||||||
|
|
||||||
Submit Feedback
|
Submit Feedback
|
||||||
~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
The best way to send feedback is to file an issue at
|
The best way to send feedback is to file an issue at
|
||||||
https://github.com/tu-graz-library/invenio-theme-tugraz/issues.
|
https://github.com/Cian-H/invenio-theme-iform/issues.
|
||||||
|
|
||||||
If you are proposing a feature:
|
If you are proposing a feature:
|
||||||
|
|
||||||
@@ -53,14 +53,14 @@ If you are proposing a feature:
|
|||||||
Get Started!
|
Get Started!
|
||||||
------------
|
------------
|
||||||
|
|
||||||
Ready to contribute? Here's how to set up `invenio-theme-tugraz` for local development.
|
Ready to contribute? Here's how to set up `invenio-theme-iform` for local development.
|
||||||
|
|
||||||
1. Fork the `https://github.com/tu-graz-library/invenio-theme-tugraz.git` repo on GitHub.
|
1. Fork the `https://github.com/Cian-H/invenio-theme-iform.git` repo on GitHub.
|
||||||
2. Clone your fork locally:
|
2. Clone your fork locally:
|
||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ git clone git@github.com:your_name_here/invenio-theme-tugraz.git
|
$ git clone git@github.com:your_name_here/invenio-theme-iform.git
|
||||||
|
|
||||||
3. Install your local copy into a virtualenv. Assuming you have
|
3. Install your local copy into a virtualenv. Assuming you have
|
||||||
virtualenvwrapper installed, this is how you set up your fork for local
|
virtualenvwrapper installed, this is how you set up your fork for local
|
||||||
@@ -68,8 +68,8 @@ Ready to contribute? Here's how to set up `invenio-theme-tugraz` for local devel
|
|||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ mkvirtualenv invenio-theme-tugraz
|
$ mkvirtualenv invenio-theme-iform
|
||||||
$ cd invenio-theme-tugraz/
|
$ cd invenio-theme-iform/
|
||||||
$ pip install -e .[all]
|
$ pip install -e .[all]
|
||||||
|
|
||||||
4. Create a branch for local development:
|
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
|
2. If the pull request adds functionality, the docs should be updated. Put
|
||||||
your new functionality into a function with a docstring.
|
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
|
3. The pull request should work for Python 2.7, 3.5 and 3.6. Check
|
||||||
https://github.com/tu-graz-library/invenio-theme-tugraz/actions?query=event%3Apull_request
|
https://github.com/Cian-H/invenio-theme-iform/actions?query=event%3Apull_request
|
||||||
and make sure that the tests pass for all supported Python versions.
|
and make sure that the tests pass for all supported Python versions.
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
Installation
|
Installation
|
||||||
============
|
============
|
||||||
|
|
||||||
invenio-theme-tugraz is on PyPI so all you need is:
|
invenio-theme-iform is on PyPI so all you need is:
|
||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ pip install invenio-theme-tugraz
|
$ pip install invenio-theme-iform
|
||||||
|
|||||||
1
LICENSE
@@ -1,6 +1,7 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (C) 2020 Graz University of Technology.
|
Copyright (C) 2020 Graz University of Technology.
|
||||||
|
Copyright (C) 2025 I-Form Advanced Research Manufacturing Research Centre.
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
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
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
|||||||
29
MANIFEST.in
@@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2020-2021 Graz University of Technology.
|
# Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
#
|
#
|
||||||
# invenio-theme-tugraz is free software; you can redistribute it and/or
|
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
# details.
|
# details.
|
||||||
|
|
||||||
@@ -10,7 +10,7 @@ include .dockerignore
|
|||||||
include .editorconfig
|
include .editorconfig
|
||||||
include .tx/config
|
include .tx/config
|
||||||
prune docs/_build
|
prune docs/_build
|
||||||
recursive-include invenio_theme_tugraz/translations *.po *.pot *.mo
|
recursive-include invenio_theme_iform/translations *.po *.pot *.mo
|
||||||
|
|
||||||
# added by check_manifest.py
|
# added by check_manifest.py
|
||||||
include *.md
|
include *.md
|
||||||
@@ -19,26 +19,25 @@ include *.sh
|
|||||||
include *.txt
|
include *.txt
|
||||||
include *.rst
|
include *.rst
|
||||||
include LICENSE
|
include LICENSE
|
||||||
include babel.ini
|
|
||||||
include pytest.ini
|
include pytest.ini
|
||||||
recursive-include docs *.bat
|
recursive-include docs *.bat
|
||||||
recursive-include docs *.py
|
recursive-include docs *.py
|
||||||
recursive-include docs *.rst
|
recursive-include docs *.rst
|
||||||
recursive-include docs *.txt
|
recursive-include docs *.txt
|
||||||
recursive-include docs Makefile
|
recursive-include docs Makefile
|
||||||
recursive-include invenio_theme_tugraz *.html
|
recursive-include invenio_theme_iform *.html
|
||||||
recursive-include invenio_theme_tugraz *.js
|
recursive-include invenio_theme_iform *.js
|
||||||
recursive-include invenio_theme_tugraz *.png
|
recursive-include invenio_theme_iform *.png
|
||||||
recursive-include invenio_theme_tugraz *.scss
|
recursive-include invenio_theme_iform *.scss
|
||||||
recursive-include invenio_theme_tugraz *.svg
|
recursive-include invenio_theme_iform *.svg
|
||||||
recursive-include invenio_theme_tugraz *.less
|
recursive-include invenio_theme_iform *.less
|
||||||
recursive-include invenio_theme_tugraz *.ico
|
recursive-include invenio_theme_iform *.ico
|
||||||
recursive-include invenio_theme_tugraz *.pdf
|
recursive-include invenio_theme_iform *.pdf
|
||||||
recursive-include invenio_theme_tugraz *.ttf
|
recursive-include invenio_theme_iform *.ttf
|
||||||
recursive-include invenio_theme_tugraz *.txt
|
recursive-include invenio_theme_iform *.txt
|
||||||
|
|
||||||
recursive-include tests *.py
|
recursive-include tests *.py
|
||||||
recursive-include invenio_theme_tugraz *.jpg
|
recursive-include invenio_theme_iform *.jpg
|
||||||
recursive-include invenio_theme_tugraz *.gitkeep
|
recursive-include invenio_theme_iform *.gitkeep
|
||||||
recursive-include .github/workflows *.yml
|
recursive-include .github/workflows *.yml
|
||||||
include .git-blame-ignore-revs
|
include .git-blame-ignore-revs
|
||||||
|
|||||||
50
README.rst
@@ -1,45 +1,47 @@
|
|||||||
..
|
..
|
||||||
Copyright (C) 2020-2021 Graz University of Technology.
|
Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
|
|
||||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the MIT License; see LICENSE file for more
|
modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
details.
|
details.
|
||||||
|
|
||||||
======================
|
======================
|
||||||
invenio-theme-tugraz
|
invenio-theme-iform
|
||||||
======================
|
======================
|
||||||
|
|
||||||
.. image:: https://github.com/tu-graz-library/invenio-theme-tugraz/workflows/CI/badge.svg
|
.. image:: https://github.com/Cian-H/invenio-theme-iform/workflows/CI/badge.svg
|
||||||
:target: https://github.com/tu-graz-library/invenio-theme-tugraz/actions
|
:target: https://github.com/Cian-H/invenio-theme-iform/actions
|
||||||
|
|
||||||
.. image:: https://img.shields.io/pypi/dm/invenio-theme-tugraz.svg
|
.. image:: https://img.shields.io/pypi/dm/invenio-theme-iform.svg
|
||||||
:target: https://pypi.python.org/pypi/invenio-theme-tugraz
|
:target: https://pypi.python.org/pypi/invenio-theme-iform
|
||||||
|
|
||||||
.. image:: https://img.shields.io/github/tag/tu-graz-library/invenio-theme-tugraz.svg
|
.. image:: https://img.shields.io/github/tag/Cian-H/invenio-theme-iform.svg
|
||||||
:target: https://github.com/tu-graz-library/invenio-theme-tugraz/releases
|
:target: https://github.com/Cian-H/invenio-theme-iform/releases
|
||||||
|
|
||||||
.. image:: https://img.shields.io/github/license/tu-graz-library/invenio-theme-tugraz.svg
|
.. image:: https://img.shields.io/github/license/Cian-H/invenio-theme-iform.svg
|
||||||
:target: https://github.com/tu-graz-library/invenio-theme-tugraz/blob/master/LICENSE
|
:target: https://github.com/Cian-H/invenio-theme-iform/blob/master/LICENSE
|
||||||
|
|
||||||
.. image:: https://readthedocs.org/projects/invenio-theme-tugraz/badge/?version=latest
|
.. image:: https://readthedocs.org/projects/invenio-theme-iform/badge/?version=latest
|
||||||
:target: https://invenio-theme-tugraz.readthedocs.io/en/latest/?badge=latest
|
:target: https://invenio-theme-iform.readthedocs.io/en/latest/?badge=latest
|
||||||
|
|
||||||
.. image:: https://img.shields.io/coveralls/mb-wali/invenio-theme-tugraz.svg
|
.. image:: https://coveralls.io/repos/github/Cian-H/invenio-theme-iform/badge.svg?branch=master
|
||||||
:target: https://coveralls.io/r/mb-wali/invenio-theme-tugraz
|
:target: https://coveralls.io/github/Cian-H/invenio-theme-iform?branch=master
|
||||||
|
|
||||||
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
|
.. image:: https://img.shields.io/badge/code%20style-Ruff-D7FF64.svg
|
||||||
:target: https://github.com/psf/black
|
:target: https://github.com/astral-sh/ruff
|
||||||
|
|
||||||
TU Graz standard theme.
|
I-Form standard theme.
|
||||||
|
|
||||||
Features:
|
Features:
|
||||||
|
|
||||||
* TU Graz custom header template.
|
* I-Form custom header template.
|
||||||
* TU Graz custom footer template.
|
* I-Form custom footer template.
|
||||||
* TU Graz custom login/signup templates.
|
* I-Form custom login/signup templates.
|
||||||
* TU Graz custom frontpage template.
|
* I-Form custom frontpage template.
|
||||||
* TU Graz custom contact template.
|
* I-Form custom contact template.
|
||||||
* TU Graz overriden theme.
|
* I-Form overriden theme.
|
||||||
|
|
||||||
Further documentation is available on
|
Further documentation is available on
|
||||||
https://invenio-theme-tugraz.readthedocs.io/
|
https://invenio-theme-iform.readthedocs.io/
|
||||||
|
|
||||||
|
Forked from https://github.com/tu-graz-library/invenio-theme-tugraz
|
||||||
|
|||||||
23
babel.ini
@@ -1,23 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
#
|
|
||||||
# Copyright (C) 2020-2021 Graz University of Technology.
|
|
||||||
#
|
|
||||||
# invenio-theme-tugraz is free software; you can redistribute it and/or
|
|
||||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
|
||||||
# details.
|
|
||||||
|
|
||||||
# Extraction from Python source files
|
|
||||||
|
|
||||||
[python: **.py]
|
|
||||||
encoding = utf-8
|
|
||||||
|
|
||||||
# Extraction from Jinja2 templates
|
|
||||||
|
|
||||||
[jinja2: **/templates/**.html]
|
|
||||||
encoding = utf-8
|
|
||||||
|
|
||||||
# Extraction from JavaScript files
|
|
||||||
|
|
||||||
[javascript: **.js]
|
|
||||||
encoding = utf-8
|
|
||||||
extract_messages = $._, jQuery._
|
|
||||||
543
bun.lock
Normal file
@@ -0,0 +1,543 @@
|
|||||||
|
{
|
||||||
|
"lockfileVersion": 1,
|
||||||
|
"workspaces": {
|
||||||
|
"": {
|
||||||
|
"devDependencies": {
|
||||||
|
"@eslint/css": "^0.7.0",
|
||||||
|
"@eslint/js": "^9.26.0",
|
||||||
|
"@eslint/json": "^0.12.0",
|
||||||
|
"eslint": "^9.26.0",
|
||||||
|
"eslint-plugin-react": "^7.37.5",
|
||||||
|
"globals": "^16.1.0",
|
||||||
|
"prettier": "^3.5.3",
|
||||||
|
"prettier-plugin-jinja-template": "^2.1.0",
|
||||||
|
"react": "16",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"packages": {
|
||||||
|
"@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.7.0", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw=="],
|
||||||
|
|
||||||
|
"@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="],
|
||||||
|
|
||||||
|
"@eslint/config-array": ["@eslint/config-array@0.20.0", "", { "dependencies": { "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ=="],
|
||||||
|
|
||||||
|
"@eslint/config-helpers": ["@eslint/config-helpers@0.2.2", "", {}, "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg=="],
|
||||||
|
|
||||||
|
"@eslint/core": ["@eslint/core@0.13.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw=="],
|
||||||
|
|
||||||
|
"@eslint/css": ["@eslint/css@0.7.0", "", { "dependencies": { "@eslint/core": "^0.13.0", "@eslint/css-tree": "^3.3.3", "@eslint/plugin-kit": "^0.2.5" } }, "sha512-d6mo8etv4igrTGxgvWSgA5+TsppfObM/Xhlu8JWbkqNBiaJXztUNH45R1B4i1GL2PNIFMLREI3Kh9lTBi19l7g=="],
|
||||||
|
|
||||||
|
"@eslint/css-tree": ["@eslint/css-tree@3.5.1", "", { "dependencies": { "mdn-data": "2.20.0", "source-map-js": "^1.0.1" } }, "sha512-gEej0mqMHD1xOwvciok6LGdAjjDVCXNASVg6cA3TLGVpqNcayzt5WgO6SXHrDialOl3N2Zc69ACE62QXLaYa1w=="],
|
||||||
|
|
||||||
|
"@eslint/eslintrc": ["@eslint/eslintrc@3.3.1", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ=="],
|
||||||
|
|
||||||
|
"@eslint/js": ["@eslint/js@9.26.0", "", {}, "sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ=="],
|
||||||
|
|
||||||
|
"@eslint/json": ["@eslint/json@0.12.0", "", { "dependencies": { "@eslint/core": "^0.12.0", "@eslint/plugin-kit": "^0.2.7", "@humanwhocodes/momoa": "^3.3.4", "natural-compare": "^1.4.0" } }, "sha512-n/7dz8HFStpEe4o5eYk0tdkBdGUS/ZGb0GQCeDWN1ZmRq67HMHK4vC33b0rQlTT6xdZoX935P4vstiWVk5Ying=="],
|
||||||
|
|
||||||
|
"@eslint/object-schema": ["@eslint/object-schema@2.1.6", "", {}, "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA=="],
|
||||||
|
|
||||||
|
"@eslint/plugin-kit": ["@eslint/plugin-kit@0.2.8", "", { "dependencies": { "@eslint/core": "^0.13.0", "levn": "^0.4.1" } }, "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA=="],
|
||||||
|
|
||||||
|
"@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="],
|
||||||
|
|
||||||
|
"@humanfs/node": ["@humanfs/node@0.16.6", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.3.0" } }, "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw=="],
|
||||||
|
|
||||||
|
"@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="],
|
||||||
|
|
||||||
|
"@humanwhocodes/momoa": ["@humanwhocodes/momoa@3.3.8", "", {}, "sha512-/3PZzor2imi/RLLcnHztkwA79txiVvW145Ve2cp5dxRcH5qOUNJPToasqLFHniTfw4B4lT7jGDdBOPXbXYlIMQ=="],
|
||||||
|
|
||||||
|
"@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="],
|
||||||
|
|
||||||
|
"@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.11.2", "", { "dependencies": { "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.3", "eventsource": "^3.0.2", "express": "^5.0.1", "express-rate-limit": "^7.5.0", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.23.8", "zod-to-json-schema": "^3.24.1" } }, "sha512-H9vwztj5OAqHg9GockCQC06k1natgcxWQSRpQcPJf6i5+MWBzfKkRtxGbjQf0X2ihii0ffLZCRGbYV2f2bjNCQ=="],
|
||||||
|
|
||||||
|
"@types/estree": ["@types/estree@1.0.7", "", {}, "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ=="],
|
||||||
|
|
||||||
|
"@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="],
|
||||||
|
|
||||||
|
"accepts": ["accepts@2.0.0", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="],
|
||||||
|
|
||||||
|
"acorn": ["acorn@8.14.1", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg=="],
|
||||||
|
|
||||||
|
"acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="],
|
||||||
|
|
||||||
|
"ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="],
|
||||||
|
|
||||||
|
"ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
|
||||||
|
|
||||||
|
"argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],
|
||||||
|
|
||||||
|
"array-buffer-byte-length": ["array-buffer-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" } }, "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw=="],
|
||||||
|
|
||||||
|
"array-includes": ["array-includes@3.1.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" } }, "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ=="],
|
||||||
|
|
||||||
|
"array.prototype.findlast": ["array.prototype.findlast@1.2.5", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "es-shim-unscopables": "^1.0.2" } }, "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ=="],
|
||||||
|
|
||||||
|
"array.prototype.flatmap": ["array.prototype.flatmap@1.3.3", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" } }, "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg=="],
|
||||||
|
|
||||||
|
"array.prototype.tosorted": ["array.prototype.tosorted@1.1.4", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.3", "es-errors": "^1.3.0", "es-shim-unscopables": "^1.0.2" } }, "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA=="],
|
||||||
|
|
||||||
|
"arraybuffer.prototype.slice": ["arraybuffer.prototype.slice@1.0.4", "", { "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "is-array-buffer": "^3.0.4" } }, "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ=="],
|
||||||
|
|
||||||
|
"async-function": ["async-function@1.0.0", "", {}, "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA=="],
|
||||||
|
|
||||||
|
"available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="],
|
||||||
|
|
||||||
|
"balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
|
||||||
|
|
||||||
|
"body-parser": ["body-parser@2.2.0", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.0", "http-errors": "^2.0.0", "iconv-lite": "^0.6.3", "on-finished": "^2.4.1", "qs": "^6.14.0", "raw-body": "^3.0.0", "type-is": "^2.0.0" } }, "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg=="],
|
||||||
|
|
||||||
|
"brace-expansion": ["brace-expansion@1.1.11", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="],
|
||||||
|
|
||||||
|
"bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="],
|
||||||
|
|
||||||
|
"call-bind": ["call-bind@1.0.8", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", "get-intrinsic": "^1.2.4", "set-function-length": "^1.2.2" } }, "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww=="],
|
||||||
|
|
||||||
|
"call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="],
|
||||||
|
|
||||||
|
"call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="],
|
||||||
|
|
||||||
|
"callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="],
|
||||||
|
|
||||||
|
"chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
|
||||||
|
|
||||||
|
"color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
|
||||||
|
|
||||||
|
"color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
|
||||||
|
|
||||||
|
"concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="],
|
||||||
|
|
||||||
|
"content-disposition": ["content-disposition@1.0.0", "", { "dependencies": { "safe-buffer": "5.2.1" } }, "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg=="],
|
||||||
|
|
||||||
|
"content-type": ["content-type@1.0.5", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="],
|
||||||
|
|
||||||
|
"cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="],
|
||||||
|
|
||||||
|
"cookie-signature": ["cookie-signature@1.2.2", "", {}, "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg=="],
|
||||||
|
|
||||||
|
"cors": ["cors@2.8.5", "", { "dependencies": { "object-assign": "^4", "vary": "^1" } }, "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g=="],
|
||||||
|
|
||||||
|
"cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],
|
||||||
|
|
||||||
|
"data-view-buffer": ["data-view-buffer@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ=="],
|
||||||
|
|
||||||
|
"data-view-byte-length": ["data-view-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ=="],
|
||||||
|
|
||||||
|
"data-view-byte-offset": ["data-view-byte-offset@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" } }, "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ=="],
|
||||||
|
|
||||||
|
"debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="],
|
||||||
|
|
||||||
|
"deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="],
|
||||||
|
|
||||||
|
"define-data-property": ["define-data-property@1.1.4", "", { "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "gopd": "^1.0.1" } }, "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A=="],
|
||||||
|
|
||||||
|
"define-properties": ["define-properties@1.2.1", "", { "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg=="],
|
||||||
|
|
||||||
|
"depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="],
|
||||||
|
|
||||||
|
"doctrine": ["doctrine@2.1.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="],
|
||||||
|
|
||||||
|
"dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="],
|
||||||
|
|
||||||
|
"ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="],
|
||||||
|
|
||||||
|
"encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="],
|
||||||
|
|
||||||
|
"es-abstract": ["es-abstract@1.23.9", "", { "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.3", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.0", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-regex": "^1.2.1", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.0", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.3", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.3", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.18" } }, "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA=="],
|
||||||
|
|
||||||
|
"es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="],
|
||||||
|
|
||||||
|
"es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="],
|
||||||
|
|
||||||
|
"es-iterator-helpers": ["es-iterator-helpers@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.6", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "iterator.prototype": "^1.1.4", "safe-array-concat": "^1.1.3" } }, "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w=="],
|
||||||
|
|
||||||
|
"es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="],
|
||||||
|
|
||||||
|
"es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="],
|
||||||
|
|
||||||
|
"es-shim-unscopables": ["es-shim-unscopables@1.1.0", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw=="],
|
||||||
|
|
||||||
|
"es-to-primitive": ["es-to-primitive@1.3.0", "", { "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", "is-symbol": "^1.0.4" } }, "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g=="],
|
||||||
|
|
||||||
|
"escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="],
|
||||||
|
|
||||||
|
"escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="],
|
||||||
|
|
||||||
|
"eslint": ["eslint@9.26.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.20.0", "@eslint/config-helpers": "^0.2.1", "@eslint/core": "^0.13.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.26.0", "@eslint/plugin-kit": "^0.2.8", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@modelcontextprotocol/sdk": "^1.8.0", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.3.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3", "zod": "^3.24.2" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ=="],
|
||||||
|
|
||||||
|
"eslint-plugin-react": ["eslint-plugin-react@7.37.5", "", { "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", "array.prototype.flatmap": "^1.3.3", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.9", "object.fromentries": "^2.0.8", "object.values": "^1.2.1", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", "string.prototype.matchall": "^4.0.12", "string.prototype.repeat": "^1.0.0" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA=="],
|
||||||
|
|
||||||
|
"eslint-scope": ["eslint-scope@8.3.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ=="],
|
||||||
|
|
||||||
|
"eslint-visitor-keys": ["eslint-visitor-keys@4.2.0", "", {}, "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw=="],
|
||||||
|
|
||||||
|
"espree": ["espree@10.3.0", "", { "dependencies": { "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.0" } }, "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg=="],
|
||||||
|
|
||||||
|
"esquery": ["esquery@1.6.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg=="],
|
||||||
|
|
||||||
|
"esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="],
|
||||||
|
|
||||||
|
"estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="],
|
||||||
|
|
||||||
|
"esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="],
|
||||||
|
|
||||||
|
"etag": ["etag@1.8.1", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="],
|
||||||
|
|
||||||
|
"eventsource": ["eventsource@3.0.7", "", { "dependencies": { "eventsource-parser": "^3.0.1" } }, "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA=="],
|
||||||
|
|
||||||
|
"eventsource-parser": ["eventsource-parser@3.0.1", "", {}, "sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA=="],
|
||||||
|
|
||||||
|
"express": ["express@5.1.0", "", { "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.0", "content-disposition": "^1.0.0", "content-type": "^1.0.5", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "finalhandler": "^2.1.0", "fresh": "^2.0.0", "http-errors": "^2.0.0", "merge-descriptors": "^2.0.0", "mime-types": "^3.0.0", "on-finished": "^2.4.1", "once": "^1.4.0", "parseurl": "^1.3.3", "proxy-addr": "^2.0.7", "qs": "^6.14.0", "range-parser": "^1.2.1", "router": "^2.2.0", "send": "^1.1.0", "serve-static": "^2.2.0", "statuses": "^2.0.1", "type-is": "^2.0.1", "vary": "^1.1.2" } }, "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA=="],
|
||||||
|
|
||||||
|
"express-rate-limit": ["express-rate-limit@7.5.0", "", { "peerDependencies": { "express": "^4.11 || 5 || ^5.0.0-beta.1" } }, "sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg=="],
|
||||||
|
|
||||||
|
"fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="],
|
||||||
|
|
||||||
|
"fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="],
|
||||||
|
|
||||||
|
"fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="],
|
||||||
|
|
||||||
|
"file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="],
|
||||||
|
|
||||||
|
"finalhandler": ["finalhandler@2.1.0", "", { "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "on-finished": "^2.4.1", "parseurl": "^1.3.3", "statuses": "^2.0.1" } }, "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q=="],
|
||||||
|
|
||||||
|
"find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="],
|
||||||
|
|
||||||
|
"flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="],
|
||||||
|
|
||||||
|
"flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="],
|
||||||
|
|
||||||
|
"for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="],
|
||||||
|
|
||||||
|
"forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="],
|
||||||
|
|
||||||
|
"fresh": ["fresh@2.0.0", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="],
|
||||||
|
|
||||||
|
"function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="],
|
||||||
|
|
||||||
|
"function.prototype.name": ["function.prototype.name@1.1.8", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "functions-have-names": "^1.2.3", "hasown": "^2.0.2", "is-callable": "^1.2.7" } }, "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q=="],
|
||||||
|
|
||||||
|
"functions-have-names": ["functions-have-names@1.2.3", "", {}, "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="],
|
||||||
|
|
||||||
|
"get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="],
|
||||||
|
|
||||||
|
"get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="],
|
||||||
|
|
||||||
|
"get-symbol-description": ["get-symbol-description@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6" } }, "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg=="],
|
||||||
|
|
||||||
|
"glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="],
|
||||||
|
|
||||||
|
"globals": ["globals@16.1.0", "", {}, "sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g=="],
|
||||||
|
|
||||||
|
"globalthis": ["globalthis@1.0.4", "", { "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" } }, "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ=="],
|
||||||
|
|
||||||
|
"gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="],
|
||||||
|
|
||||||
|
"has-bigints": ["has-bigints@1.1.0", "", {}, "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg=="],
|
||||||
|
|
||||||
|
"has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="],
|
||||||
|
|
||||||
|
"has-property-descriptors": ["has-property-descriptors@1.0.2", "", { "dependencies": { "es-define-property": "^1.0.0" } }, "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg=="],
|
||||||
|
|
||||||
|
"has-proto": ["has-proto@1.2.0", "", { "dependencies": { "dunder-proto": "^1.0.0" } }, "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ=="],
|
||||||
|
|
||||||
|
"has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="],
|
||||||
|
|
||||||
|
"has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="],
|
||||||
|
|
||||||
|
"hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="],
|
||||||
|
|
||||||
|
"http-errors": ["http-errors@2.0.0", "", { "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": "2.0.1", "toidentifier": "1.0.1" } }, "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ=="],
|
||||||
|
|
||||||
|
"iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="],
|
||||||
|
|
||||||
|
"ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="],
|
||||||
|
|
||||||
|
"import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="],
|
||||||
|
|
||||||
|
"imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="],
|
||||||
|
|
||||||
|
"inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
|
||||||
|
|
||||||
|
"internal-slot": ["internal-slot@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw=="],
|
||||||
|
|
||||||
|
"ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="],
|
||||||
|
|
||||||
|
"is-array-buffer": ["is-array-buffer@3.0.5", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A=="],
|
||||||
|
|
||||||
|
"is-async-function": ["is-async-function@2.1.1", "", { "dependencies": { "async-function": "^1.0.0", "call-bound": "^1.0.3", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ=="],
|
||||||
|
|
||||||
|
"is-bigint": ["is-bigint@1.1.0", "", { "dependencies": { "has-bigints": "^1.0.2" } }, "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ=="],
|
||||||
|
|
||||||
|
"is-boolean-object": ["is-boolean-object@1.2.2", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A=="],
|
||||||
|
|
||||||
|
"is-callable": ["is-callable@1.2.7", "", {}, "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="],
|
||||||
|
|
||||||
|
"is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="],
|
||||||
|
|
||||||
|
"is-data-view": ["is-data-view@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" } }, "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw=="],
|
||||||
|
|
||||||
|
"is-date-object": ["is-date-object@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" } }, "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg=="],
|
||||||
|
|
||||||
|
"is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="],
|
||||||
|
|
||||||
|
"is-finalizationregistry": ["is-finalizationregistry@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg=="],
|
||||||
|
|
||||||
|
"is-generator-function": ["is-generator-function@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "get-proto": "^1.0.0", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ=="],
|
||||||
|
|
||||||
|
"is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="],
|
||||||
|
|
||||||
|
"is-map": ["is-map@2.0.3", "", {}, "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw=="],
|
||||||
|
|
||||||
|
"is-number-object": ["is-number-object@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw=="],
|
||||||
|
|
||||||
|
"is-promise": ["is-promise@4.0.0", "", {}, "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="],
|
||||||
|
|
||||||
|
"is-regex": ["is-regex@1.2.1", "", { "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g=="],
|
||||||
|
|
||||||
|
"is-set": ["is-set@2.0.3", "", {}, "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg=="],
|
||||||
|
|
||||||
|
"is-shared-array-buffer": ["is-shared-array-buffer@1.0.4", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A=="],
|
||||||
|
|
||||||
|
"is-string": ["is-string@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA=="],
|
||||||
|
|
||||||
|
"is-symbol": ["is-symbol@1.1.1", "", { "dependencies": { "call-bound": "^1.0.2", "has-symbols": "^1.1.0", "safe-regex-test": "^1.1.0" } }, "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w=="],
|
||||||
|
|
||||||
|
"is-typed-array": ["is-typed-array@1.1.15", "", { "dependencies": { "which-typed-array": "^1.1.16" } }, "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ=="],
|
||||||
|
|
||||||
|
"is-weakmap": ["is-weakmap@2.0.2", "", {}, "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w=="],
|
||||||
|
|
||||||
|
"is-weakref": ["is-weakref@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew=="],
|
||||||
|
|
||||||
|
"is-weakset": ["is-weakset@2.0.4", "", { "dependencies": { "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ=="],
|
||||||
|
|
||||||
|
"isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="],
|
||||||
|
|
||||||
|
"isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
|
||||||
|
|
||||||
|
"iterator.prototype": ["iterator.prototype@1.1.5", "", { "dependencies": { "define-data-property": "^1.1.4", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "get-proto": "^1.0.0", "has-symbols": "^1.1.0", "set-function-name": "^2.0.2" } }, "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g=="],
|
||||||
|
|
||||||
|
"js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="],
|
||||||
|
|
||||||
|
"js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="],
|
||||||
|
|
||||||
|
"json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="],
|
||||||
|
|
||||||
|
"json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="],
|
||||||
|
|
||||||
|
"json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="],
|
||||||
|
|
||||||
|
"jsx-ast-utils": ["jsx-ast-utils@2.4.1", "", { "dependencies": { "array-includes": "^3.1.1", "object.assign": "^4.1.0" } }, "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w=="],
|
||||||
|
|
||||||
|
"keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="],
|
||||||
|
|
||||||
|
"levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="],
|
||||||
|
|
||||||
|
"locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="],
|
||||||
|
|
||||||
|
"lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="],
|
||||||
|
|
||||||
|
"loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="],
|
||||||
|
|
||||||
|
"math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="],
|
||||||
|
|
||||||
|
"mdn-data": ["mdn-data@2.20.0", "", {}, "sha512-/d3otgvmquUkAN2RVxSg6lIbQrYX7isR4aC5Hvw8JuHvzctR3eUG50WmsAZjb9MkbJ5LbijPSy7uIxEtQDGI0w=="],
|
||||||
|
|
||||||
|
"media-typer": ["media-typer@1.1.0", "", {}, "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="],
|
||||||
|
|
||||||
|
"merge-descriptors": ["merge-descriptors@2.0.0", "", {}, "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="],
|
||||||
|
|
||||||
|
"mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="],
|
||||||
|
|
||||||
|
"mime-types": ["mime-types@3.0.1", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA=="],
|
||||||
|
|
||||||
|
"minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="],
|
||||||
|
|
||||||
|
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
|
||||||
|
|
||||||
|
"natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="],
|
||||||
|
|
||||||
|
"negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="],
|
||||||
|
|
||||||
|
"object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="],
|
||||||
|
|
||||||
|
"object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="],
|
||||||
|
|
||||||
|
"object-keys": ["object-keys@1.1.1", "", {}, "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="],
|
||||||
|
|
||||||
|
"object.assign": ["object.assign@4.1.7", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0", "has-symbols": "^1.1.0", "object-keys": "^1.1.1" } }, "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw=="],
|
||||||
|
|
||||||
|
"object.entries": ["object.entries@1.1.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-object-atoms": "^1.1.1" } }, "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw=="],
|
||||||
|
|
||||||
|
"object.fromentries": ["object.fromentries@2.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-object-atoms": "^1.0.0" } }, "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ=="],
|
||||||
|
|
||||||
|
"object.values": ["object.values@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA=="],
|
||||||
|
|
||||||
|
"on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="],
|
||||||
|
|
||||||
|
"once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="],
|
||||||
|
|
||||||
|
"optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="],
|
||||||
|
|
||||||
|
"own-keys": ["own-keys@1.0.1", "", { "dependencies": { "get-intrinsic": "^1.2.6", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" } }, "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg=="],
|
||||||
|
|
||||||
|
"p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="],
|
||||||
|
|
||||||
|
"p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="],
|
||||||
|
|
||||||
|
"parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="],
|
||||||
|
|
||||||
|
"parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="],
|
||||||
|
|
||||||
|
"path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="],
|
||||||
|
|
||||||
|
"path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],
|
||||||
|
|
||||||
|
"path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="],
|
||||||
|
|
||||||
|
"path-to-regexp": ["path-to-regexp@8.2.0", "", {}, "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ=="],
|
||||||
|
|
||||||
|
"pkce-challenge": ["pkce-challenge@5.0.0", "", {}, "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ=="],
|
||||||
|
|
||||||
|
"possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="],
|
||||||
|
|
||||||
|
"prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="],
|
||||||
|
|
||||||
|
"prettier": ["prettier@3.5.3", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw=="],
|
||||||
|
|
||||||
|
"prettier-plugin-jinja-template": ["prettier-plugin-jinja-template@2.1.0", "", { "peerDependencies": { "prettier": "^3.0.0" } }, "sha512-mzoCp2Oy9BDSug80fw3B3J4n4KQj1hRvoQOL1akqcDKBb5nvYxrik9zUEDs4AEJ6nK7QDTGoH0y9rx7AlnQ78Q=="],
|
||||||
|
|
||||||
|
"prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="],
|
||||||
|
|
||||||
|
"proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="],
|
||||||
|
|
||||||
|
"punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="],
|
||||||
|
|
||||||
|
"qs": ["qs@6.14.0", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w=="],
|
||||||
|
|
||||||
|
"range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="],
|
||||||
|
|
||||||
|
"raw-body": ["raw-body@3.0.0", "", { "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", "iconv-lite": "0.6.3", "unpipe": "1.0.0" } }, "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g=="],
|
||||||
|
|
||||||
|
"react": ["react@16.14.0", "", { "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2" } }, "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g=="],
|
||||||
|
|
||||||
|
"react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="],
|
||||||
|
|
||||||
|
"reflect.getprototypeof": ["reflect.getprototypeof@1.0.10", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="],
|
||||||
|
|
||||||
|
"regexp.prototype.flags": ["regexp.prototype.flags@1.5.4", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", "get-proto": "^1.0.1", "gopd": "^1.2.0", "set-function-name": "^2.0.2" } }, "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA=="],
|
||||||
|
|
||||||
|
"resolve": ["resolve@2.0.0-next.5", "", { "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA=="],
|
||||||
|
|
||||||
|
"resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="],
|
||||||
|
|
||||||
|
"router": ["router@2.2.0", "", { "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", "is-promise": "^4.0.0", "parseurl": "^1.3.3", "path-to-regexp": "^8.0.0" } }, "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ=="],
|
||||||
|
|
||||||
|
"safe-array-concat": ["safe-array-concat@1.1.3", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "has-symbols": "^1.1.0", "isarray": "^2.0.5" } }, "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q=="],
|
||||||
|
|
||||||
|
"safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="],
|
||||||
|
|
||||||
|
"safe-push-apply": ["safe-push-apply@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "isarray": "^2.0.5" } }, "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA=="],
|
||||||
|
|
||||||
|
"safe-regex-test": ["safe-regex-test@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-regex": "^1.2.1" } }, "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw=="],
|
||||||
|
|
||||||
|
"safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="],
|
||||||
|
|
||||||
|
"semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="],
|
||||||
|
|
||||||
|
"send": ["send@1.2.0", "", { "dependencies": { "debug": "^4.3.5", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", "http-errors": "^2.0.0", "mime-types": "^3.0.1", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "statuses": "^2.0.1" } }, "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw=="],
|
||||||
|
|
||||||
|
"serve-static": ["serve-static@2.2.0", "", { "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", "send": "^1.2.0" } }, "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ=="],
|
||||||
|
|
||||||
|
"set-function-length": ["set-function-length@1.2.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2" } }, "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg=="],
|
||||||
|
|
||||||
|
"set-function-name": ["set-function-name@2.0.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", "has-property-descriptors": "^1.0.2" } }, "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ=="],
|
||||||
|
|
||||||
|
"set-proto": ["set-proto@1.0.0", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0" } }, "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw=="],
|
||||||
|
|
||||||
|
"setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="],
|
||||||
|
|
||||||
|
"shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="],
|
||||||
|
|
||||||
|
"shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="],
|
||||||
|
|
||||||
|
"side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="],
|
||||||
|
|
||||||
|
"side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="],
|
||||||
|
|
||||||
|
"side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="],
|
||||||
|
|
||||||
|
"side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="],
|
||||||
|
|
||||||
|
"source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
|
||||||
|
|
||||||
|
"statuses": ["statuses@2.0.1", "", {}, "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="],
|
||||||
|
|
||||||
|
"string.prototype.matchall": ["string.prototype.matchall@4.0.12", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "regexp.prototype.flags": "^1.5.3", "set-function-name": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA=="],
|
||||||
|
|
||||||
|
"string.prototype.repeat": ["string.prototype.repeat@1.0.0", "", { "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" } }, "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w=="],
|
||||||
|
|
||||||
|
"string.prototype.trim": ["string.prototype.trim@1.2.10", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-data-property": "^1.1.4", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-object-atoms": "^1.0.0", "has-property-descriptors": "^1.0.2" } }, "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA=="],
|
||||||
|
|
||||||
|
"string.prototype.trimend": ["string.prototype.trimend@1.0.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ=="],
|
||||||
|
|
||||||
|
"string.prototype.trimstart": ["string.prototype.trimstart@1.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg=="],
|
||||||
|
|
||||||
|
"strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="],
|
||||||
|
|
||||||
|
"supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="],
|
||||||
|
|
||||||
|
"supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="],
|
||||||
|
|
||||||
|
"toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="],
|
||||||
|
|
||||||
|
"type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="],
|
||||||
|
|
||||||
|
"type-is": ["type-is@2.0.1", "", { "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw=="],
|
||||||
|
|
||||||
|
"typed-array-buffer": ["typed-array-buffer@1.0.3", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-typed-array": "^1.1.14" } }, "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw=="],
|
||||||
|
|
||||||
|
"typed-array-byte-length": ["typed-array-byte-length@1.0.3", "", { "dependencies": { "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.14" } }, "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg=="],
|
||||||
|
|
||||||
|
"typed-array-byte-offset": ["typed-array-byte-offset@1.0.4", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.15", "reflect.getprototypeof": "^1.0.9" } }, "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ=="],
|
||||||
|
|
||||||
|
"typed-array-length": ["typed-array-length@1.0.7", "", { "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "is-typed-array": "^1.1.13", "possible-typed-array-names": "^1.0.0", "reflect.getprototypeof": "^1.0.6" } }, "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg=="],
|
||||||
|
|
||||||
|
"unbox-primitive": ["unbox-primitive@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", "has-symbols": "^1.1.0", "which-boxed-primitive": "^1.1.1" } }, "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw=="],
|
||||||
|
|
||||||
|
"unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="],
|
||||||
|
|
||||||
|
"uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="],
|
||||||
|
|
||||||
|
"vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="],
|
||||||
|
|
||||||
|
"which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
|
||||||
|
|
||||||
|
"which-boxed-primitive": ["which-boxed-primitive@1.1.1", "", { "dependencies": { "is-bigint": "^1.1.0", "is-boolean-object": "^1.2.1", "is-number-object": "^1.1.1", "is-string": "^1.1.1", "is-symbol": "^1.1.1" } }, "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA=="],
|
||||||
|
|
||||||
|
"which-builtin-type": ["which-builtin-type@1.2.1", "", { "dependencies": { "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", "is-date-object": "^1.1.0", "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", "is-regex": "^1.2.1", "is-weakref": "^1.0.2", "isarray": "^2.0.5", "which-boxed-primitive": "^1.1.0", "which-collection": "^1.0.2", "which-typed-array": "^1.1.16" } }, "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q=="],
|
||||||
|
|
||||||
|
"which-collection": ["which-collection@1.0.2", "", { "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", "is-weakmap": "^2.0.2", "is-weakset": "^2.0.3" } }, "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw=="],
|
||||||
|
|
||||||
|
"which-typed-array": ["which-typed-array@1.1.19", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw=="],
|
||||||
|
|
||||||
|
"word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="],
|
||||||
|
|
||||||
|
"wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="],
|
||||||
|
|
||||||
|
"yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="],
|
||||||
|
|
||||||
|
"zod": ["zod@3.24.4", "", {}, "sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg=="],
|
||||||
|
|
||||||
|
"zod-to-json-schema": ["zod-to-json-schema@3.24.5", "", { "peerDependencies": { "zod": "^3.24.1" } }, "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g=="],
|
||||||
|
|
||||||
|
"@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="],
|
||||||
|
|
||||||
|
"@eslint/eslintrc/globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="],
|
||||||
|
|
||||||
|
"@eslint/json/@eslint/core": ["@eslint/core@0.12.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg=="],
|
||||||
|
|
||||||
|
"@humanfs/node/@humanwhocodes/retry": ["@humanwhocodes/retry@0.3.1", "", {}, "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA=="],
|
||||||
|
}
|
||||||
|
}
|
||||||
103
devenv.lock
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
26
devenv.nix
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
packages = [
|
||||||
|
pkgs.git
|
||||||
|
pkgs.bun
|
||||||
|
pkgs.act
|
||||||
|
];
|
||||||
|
|
||||||
|
languages = {
|
||||||
|
python = {
|
||||||
|
enable = true;
|
||||||
|
uv = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
javascript.bun = {
|
||||||
|
enable = true;
|
||||||
|
install.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
4
devenv.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# yaml-language-server: $schema=https://devenv.sh/devenv.schema.json
|
||||||
|
inputs:
|
||||||
|
nixpkgs:
|
||||||
|
url: github:cachix/devenv-nixpkgs/rolling
|
||||||
@@ -87,9 +87,9 @@ qthelp:
|
|||||||
@echo
|
@echo
|
||||||
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
|
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
|
||||||
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
|
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
|
||||||
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/invenio-theme-tugraz.qhcp"
|
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/invenio-theme-iform.qhcp"
|
||||||
@echo "To view the help file:"
|
@echo "To view the help file:"
|
||||||
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/invenio-theme-tugraz.qhc"
|
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/invenio-theme-iform.qhc"
|
||||||
|
|
||||||
applehelp:
|
applehelp:
|
||||||
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
|
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
|
||||||
@@ -104,8 +104,8 @@ devhelp:
|
|||||||
@echo
|
@echo
|
||||||
@echo "Build finished."
|
@echo "Build finished."
|
||||||
@echo "To view the help file:"
|
@echo "To view the help file:"
|
||||||
@echo "# mkdir -p $$HOME/.local/share/devhelp/invenio-theme-tugraz"
|
@echo "# mkdir -p $$HOME/.local/share/devhelp/invenio-theme-iform"
|
||||||
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/invenio-theme-tugraz"
|
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/invenio-theme-iform"
|
||||||
@echo "# devhelp"
|
@echo "# devhelp"
|
||||||
|
|
||||||
epub:
|
epub:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
..
|
..
|
||||||
Copyright (C) 2020-2021 Graz University of Technology.
|
Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
|
|
||||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the MIT License; see LICENSE file for more
|
modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
details.
|
details.
|
||||||
|
|
||||||
@@ -9,11 +9,11 @@
|
|||||||
API Docs
|
API Docs
|
||||||
========
|
========
|
||||||
|
|
||||||
.. automodule:: invenio_theme_tugraz.ext
|
.. automodule:: invenio_theme_iform.ext
|
||||||
:members:
|
:members:
|
||||||
|
|
||||||
Views
|
Views
|
||||||
-----
|
-----
|
||||||
|
|
||||||
.. automodule:: invenio_theme_tugraz.views
|
.. automodule:: invenio_theme_iform.views
|
||||||
:members:
|
:members:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
..
|
..
|
||||||
Copyright (C) 2020-2021 Graz University of Technology.
|
Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
|
|
||||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the MIT License; see LICENSE file for more
|
modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
details.
|
details.
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
..
|
..
|
||||||
Copyright (C) 2020-2021 Graz University of Technology.
|
Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
|
|
||||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the MIT License; see LICENSE file for more
|
modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
details.
|
details.
|
||||||
|
|
||||||
|
|||||||
44
docs/conf.py
@@ -2,13 +2,13 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2020-2021 Graz University of Technology.
|
# Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
#
|
#
|
||||||
# invenio-theme-tugraz is free software; you can redistribute it and/or
|
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
# details.
|
# details.
|
||||||
|
|
||||||
"""Sphinx configuration."""
|
"""Sphinx configuration."""
|
||||||
|
|
||||||
from invenio_theme_tugraz import __version__
|
from invenio_theme_iform import __version__
|
||||||
|
|
||||||
# -- General configuration ------------------------------------------------
|
# -- General configuration ------------------------------------------------
|
||||||
|
|
||||||
@@ -44,9 +44,9 @@ source_suffix = ".rst"
|
|||||||
master_doc = "index"
|
master_doc = "index"
|
||||||
|
|
||||||
# General information about the project.
|
# General information about the project.
|
||||||
project = "invenio-theme-tugraz"
|
project = "invenio-theme-iform"
|
||||||
copyright = "2020, Graz University of Technology"
|
copyright = "2025, I-Form"
|
||||||
author = "Graz University of Technology"
|
author = "I-Form"
|
||||||
|
|
||||||
# The version info for the project you're documenting, acts as replacement for
|
# The version info for the project you're documenting, acts as replacement for
|
||||||
# |version| and |release|, also used in various other places throughout the
|
# |version| and |release|, also used in various other places throughout the
|
||||||
@@ -106,15 +106,15 @@ todo_include_todos = False
|
|||||||
html_theme = "alabaster"
|
html_theme = "alabaster"
|
||||||
|
|
||||||
html_theme_options = {
|
html_theme_options = {
|
||||||
"description": "invenio module for TUGRAZ theme.",
|
"description": "invenio module for I-Form theme.",
|
||||||
"github_user": "TU Graz",
|
"github_user": "Cian-H",
|
||||||
"github_repo": "invenio-theme-tugraz",
|
"github_repo": "invenio-theme-iform",
|
||||||
"github_button": False,
|
"github_button": True,
|
||||||
"github_banner": True,
|
"github_banner": False,
|
||||||
"show_powered_by": False,
|
"show_powered_by": False,
|
||||||
"extra_nav_links": {
|
"extra_nav_links": {
|
||||||
"invenio-theme-tugraz@GitHub": "https://github.com/tu-graz-library/invenio-theme-tugraz",
|
"invenio-theme-iform@GitHub": "https://github.com/Cian-H/invenio-theme-iform",
|
||||||
"invenio-theme-tugraz@PyPI": "https://pypi.python.org/pypi/invenio-theme-tugraz/",
|
"invenio-theme-iform@PyPI": "https://pypi.python.org/pypi/invenio-theme-iform/",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,7 +219,7 @@ html_sidebars = {
|
|||||||
# html_search_scorer = 'scorer.js'
|
# html_search_scorer = 'scorer.js'
|
||||||
|
|
||||||
# Output file base name for HTML help builder.
|
# Output file base name for HTML help builder.
|
||||||
htmlhelp_basename = "invenio-theme-tugraz_namedoc"
|
htmlhelp_basename = "invenio-theme-iform_namedoc"
|
||||||
|
|
||||||
# -- Options for LaTeX output ---------------------------------------------
|
# -- Options for LaTeX output ---------------------------------------------
|
||||||
|
|
||||||
@@ -240,9 +240,9 @@ latex_elements = {
|
|||||||
latex_documents = [
|
latex_documents = [
|
||||||
(
|
(
|
||||||
master_doc,
|
master_doc,
|
||||||
"invenio-theme-tugraz.tex",
|
"invenio-theme-iform.tex",
|
||||||
"invenio-theme-tugraz Documentation",
|
"invenio-theme-iform Documentation",
|
||||||
"Graz University of Technology",
|
"I-Form",
|
||||||
"manual",
|
"manual",
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
@@ -275,8 +275,8 @@ latex_documents = [
|
|||||||
man_pages = [
|
man_pages = [
|
||||||
(
|
(
|
||||||
master_doc,
|
master_doc,
|
||||||
"invenio-theme-tugraz",
|
"invenio-theme-iform",
|
||||||
"invenio-theme-tugraz Documentation",
|
"invenio-theme-iform Documentation",
|
||||||
[author],
|
[author],
|
||||||
1,
|
1,
|
||||||
)
|
)
|
||||||
@@ -294,11 +294,11 @@ man_pages = [
|
|||||||
texinfo_documents = [
|
texinfo_documents = [
|
||||||
(
|
(
|
||||||
master_doc,
|
master_doc,
|
||||||
"invenio-theme-tugraz",
|
"invenio-theme-iform",
|
||||||
"invenio-theme-tugraz Documentation",
|
"invenio-theme-iform Documentation",
|
||||||
author,
|
author,
|
||||||
"invenio-theme-tugraz",
|
"invenio-theme-iform",
|
||||||
"invenio module for TUGRAZ theme.",
|
"invenio module for I-Form theme.",
|
||||||
"Miscellaneous",
|
"Miscellaneous",
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
..
|
..
|
||||||
Copyright (C) 2020-2021 Graz University of Technology.
|
Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
|
|
||||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the MIT License; see LICENSE file for more
|
modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
details.
|
details.
|
||||||
|
|
||||||
@@ -9,5 +9,5 @@
|
|||||||
Configuration
|
Configuration
|
||||||
=============
|
=============
|
||||||
|
|
||||||
.. automodule:: invenio_theme_tugraz.config
|
.. automodule:: invenio_theme_iform.config
|
||||||
:members:
|
:members:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
..
|
..
|
||||||
Copyright (C) 2020-2021 Graz University of Technology.
|
Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
|
|
||||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the MIT License; see LICENSE file for more
|
modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
details.
|
details.
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
..
|
..
|
||||||
Copyright (C) 2020-2021 Graz University of Technology.
|
Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
|
|
||||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the MIT License; see LICENSE file for more
|
modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
details.
|
details.
|
||||||
|
|
||||||
@@ -12,7 +12,7 @@ User's Guide
|
|||||||
------------
|
------------
|
||||||
|
|
||||||
This part of the documentation will show you how to get started in using
|
This part of the documentation will show you how to get started in using
|
||||||
invenio-theme-tugraz.
|
invenio-theme-iform.
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
..
|
..
|
||||||
Copyright (C) 2020-2021 Graz University of Technology.
|
Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
|
|
||||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the MIT License; see LICENSE file for more
|
modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
details.
|
details.
|
||||||
|
|
||||||
|
|||||||
@@ -127,9 +127,9 @@ if "%1" == "qthelp" (
|
|||||||
echo.
|
echo.
|
||||||
echo.Build finished; now you can run "qcollectiongenerator" with the ^
|
echo.Build finished; now you can run "qcollectiongenerator" with the ^
|
||||||
.qhcp project file in %BUILDDIR%/qthelp, like this:
|
.qhcp project file in %BUILDDIR%/qthelp, like this:
|
||||||
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\invenio-theme-tugraz.qhcp
|
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\invenio-theme-iform.qhcp
|
||||||
echo.To view the help file:
|
echo.To view the help file:
|
||||||
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\invenio-theme-tugraz.ghc
|
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\invenio-theme-iform.ghc
|
||||||
goto end
|
goto end
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
-e .[docs,tests]
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
..
|
..
|
||||||
Copyright (C) 2020-2021 Graz University of Technology.
|
Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
|
|
||||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the MIT License; see LICENSE file for more
|
modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
details.
|
details.
|
||||||
|
|
||||||
@@ -9,4 +9,4 @@
|
|||||||
Usage
|
Usage
|
||||||
=====
|
=====
|
||||||
|
|
||||||
.. automodule:: invenio_theme_tugraz
|
.. automodule:: invenio_theme_iform
|
||||||
|
|||||||
32
eslint.config.mjs
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
import js from "@eslint/js";
|
||||||
|
import globals from "globals";
|
||||||
|
import pluginReact from "eslint-plugin-react";
|
||||||
|
import json from "@eslint/json";
|
||||||
|
import css from "@eslint/css";
|
||||||
|
import { defineConfig } from "eslint/config";
|
||||||
|
|
||||||
|
export default defineConfig([
|
||||||
|
{ files: ["**/*.{js,mjs,cjs,jsx}"], plugins: { js }, extends: ["js/recommended"] },
|
||||||
|
{ files: ["**/*.{js,mjs,cjs,jsx}"], languageOptions: { globals: globals.browser } },
|
||||||
|
pluginReact.configs.flat.recommended,
|
||||||
|
{
|
||||||
|
files: ["**/*.json"],
|
||||||
|
plugins: { json },
|
||||||
|
language: "json/json",
|
||||||
|
extends: ["json/recommended"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ["**/*.jsonc"],
|
||||||
|
plugins: { json },
|
||||||
|
language: "json/jsonc",
|
||||||
|
extends: ["json/recommended"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ["**/*.json5"],
|
||||||
|
plugins: { json },
|
||||||
|
language: "json/json5",
|
||||||
|
extends: ["json/recommended"],
|
||||||
|
},
|
||||||
|
{ files: ["**/*.css"], plugins: { css }, language: "css/css", extends: ["css/recommended"] },
|
||||||
|
{ settings: { react: { version: "detect" } } },
|
||||||
|
]);
|
||||||
11
invenio_theme_iform/__about__.py
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Copyright (C) 2025 I-Form Advanced Manufacturing Research Centre.
|
||||||
|
#
|
||||||
|
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
|
# details.
|
||||||
|
|
||||||
|
"""Metadata for this python module."""
|
||||||
|
|
||||||
|
__version__ = "2025.6.6.4"
|
||||||
14
invenio_theme_iform/__init__.py
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Copyright (C) 2020-2022 Graz University of Technology.
|
||||||
|
#
|
||||||
|
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
|
# details.
|
||||||
|
|
||||||
|
"""invenio module for I-Form theme."""
|
||||||
|
|
||||||
|
from .__about__ import __version__
|
||||||
|
from .ext import InvenioThemeIform
|
||||||
|
|
||||||
|
__all__ = ("__version__", "InvenioThemeIform")
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
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,
|
||||||
|
);
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
// 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;
|
||||||
|
}
|
||||||
|
});
|
||||||
@@ -0,0 +1,165 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2020 TUGRAZ.
|
||||||
|
* Copyright (C) 2020 Nikita Lvov.
|
||||||
|
*
|
||||||
|
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the MIT License; see LICENSE file for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.cover-page {
|
||||||
|
//text-align: center;
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#login-iform-logo {
|
||||||
|
& g {
|
||||||
|
fill: @iformBlue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#login-tug-logo:hover {
|
||||||
|
& g {
|
||||||
|
fill: @iformBlack;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.accounts-link {
|
||||||
|
margin: 5%;
|
||||||
|
color: @primaryLink;
|
||||||
|
border: 1px solid @primaryLink;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.accounts-link :hover {
|
||||||
|
font-size: smaller !important;
|
||||||
|
color: @primaryLink;
|
||||||
|
background-color: @primaryLinkHoverBackground !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tu-button-style button {
|
||||||
|
cursor: pointer;
|
||||||
|
border: 1px solid @primaryButton;
|
||||||
|
background-color: transparent;
|
||||||
|
height: 29px;
|
||||||
|
color: @primaryButton;
|
||||||
|
font-family: "Source Sans Pro";
|
||||||
|
font-weight: 300;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tu-button-style button:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
color: @primaryButton;
|
||||||
|
background-color: @primaryButtonHoverBackground !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-accounts {
|
||||||
|
margin: 15%;
|
||||||
|
text-align: left !important;
|
||||||
|
|
||||||
|
& i {
|
||||||
|
color: @primaryFormAccounts !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
& label {
|
||||||
|
display: flex !important;
|
||||||
|
font-weight: 300 !important;
|
||||||
|
color: @primaryFormAccounts !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
& input {
|
||||||
|
border: 0px none !important;
|
||||||
|
padding: 0px !important;
|
||||||
|
border-bottom: 1px solid @primaryFormAccounts !important;
|
||||||
|
background-color: transparent !important;
|
||||||
|
color: @primaryFormAccounts !important;
|
||||||
|
border-radius: 0 !important;
|
||||||
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
& input::placeholder {
|
||||||
|
opacity: 1 !important;
|
||||||
|
color: @formAccountsInputPlaceholder !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
& th {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
& td {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.field > input::selection {
|
||||||
|
background: @fieldInputSelectionBackground;
|
||||||
|
}
|
||||||
|
|
||||||
|
.accounts-header {
|
||||||
|
font-weight: 300 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
login and sign-up pages form background color
|
||||||
|
*/
|
||||||
|
.sign-form {
|
||||||
|
background-color: @signInBackground !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tug-button-login {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
fill: @iformBlue;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tug-button-login :hover {
|
||||||
|
fill: @primaryButtonHoverBackground;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-page-button {
|
||||||
|
margin: 5%;
|
||||||
|
text-align: center !important;
|
||||||
|
|
||||||
|
& a {
|
||||||
|
padding: 5px;
|
||||||
|
text-decoration: underline !important;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
& a:hover {
|
||||||
|
background-color: @primaryLinkHoverBackground;
|
||||||
|
color: @primaryLink !important;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-page-button-white {
|
||||||
|
color: @primaryButton !important;
|
||||||
|
font-family: "Source Sans Pro";
|
||||||
|
font-size: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-page-button-black {
|
||||||
|
color: @primaryButtonInverted !important;
|
||||||
|
font-family: "Source Sans Pro";
|
||||||
|
font-size: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
allowing to switch columns on the sign-up page on the small screen
|
||||||
|
*/
|
||||||
|
.switch-grid {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
#switch_left {
|
||||||
|
order: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
#switch_right {
|
||||||
|
order: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2022 Graz University of Technology.
|
* Copyright (C) 2022 Graz University of Technology.
|
||||||
*
|
*
|
||||||
* invenio-theme-tugraz is free software; you can redistribute it and/or modify it
|
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the MIT License; see LICENSE file for more details.
|
* under the terms of the MIT License; see LICENSE file for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 Graz University of Technology.
|
||||||
|
*
|
||||||
|
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the MIT License; see LICENSE file for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// deposit form segment styling
|
||||||
|
.ui.inverted.brand.segment {
|
||||||
|
background-color: @greyLight !important;
|
||||||
|
color: @iformBlack !important;
|
||||||
|
|
||||||
|
label {
|
||||||
|
color: @iformBlack;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
}
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
|
*
|
||||||
|
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the MIT License; see LICENSE file for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
display: block;
|
||||||
|
margin-block-start: 0.33em;
|
||||||
|
margin-block-end: 0.33em;
|
||||||
|
margin-inline-start: 0px;
|
||||||
|
margin-inline-end: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
margin-block-start: 0.83em;
|
||||||
|
margin-block-end: 0.83em;
|
||||||
|
margin-inline-start: 0px;
|
||||||
|
margin-inline-end: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ui.blue.labels .label,
|
||||||
|
.ui.blue.label {
|
||||||
|
color: @greyDark !important;
|
||||||
|
background-color: @recordVersionBackground !important;
|
||||||
|
border-color: @recordVersionBackground !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.random-records-frontpage article {
|
||||||
|
border-bottom: 1px solid @randomRecordsFrontpageArticle;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
padding-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.random-records-frontpage .more {
|
||||||
|
margin-top: 20px !important;
|
||||||
|
margin-bottom: 35px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.random-records-frontpage h2 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.badges {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*Zammad form**/
|
||||||
|
.zammad-form {
|
||||||
|
h2 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-group {
|
||||||
|
label {
|
||||||
|
color: @iformBlack;
|
||||||
|
}
|
||||||
|
|
||||||
|
input.form-control {
|
||||||
|
height: 30px;
|
||||||
|
// width: auto;
|
||||||
|
border-radius: 0;
|
||||||
|
font-family: "Source Sans Pro";
|
||||||
|
background: @primaryLinkBackgroundInverted;
|
||||||
|
border: 1px solid rgba(34, 36, 38, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
border: 1px solid rgba(34, 36, 38, 0.15);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
width: 100% !important;
|
||||||
|
cursor: pointer;
|
||||||
|
font-family: "Source Sans Pro";
|
||||||
|
min-height: 1em;
|
||||||
|
line-height: 1em;
|
||||||
|
padding: 0.78571429em 1.5em 0.78571429em;
|
||||||
|
background: @greyLight none;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn:hover {
|
||||||
|
background: @primaryLinkHoverBackground;
|
||||||
|
color: @primaryButton;
|
||||||
|
font-size: 1rem;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
:focus {
|
||||||
|
outline: thin;
|
||||||
|
outline-style: solid;
|
||||||
|
outline-color: @outlineColor;
|
||||||
|
}
|
||||||
@@ -0,0 +1,264 @@
|
|||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
|
*
|
||||||
|
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the MIT License; see LICENSE file for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.ui.inverted.header {
|
||||||
|
color: @primaryLinkInverted;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-page-button {
|
||||||
|
margin: 5%;
|
||||||
|
text-align: center !important;
|
||||||
|
|
||||||
|
& a {
|
||||||
|
padding: 5px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
& a:hover {
|
||||||
|
background-color: @primaryLinkHoverBackground;
|
||||||
|
color: @primaryLink !important;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-color {
|
||||||
|
color: @primaryLinkInverted;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
#switch_left {
|
||||||
|
order: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
#switch_right {
|
||||||
|
order: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2020-2021 Graz University of Technology.
|
* Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
*
|
*
|
||||||
* invenio-theme-tugraz is free software; you can redistribute it and/or modify it
|
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the MIT License; see LICENSE file for more details.
|
* under the terms of the MIT License; see LICENSE file for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -0,0 +1,198 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
|
* Copyright (C) 2025 I-Form Advanced Manufacturing Research Centre.
|
||||||
|
*
|
||||||
|
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the MIT License; see LICENSE file for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/***
|
||||||
|
* Logos background frontpage.
|
||||||
|
* from rgba(173, 206, 224, 0.52)
|
||||||
|
* to #ffffff
|
||||||
|
***/
|
||||||
|
.section-content-light-bg {
|
||||||
|
background-color: @primaryBackground;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* section title.
|
||||||
|
* from #0377cd
|
||||||
|
* to #000000
|
||||||
|
***/
|
||||||
|
.section-title {
|
||||||
|
color: @primaryText;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* login background color
|
||||||
|
* from : rgba(13,95,137,.8)
|
||||||
|
* To #ffffff
|
||||||
|
***/
|
||||||
|
.cover-page {
|
||||||
|
//text-align: center;
|
||||||
|
background-color: @primaryBackground;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* login & sigup page title
|
||||||
|
* from : #0377cd
|
||||||
|
* To #000000
|
||||||
|
***/
|
||||||
|
.panel-free-title {
|
||||||
|
color: @primaryText;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* anchor color
|
||||||
|
* from : #ef4444
|
||||||
|
* To @iformBlue
|
||||||
|
***/
|
||||||
|
a {
|
||||||
|
color: @iformBlue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* force: the font changes
|
||||||
|
***/
|
||||||
|
*,
|
||||||
|
html,
|
||||||
|
body,
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6,
|
||||||
|
pre,
|
||||||
|
.ui.button,
|
||||||
|
.ui.items,
|
||||||
|
.ui.accordion .title:not(.ui),
|
||||||
|
.ui.items>.item>.content>.header,
|
||||||
|
.ui.modal>.header,
|
||||||
|
.ui.menu,
|
||||||
|
.ui.header,
|
||||||
|
.ui.form input[type],
|
||||||
|
.ui.form input[type]:focus {
|
||||||
|
font-family: "Source Sans Pro";
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* search.button
|
||||||
|
***/
|
||||||
|
/*.ui.button,*/
|
||||||
|
.ui.search.button {
|
||||||
|
background-color: @iformBlue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* accordion title
|
||||||
|
***/
|
||||||
|
.ui.accordion.styled {
|
||||||
|
|
||||||
|
.title,
|
||||||
|
.title.active {
|
||||||
|
background-color: @greyLight;
|
||||||
|
color: rgba(0, 0, 0, 0.6);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* buttons hover and accordion hover
|
||||||
|
***/
|
||||||
|
.ui.button:hover,
|
||||||
|
.ui.search.button:hover,
|
||||||
|
.ui.accordion.styled .title:hover,
|
||||||
|
.ui.accordion.styled .accordion .title:hover {
|
||||||
|
background-color: @primaryButtonHoverBackground;
|
||||||
|
color: @primaryButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* force: remove corners from border
|
||||||
|
***/
|
||||||
|
.label-keyword,
|
||||||
|
.ui.label,
|
||||||
|
.ui.button,
|
||||||
|
.ui.rdm-sidebar,
|
||||||
|
.ui.menu,
|
||||||
|
.ui.input>input,
|
||||||
|
/* it seams redundant but it is not */
|
||||||
|
.ui.segment,
|
||||||
|
.ui.selection.dropdown,
|
||||||
|
.ui.accordion.styled,
|
||||||
|
.ui.card,
|
||||||
|
.ui.cards>.card,
|
||||||
|
.ui.basic.button,
|
||||||
|
.ui.basic.buttons .button,
|
||||||
|
.ui.action.input:not([class*="left action"])>.button:last-child,
|
||||||
|
.ui.action.input:not([class*="left action"])>.buttons:last-child>.button,
|
||||||
|
.ui.action.input:not([class*="left action"])>.dropdown:last-child,
|
||||||
|
.ui.form input[type],
|
||||||
|
.ui.form input[type]:focus {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* force: rdm-side-bar same empty box as on the frontpage
|
||||||
|
***/
|
||||||
|
.ui.rdm-sidebar {
|
||||||
|
background-color: unset;
|
||||||
|
box-shadow: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* force: font weight: normal
|
||||||
|
***/
|
||||||
|
.ui.label {
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
// override access badges color
|
||||||
|
.ui.label.access-status {
|
||||||
|
&.open {
|
||||||
|
background-color: @accessRightOpen;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.embargoed {
|
||||||
|
background-color: @accessRightEmbargoed;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.metadata-only {
|
||||||
|
background-color: @accessRightMetadata;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Source Sans Pro";
|
||||||
|
src: url("./fonts/SourceSansPro/SourceSansPro-Regular.ttf") format("truetype");
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Source Sans Pro";
|
||||||
|
src: url("./fonts/SourceSansPro/SourceSansPro-Italic.ttf") format("truetype");
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mainly for the overview. maybe this should be written more specific to apply
|
||||||
|
* only for the overview use case.
|
||||||
|
*/
|
||||||
|
.ui.segment:first-child {
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ui.equal.height .ui.segment {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ui.flashed.message.manage {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2020 Graz University of Technology
|
||||||
|
*
|
||||||
|
* invenio-theme-iform is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the MIT License; see LICENSE file for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.top-bottom-padded {
|
||||||
|
margin: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.label.label-keyword {
|
||||||
|
font-size: 0.71428571rem;
|
||||||
|
font-weight: 400;
|
||||||
|
background-color: @labelKeywordBackground;
|
||||||
|
border: unset;
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2020-2023 Graz University of Technology
|
* Copyright (C) 2020-2023 Graz University of Technology
|
||||||
*
|
*
|
||||||
* invenio-theme-tugraz is free software; you can redistribute it and/or modify
|
* 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.
|
* it under the terms of the MIT License; see LICENSE file for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
.creator:not(:last-child):after {
|
.creator:not(:last-child):after {
|
||||||
color: @greyDark;
|
color: @greyDark;
|
||||||
content: ';';
|
content: ";";
|
||||||
}
|
}
|
||||||
|
|
||||||
.creator {
|
.creator {
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2020-2022 Graz University of Technology.
|
* Copyright (C) 2020-2022 Graz University of Technology.
|
||||||
|
* Copyright (C) 2025 I-Form Advanced Manufacturing Research Centre.
|
||||||
*
|
*
|
||||||
* invenio-theme-tugraz is free software; you can redistribute it and/or modify it
|
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the MIT License; see LICENSE file for more details.
|
* under the terms of the MIT License; see LICENSE file for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -27,10 +28,12 @@
|
|||||||
|
|
||||||
// used in various templates
|
// used in various templates
|
||||||
// add no hyperlink decoration
|
// add no hyperlink decoration
|
||||||
.no-decoration{
|
.no-decoration {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
transition: background-color 0.15s ease 0s, color 0.15s ease 0s;
|
transition:
|
||||||
|
background-color 0.15s ease 0s,
|
||||||
|
color 0.15s ease 0s;
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,8 +45,6 @@
|
|||||||
border: 1px solid #bfb5b5;
|
border: 1px solid #bfb5b5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.random-records-frontpage {}
|
|
||||||
|
|
||||||
.random-records-frontpage .grid .column {
|
.random-records-frontpage .grid .column {
|
||||||
width: 380px !important;
|
width: 380px !important;
|
||||||
padding: 14px !important;
|
padding: 14px !important;
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
/*
|
||||||
|
* 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;
|
||||||
114
invenio_theme_iform/config.py
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
# -*- 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",
|
||||||
|
}
|
||||||
105
invenio_theme_iform/ext.py
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
# -*- 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
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2020-2023 Graz University of Technology.
|
# Copyright (C) 2020-2023 Graz University of Technology.
|
||||||
#
|
#
|
||||||
# invenio-theme-tugraz is free software; you can redistribute it and/or
|
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
# details.
|
# details.
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 566 B After Width: | Height: | Size: 566 B |
BIN
invenio_theme_iform/static/favicon.ico
Normal file
|
After Width: | Height: | Size: 330 KiB |
BIN
invenio_theme_iform/static/images/SFI_logo.png
Normal file
|
After Width: | Height: | Size: 137 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 583 B After Width: | Height: | Size: 583 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
BIN
invenio_theme_iform/static/images/icon_use.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
invenio_theme_iform/static/images/iform_logo.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
BIN
invenio_theme_iform/static/images/login_logo.png
Normal file
|
After Width: | Height: | Size: 321 KiB |
|
Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 95 KiB |
|
Before Width: | Height: | Size: 256 B After Width: | Height: | Size: 256 B |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 510 B After Width: | Height: | Size: 510 B |
1
invenio_theme_iform/templates/invenio_theme_iform/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.zed
|
||||||
13
invenio_theme_iform/templates/invenio_theme_iform/423.html
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{#
|
||||||
|
Copyright (C) 2024 Graz University of Technology.
|
||||||
|
|
||||||
|
invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
|
details.
|
||||||
|
#}
|
||||||
|
{% extends config.THEME_ERROR_TEMPLATE %}
|
||||||
|
|
||||||
|
{% block message %}
|
||||||
|
<h1><i class="bolt icon"></i> Locked</h1>
|
||||||
|
<p>The resource that is being accessed is locked.</p>
|
||||||
|
{% endblock message %}
|
||||||
@@ -0,0 +1,134 @@
|
|||||||
|
{#
|
||||||
|
Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
|
Copyright (C) 2025 I-Form Advanced Manufacturing Research Centre.
|
||||||
|
|
||||||
|
invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
|
details.
|
||||||
|
#}
|
||||||
|
|
||||||
|
{% set lang_attr = g.ln.split('_', 1)[0]|safe if g.ln else '' %}
|
||||||
|
{% set html_class_attr = html_css_classes|join(' ') if html_css_classes else '' %}
|
||||||
|
{% set body_class_attr = body_css_classes|join(' ') if body_css_classes else '' %}
|
||||||
|
{% set rtl_attr = rtl_direction|safe if rtl_direction and g.ln else '' %}
|
||||||
|
|
||||||
|
<!doctype html>
|
||||||
|
<html
|
||||||
|
{% if html_class_attr %}class="{{ html_class_attr }}"{% endif %}
|
||||||
|
lang="{{ lang_attr }}"
|
||||||
|
dir="{{ rtl_attr }}"
|
||||||
|
>
|
||||||
|
<head>
|
||||||
|
{%- block head %}
|
||||||
|
{%- block head_meta %}
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
{%- if description %}
|
||||||
|
<meta name="description" content="{{ description }}" />
|
||||||
|
{% endif %}
|
||||||
|
{%- if keywords %}<meta name="keywords" content="{{ keywords }}" />{% endif %}
|
||||||
|
{%- if config.get('THEME_GOOGLE_SITE_VERIFICATION', None) %}
|
||||||
|
{%- for google_id in config.THEME_GOOGLE_SITE_VERIFICATION %}
|
||||||
|
<meta name="google-site-verification" content="{{ google_id }}" />
|
||||||
|
{%- endfor %}
|
||||||
|
{%- endif %}
|
||||||
|
{%- endblock head_meta %}
|
||||||
|
{%- block head_title %}
|
||||||
|
{%- set title = title or config.THEME_SITENAME %}
|
||||||
|
<title>{{ title }}</title>
|
||||||
|
{%- endblock head_title %}
|
||||||
|
{%- block head_links %}
|
||||||
|
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}" />
|
||||||
|
{%- if keywords %}<link rel="canonical" href="{{ canonical_url }}" />{% endif %}
|
||||||
|
{%- block head_links_langs %}
|
||||||
|
{%- if alternate_urls %}
|
||||||
|
{%- for alt_ln, alternate_url in alternate_urls.items() %}
|
||||||
|
<link
|
||||||
|
rel="alternate"
|
||||||
|
hreflang="{{ alt_ln }}"
|
||||||
|
href="{{ alternate_url }}"
|
||||||
|
/>
|
||||||
|
{%- endfor %}
|
||||||
|
{%- endif %}
|
||||||
|
{%- endblock %}
|
||||||
|
{%- block head_apple_icons %}
|
||||||
|
{%- for size in [144, 114, 72, 57] %}
|
||||||
|
{%- set icon_name = 'apple-touch-icon-%d-precomposed.png' | format(size) %}
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon-precomposed"
|
||||||
|
sizes="{{ size }}x{{ size }}"
|
||||||
|
href="{{ url_for('static', filename=icon_name) }}"
|
||||||
|
/>
|
||||||
|
{%- endfor %}
|
||||||
|
{%- endblock head_apple_icons %}
|
||||||
|
{%- endblock head_links %}
|
||||||
|
{%- block header %}
|
||||||
|
{% endblock header %}
|
||||||
|
{%- block css %}
|
||||||
|
{{ webpack['theme.css'] }}
|
||||||
|
{{ webpack['invenio-theme-iform-theme.css'] }}
|
||||||
|
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
||||||
|
<!--[if lt IE 9]>
|
||||||
|
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
||||||
|
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||||||
|
<![endif]-->
|
||||||
|
{%- endblock css %}
|
||||||
|
{%- endblock head %}
|
||||||
|
</head>
|
||||||
|
<body
|
||||||
|
ng-csp
|
||||||
|
{% if body_class_attr %}class="{{ body_class_attr }}"{% endif %}
|
||||||
|
{% if lang_attr %}lang="{{ lang_attr }}"{% endif %}
|
||||||
|
{{ rtl_attr }}
|
||||||
|
itemscope
|
||||||
|
itemtype="http://schema.org/WebPage"
|
||||||
|
data-spy="scroll"
|
||||||
|
data-target=".scrollspy-target"
|
||||||
|
>
|
||||||
|
{% if not config.THEME_IFORM_PRODUCTION %}
|
||||||
|
<div class="ui sticky test-instance">
|
||||||
|
<h4>"Test Instance"</h4>
|
||||||
|
<p>"This is the test instance of the I-Form Repository."</p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{%- block body %}
|
||||||
|
{%- block browserupgrade %}
|
||||||
|
<!--[if lt IE 8]>
|
||||||
|
<p class="browserupgrade">
|
||||||
|
You are using an <strong>outdated</strong> browser. Please
|
||||||
|
<a href="http://browsehappy.com/">upgrade your browser</a> to improve your
|
||||||
|
experience.
|
||||||
|
</p>
|
||||||
|
<![endif]-->
|
||||||
|
{%- endblock browserupgrade %}
|
||||||
|
{%- block body_inner %}
|
||||||
|
|
||||||
|
{%- block navbar_header %}
|
||||||
|
{%- include "invenio_theme_iform/navbar.html" %}
|
||||||
|
<!--Flask messages for accounts-->
|
||||||
|
{%- block flashmessages %}
|
||||||
|
{%- from "invenio_theme/macros/messages.html" import flashed_messages with context -%}
|
||||||
|
{{ flashed_messages() }}
|
||||||
|
{%- endblock flashmessages %}
|
||||||
|
{%- endblock navbar_header %}
|
||||||
|
|
||||||
|
{#
|
||||||
|
{%- block page_header %}
|
||||||
|
{% include config.THEME_HEADER_TEMPLATE %}
|
||||||
|
{%- endblock page_header %}
|
||||||
|
#}
|
||||||
|
|
||||||
|
{%- block page_body %}
|
||||||
|
{% include "invenio_theme/body.html" %}
|
||||||
|
{%- endblock page_body %}
|
||||||
|
{%- endblock body_inner %}
|
||||||
|
{%- block javascript %}
|
||||||
|
{% include config.THEME_JAVASCRIPT_TEMPLATE %}
|
||||||
|
{%- endblock javascript %}
|
||||||
|
{%- block trackingcode %}
|
||||||
|
{% include config.THEME_TRACKINGCODE_TEMPLATE %}
|
||||||
|
{%- endblock %}
|
||||||
|
{%- endblock body %}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
{%- 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 %}
|
||||||
@@ -0,0 +1,111 @@
|
|||||||
|
{#
|
||||||
|
Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
|
|
||||||
|
invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
|
details.
|
||||||
|
#}
|
||||||
|
{% extends config.INVENIO_THEME_IFORM_ACCOUNT_BASE %}
|
||||||
|
{% from "invenio_accounts/_macros.html" import render_field, form_errors %}
|
||||||
|
{%- from "invenio_oauthclient/_macros.html" import oauth_button %}
|
||||||
|
{% block page_body %}
|
||||||
|
<div class="spacer-long"></div>
|
||||||
|
<div class="spacer-long"></div>
|
||||||
|
<div class="ui container">
|
||||||
|
<div class="ui centered grid padded">
|
||||||
|
<div class="ui padded segments large form">
|
||||||
|
<div class="ui login segment padded">
|
||||||
|
<div class="divider hidden"></div>
|
||||||
|
{%- block form_header %}
|
||||||
|
<h3 class="ui login header">Log in to Repository</h3>
|
||||||
|
{%- endblock form_header %}
|
||||||
|
<div class="ui divider"></div>
|
||||||
|
<!--Log in with SSO-->
|
||||||
|
{% if config.OAUTHCLIENT_REMOTE_APPS or config.SSO_SAML_IDPS %}
|
||||||
|
<div class="ui form">
|
||||||
|
{% for name in config.OAUTHCLIENT_REMOTE_APPS.keys() %}
|
||||||
|
{{ oauth_button(name, next=request.args.get('next')) }}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% for name in config.SSO_SAML_IDPS.keys() %}
|
||||||
|
<div class="field">
|
||||||
|
<a
|
||||||
|
class="login-page-button ui fluid large button"
|
||||||
|
href="{{ url_for('sso_saml.sso', idp=name) }}"
|
||||||
|
>
|
||||||
|
Log in with
|
||||||
|
{{ config.SSO_SAML_IDPS[name]['title']|default("SAML", true) }}
|
||||||
|
<img
|
||||||
|
src="{{ url_for('static', filename=config.INVENIO_THEME_IFORM_ICON) }}"
|
||||||
|
height="20px"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
{%- if config.ACCOUNTS_LOCAL_LOGIN_ENABLED %}
|
||||||
|
<div class="ui horizontal divider">Or</div>
|
||||||
|
{%- endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{%- block form_outer %}
|
||||||
|
{%- if config.ACCOUNTS_LOCAL_LOGIN_ENABLED %}
|
||||||
|
{%- with form = login_user_form %}
|
||||||
|
{%- set accordion_active = "active" if form.errors else "" %}
|
||||||
|
<div class="ui styled accordion">
|
||||||
|
<div class="title trigger {{ accordion_active }}">
|
||||||
|
Log in with repository credentials
|
||||||
|
<i class="user icon button"></i>
|
||||||
|
</div>
|
||||||
|
<div class="content {{ accordion_active }}">
|
||||||
|
<form
|
||||||
|
action="{{ url_for_security('login') }}"
|
||||||
|
method="POST"
|
||||||
|
name="login_user_form"
|
||||||
|
class="ui large form"
|
||||||
|
>
|
||||||
|
{{ form.hidden_tag() }}
|
||||||
|
{{ form_errors(form) }}
|
||||||
|
{{ render_field(form.email, icon="user icon", autofocus=True, errormsg=False) }}
|
||||||
|
{{ render_field(form.password, icon="lock icon", errormsg=False) }}
|
||||||
|
<button
|
||||||
|
type="submit"
|
||||||
|
class="ui fluid large submit button"
|
||||||
|
>
|
||||||
|
<i class="ui sign-in icon"></i>Log In
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{%- endwith %}
|
||||||
|
{%- endif %}
|
||||||
|
{%- endblock form_outer %}
|
||||||
|
<div class="divider hidden"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{%- block registerable %}
|
||||||
|
{%- if security.registerable %}
|
||||||
|
<div class="ui primary segment padded text-muted">
|
||||||
|
{% trans sitename=config.ACCOUNTS_SITENAME %}New to {{ sitename }}?{% endtrans %}
|
||||||
|
<a
|
||||||
|
href="{{ url_for_security('register', next=request.args.get('next')) }}"
|
||||||
|
>Sign up</a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
{%- endif %}
|
||||||
|
{%- endblock registerable %}
|
||||||
|
|
||||||
|
{%- block recoverable %}
|
||||||
|
{%- if security.recoverable %}
|
||||||
|
<div class="ui basic segment padded">
|
||||||
|
<a
|
||||||
|
class="ui inverted header tiny"
|
||||||
|
href="{{ url_for_security('forgot_password') }}"
|
||||||
|
>Forgot password?</a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
{%- endif %}
|
||||||
|
{%- endblock recoverable %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock page_body %}
|
||||||
@@ -0,0 +1,108 @@
|
|||||||
|
{#
|
||||||
|
Copyright (C) 2020 Graz University of Technology.
|
||||||
|
|
||||||
|
invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
|
details.
|
||||||
|
#}
|
||||||
|
{% extends config.INVENIO_THEME_IFORM_ACCOUNT_BASE %}
|
||||||
|
{% from "invenio_accounts/_macros.html" import render_field, form_errors %}
|
||||||
|
|
||||||
|
{% block page_body %}
|
||||||
|
<div class="spacer-long"></div>
|
||||||
|
|
||||||
|
<div class="ui container">
|
||||||
|
<div class="ui stackable two column grid">
|
||||||
|
<div class="centered row">
|
||||||
|
<h1 class="ui header">Create an Account</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="column" id="switch_left">
|
||||||
|
<div class="ui basic segment">
|
||||||
|
<h4 class="ui header">Citeable. Discoverable.</h4>
|
||||||
|
<p class="bodytext">
|
||||||
|
Uploads get a Digital Object Identifier (DOI) to make them easily and
|
||||||
|
uniquely citeable.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4 class="ui header">Communities.</h4>
|
||||||
|
<p class="bodytext">
|
||||||
|
Accept or reject uploads to your own community (e.g workshops, EU projects,
|
||||||
|
institutions or entire disciplines).
|
||||||
|
</p>
|
||||||
|
<h4 class="ui header">Trusted Research Data Management</h4>
|
||||||
|
<p class="bodytext">
|
||||||
|
Built on top of I-Form expertise in the managing of research data.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="column" id="switch_right">
|
||||||
|
{# Sigup with SSO #}
|
||||||
|
{%- if config.INVENIO_CONFIG_IFORM_SHIBBOLETH %}
|
||||||
|
<div class="ui divider"></div>
|
||||||
|
<a
|
||||||
|
href="{{ url_for('sso_saml.sso', idp='idp') }}"
|
||||||
|
class="login-page-button ui fluid large button"
|
||||||
|
>
|
||||||
|
<span style="font-size: 18px;">Sign up with I-Form</span>
|
||||||
|
<img
|
||||||
|
src="{{ url_for('static', filename=config.INVENIO_THEME_IFORM_ICON) }}"
|
||||||
|
height="20px"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
<div class="ui inverted horizontal divider">
|
||||||
|
<span class="text-color">{{ _ ("Or") }}</span>
|
||||||
|
</div>
|
||||||
|
{%- endif %}
|
||||||
|
|
||||||
|
{%- block form_header %}
|
||||||
|
{# can add a header img #}
|
||||||
|
{%- block form_outer %}
|
||||||
|
{%- endblock form_outer %}
|
||||||
|
{%- endblock form_header %}
|
||||||
|
|
||||||
|
{%- with form = register_user_form %}
|
||||||
|
{%- set accordion_active = "active" if form.errors else "" %}
|
||||||
|
<div class="ui padded centered large form">
|
||||||
|
<div class="ui styled accordion">
|
||||||
|
<div class="title trigger {{ accordion_active }}">
|
||||||
|
Sign up with repository credentials
|
||||||
|
<i class="user icon button"></i>
|
||||||
|
</div>
|
||||||
|
<div class="content {{ accordion_active }}">
|
||||||
|
<form
|
||||||
|
class="ui large form"
|
||||||
|
action="{{ url_for_security('register') }}"
|
||||||
|
method="POST"
|
||||||
|
name="register_user_form"
|
||||||
|
>
|
||||||
|
{{ form_errors(form) }}
|
||||||
|
{{ form.hidden_tag() }}
|
||||||
|
{%- block registration_form_fields scoped %}
|
||||||
|
{{ render_field(form.email, icon="user icon", autofocus=True, errormsg=False) }}
|
||||||
|
{{ render_field(form.password, icon="lock icon", errormsg=False) }}
|
||||||
|
{%- if form.password_confirm %}
|
||||||
|
{{ render_field(form.password_confirm, icon="lock icon", errormsg=False) }}
|
||||||
|
{%- endif %}
|
||||||
|
{%- endblock registration_form_fields %}
|
||||||
|
|
||||||
|
{%- if form.recaptcha %}
|
||||||
|
<div class="grouped fields">{{ form.recaptcha() }}</div>
|
||||||
|
{%- endif %}
|
||||||
|
|
||||||
|
<div class="centered row">
|
||||||
|
<button type="submit" class="ui fluid large submit button">
|
||||||
|
<i class="ui edit outline icon"></i>Sign up
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{%- endwith %}
|
||||||
|
<div class="ui divider"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock page_body %}
|
||||||
108
invenio_theme_iform/templates/invenio_theme_iform/base.html
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
{#
|
||||||
|
Copyright (C) 2020-2023 Graz University of Technology.
|
||||||
|
|
||||||
|
invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
|
details.
|
||||||
|
#}
|
||||||
|
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="{{ current_i18n.locale.language|safe }}" dir="{{ current_i18n.locale.text_direction }}">
|
||||||
|
<head>
|
||||||
|
{%- block head %}
|
||||||
|
{%- block head_meta %}
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
{%- if description %}
|
||||||
|
<meta name="description" content="{{ description }}" />
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{%- if keywords %}
|
||||||
|
<meta name="keywords" content="{{ keywords }}" />
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{%- if config.get("THEME_GOOGLE_SITE_VERIFICATION", None) %}
|
||||||
|
{%- for google_id in config.THEME_GOOGLE_SITE_VERIFICATION %}
|
||||||
|
<meta name="google-site-verification" content="{{ google_id }}" />
|
||||||
|
{%- endfor %}
|
||||||
|
{%- endif %}
|
||||||
|
{%- endblock head_meta %}
|
||||||
|
|
||||||
|
{%- block head_title %}
|
||||||
|
{%- set title = title or config.THEME_SITENAME %}
|
||||||
|
<title>{{ title }}</title>
|
||||||
|
{%- endblock head_title %}
|
||||||
|
|
||||||
|
{%- block head_links %}
|
||||||
|
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}" />
|
||||||
|
|
||||||
|
{%- if keywords %}
|
||||||
|
<link rel="canonical" href="{{ canonical_url }}" />
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{%- block head_links_langs %}
|
||||||
|
{%- if alternate_urls %}
|
||||||
|
{%- for alt_ln, alternate_url in alternate_urls.items() %}
|
||||||
|
<link
|
||||||
|
rel="alternate"
|
||||||
|
hreflang="{{ alt_ln }}"
|
||||||
|
href="{{ alternate_url }}"
|
||||||
|
/>
|
||||||
|
{%- endfor %}
|
||||||
|
{%- endif %}
|
||||||
|
{%- endblock %}
|
||||||
|
{%- endblock head_links %}
|
||||||
|
|
||||||
|
{%- block header %}
|
||||||
|
{% endblock header %}
|
||||||
|
|
||||||
|
{%- block css %}
|
||||||
|
{{ webpack["theme.css"] }}
|
||||||
|
{{ webpack["invenio-theme-iform-theme.css"] }}
|
||||||
|
{%- endblock css %}
|
||||||
|
{%- endblock head %}
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body
|
||||||
|
itemscope
|
||||||
|
itemtype="http://schema.org/WebPage"
|
||||||
|
data-spy="scroll"
|
||||||
|
data-target=".scrollspy-target"
|
||||||
|
>
|
||||||
|
{%- block body %}
|
||||||
|
{%- block browserupgrade %}
|
||||||
|
<!--[if lt IE 10]>
|
||||||
|
<p class="browserupgrade">
|
||||||
|
You are using an <strong>outdated</strong> browser. Please
|
||||||
|
<a href="http://browsehappy.com/">upgrade your browser</a> to improve your
|
||||||
|
experience.
|
||||||
|
</p>
|
||||||
|
<![endif]-->
|
||||||
|
{%- endblock browserupgrade %}
|
||||||
|
|
||||||
|
{%- block body_inner %}
|
||||||
|
{%- block page_header %}
|
||||||
|
{% include config.THEME_HEADER_TEMPLATE %}
|
||||||
|
{%- endblock page_header %}
|
||||||
|
|
||||||
|
{%- block page_body %}
|
||||||
|
{% include "invenio_theme/body.html" %}
|
||||||
|
{%- endblock page_body %}
|
||||||
|
|
||||||
|
{%- block page_footer %}
|
||||||
|
{% include config.THEME_FOOTER_TEMPLATE %}
|
||||||
|
{%- endblock page_footer %}
|
||||||
|
{%- endblock body_inner %}
|
||||||
|
|
||||||
|
{%- block javascript %}
|
||||||
|
{% include config.THEME_JAVASCRIPT_TEMPLATE %}
|
||||||
|
{%- endblock javascript %}
|
||||||
|
|
||||||
|
{%- block trackingcode %}
|
||||||
|
{% include config.THEME_TRACKINGCODE_TEMPLATE %}
|
||||||
|
{%- endblock %}
|
||||||
|
{%- endblock body %}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
{#
|
||||||
|
Copyright (C) 2020-2024 Graz University of Technology.
|
||||||
|
Copyright (C) 2025 I-Form Advanced Manufacturing Research Centre.
|
||||||
|
|
||||||
|
invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
|
details.
|
||||||
|
#}
|
||||||
|
|
||||||
|
<div class="ui segment" style="padding-bottom: 10px;">
|
||||||
|
<h4>Good reasons to use the I-Form Repository</h4>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><strong>Safe</strong> — Your research results are permanently available.</li>
|
||||||
|
<li>
|
||||||
|
<strong>Trusted</strong> — A service from I-Form, based on software developed by
|
||||||
|
CERN.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Citeable</strong> — Every upload is assigned a Digital Object Identifier
|
||||||
|
(DOI).
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>No waiting time</strong> — Uploads are made available online as soon as
|
||||||
|
you hit publish. Your DOI is registered within seconds.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Open or closed</strong> — You determine the visibility of your uploads. A
|
||||||
|
restricted access mode is possible.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Versioning</strong> — Easily update your dataset with the versioning
|
||||||
|
feature.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Usage statistics</strong> — All uploads display standards compliant usage
|
||||||
|
statistics. <a href="help/statistics">(More)</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
{#
|
||||||
|
Copyright (C) 2020-2024 Graz University of Technology.
|
||||||
|
|
||||||
|
invenio-theme-iform is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
|
details.
|
||||||
|
#}
|
||||||
|
|
||||||
|
<div class="ui segment">
|
||||||
|
<h4>Need help?</h4>
|
||||||
|
|
||||||
|
{%- if config.THEME_IFORM_CONTACT_FORM %}
|
||||||
|
<div style="padding-bottom: 10px;">
|
||||||
|
<a id="feedback-form" class="fluid ui button">Contact us</a>
|
||||||
|
</div>
|
||||||
|
{%- endif %}
|
||||||
|
<p>We can help with:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Uploading your research results, software, preprints, etc.</li>
|
||||||
|
<li>Increasing upload limit beyond our default policy of 10GB.</li>
|
||||||
|
<li>Establishing contact with data stewards.</li>
|
||||||
|
<li>Finding individual solutions.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{#
|
||||||
|
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 %}
|
||||||
161
invenio_theme_iform/templates/invenio_theme_iform/footer.html
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
{#
|
||||||
|
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('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('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>
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
{#
|
||||||
|
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>
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
{#
|
||||||
|
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>
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
<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>
|
||||||
|
After Width: | Height: | Size: 474 B |
|
After Width: | Height: | Size: 16 KiB |
29
invenio_theme_iform/templates/invenio_theme_iform/index.html
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{#
|
||||||
|
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 %}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
{#
|
||||||
|
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('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 %}
|
||||||
@@ -0,0 +1,98 @@
|
|||||||
|
{#
|
||||||
|
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>
|
||||||
154
invenio_theme_iform/templates/invenio_theme_iform/overview.html
Normal file
@@ -0,0 +1,154 @@
|
|||||||
|
{#
|
||||||
|
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('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('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('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('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('static', filename='images/play.svg') }}"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
<div>Overview: Description for open educational resources</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{%- endblock %}
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
{#
|
||||||
|
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>
|
||||||
|
After Width: | Height: | Size: 6.1 KiB |
147
invenio_theme_iform/views.py
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
# -*- 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."""
|
||||||
|
|
||||||
|
import traceback
|
||||||
|
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()`
|
||||||
|
|
||||||
|
msg = f"default_error_handler of invenio-theme-iform captured following error type: {
|
||||||
|
type(e)
|
||||||
|
} with message {e} and stack trace {traceback.format_exc()}"
|
||||||
|
current_app.logger.error(msg)
|
||||||
|
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")
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2020 TUGRAZ.
|
# Copyright (C) 2020 TUGRAZ.
|
||||||
#
|
#
|
||||||
# invenio-theme-tugraz is free software.
|
# invenio-theme-iform is free software.
|
||||||
|
|
||||||
"""JS/CSS Webpack bundles for theme."""
|
"""JS/CSS Webpack bundles for theme."""
|
||||||
|
|
||||||
@@ -15,11 +15,12 @@ theme = WebpackThemeBundle(
|
|||||||
themes={
|
themes={
|
||||||
"semantic-ui": dict(
|
"semantic-ui": dict(
|
||||||
entry={
|
entry={
|
||||||
"invenio-theme-tugraz-theme": "./less/invenio_theme_tugraz/theme.less",
|
"invenio-theme-iform-theme": "./less/invenio_theme_iform/theme.less",
|
||||||
"invenio-theme-tugraz-js": "./js/invenio_theme_tugraz/theme.js",
|
"invenio-theme-iform-js": "./js/invenio_theme_iform/theme.js",
|
||||||
|
"invenio-theme-iform-unlock": "./js/invenio_theme_iform/unlock.js",
|
||||||
},
|
},
|
||||||
dependencies={
|
dependencies={
|
||||||
# add any additional npm dependencies here...
|
"jquery": "^3.2.1", # zammad-form, semantic-ui's modals
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||