Compare commits
152 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 | ||
|
|
7314baccc9 | ||
|
|
66a694a321 | ||
|
|
529b22ad20 | ||
|
|
a5d23135eb | ||
|
|
4c3ebcee23 | ||
|
|
2dcb7c1fab | ||
|
|
fd41e0c073 | ||
|
|
264c915e89 | ||
|
|
0f0bb85deb | ||
|
|
35e5ea38e0 | ||
|
|
7da3f16b00 | ||
|
|
3e10059a6f | ||
|
|
4a0b65300d | ||
|
|
4ad491dd7d | ||
|
|
ed0fae0af0 | ||
|
|
8cd1ba5d99 | ||
|
|
3f13368aa1 | ||
|
|
e3e07541fe | ||
|
|
39d87339c2 | ||
|
|
cf7ecf1f81 | ||
|
|
4c5e888f18 | ||
|
|
9187ffd661 | ||
|
|
fffd744731 | ||
|
|
105db720ea | ||
|
|
0cee624dbb | ||
|
|
c8035571be | ||
|
|
6aba6bcaa0 | ||
|
|
1022fa45f4 | ||
|
|
eb95994afa | ||
|
|
bcacce0644 | ||
|
|
c2494401e9 |
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Copyright (C) 2020-2021 Graz University of Technology.
|
||||
#
|
||||
# invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||
# details.
|
||||
|
||||
|
||||
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 -*-
|
||||
#
|
||||
# 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
|
||||
# details.
|
||||
|
||||
name: CI
|
||||
name: Tests
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: master
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
branches: master
|
||||
schedule:
|
||||
# * is a special character in YAML so you have to quote this string
|
||||
- cron: '0 3 * * 6'
|
||||
branches:
|
||||
- master
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
reason:
|
||||
description: 'Reason'
|
||||
description: "Reason"
|
||||
required: false
|
||||
default: 'Manual trigger'
|
||||
default: "Manual trigger"
|
||||
|
||||
jobs:
|
||||
Tests:
|
||||
runs-on: ubuntu-20.04
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: [3.8, 3.9]
|
||||
requirements-level: [pypi]
|
||||
db-service: [postgresql13]
|
||||
search-service: [opensearch2]
|
||||
include:
|
||||
- search-service: opensearch2
|
||||
SEARCH_EXTRAS: "opensearch2"
|
||||
create-strategy:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
matrix: ${{ steps.requirements.outputs.matrix }}
|
||||
|
||||
env:
|
||||
DB: ${{ matrix.db-service }}
|
||||
SEARCH: ${{ matrix.search-service }}
|
||||
EXTRAS: tests,${{ matrix.SEARCH_EXTRAS }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
|
||||
- name: Generate dependencies
|
||||
- name: requirements
|
||||
id: requirements
|
||||
run: |
|
||||
pip install wheel requirements-builder
|
||||
requirements-builder -e "$EXTRAS" --level=${{ matrix.requirements-level }} setup.py > .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt
|
||||
- name: Cache pip
|
||||
uses: actions/cache@v2
|
||||
# Define a simple matrix with your Python version
|
||||
# Since we're using pyproject.toml with Python 3.12 requirement
|
||||
echo "matrix={\"include\": [{\"python-version\": \"3.12\"}]}" >> $GITHUB_OUTPUT
|
||||
|
||||
# Print the matrix for debugging
|
||||
echo "-------------------"
|
||||
echo "Matrix: {\"include\": [{\"python-version\": \"3.12\"}]}"
|
||||
echo "-------------------"
|
||||
|
||||
tests:
|
||||
needs: create-strategy
|
||||
runs-on: ubuntu-latest
|
||||
name: Test (Python ${{matrix.python-version}})
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix: ${{ fromJson(needs.create-strategy.outputs.matrix) }}
|
||||
|
||||
# Simplified environment without service variables
|
||||
env:
|
||||
PYTHON_VERSION: ${{ matrix.python-version }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up uv
|
||||
uses: astral-sh/setup-uv@v6
|
||||
with:
|
||||
path: ~/.cache/pip
|
||||
key: ${{ runner.os }}-pip-${{ hashFiles('.${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt') }}
|
||||
python-version: "${{ matrix.python-version }}"
|
||||
enable-cache: true
|
||||
cache-dependency-glob: |
|
||||
pyproject.toml
|
||||
cache-suffix: ${{ matrix.python-version }}
|
||||
|
||||
- name: Show configuration
|
||||
run: |
|
||||
uv --version
|
||||
uv run python --version
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
pip install -r .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt
|
||||
pip install ".[$EXTRAS]"
|
||||
pip freeze
|
||||
docker --version
|
||||
docker-compose --version
|
||||
uv sync --group tests
|
||||
|
||||
- name: Run tests
|
||||
env:
|
||||
PYTEST_ADDOPTS: "--cov-report=lcov"
|
||||
run: |
|
||||
./run-tests.sh
|
||||
uv run test
|
||||
|
||||
- name: Upload coverage to Coveralls
|
||||
uses: coverallsapp/github-action@master
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
path-to-lcov: coverage.lcov
|
||||
|
||||
13
.gitignore
vendored
@@ -60,3 +60,16 @@ target/
|
||||
|
||||
# Vim swapfiles
|
||||
.*.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.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
Authors
|
||||
=======
|
||||
|
||||
invenio module for TUGRAZ theme.
|
||||
Invenio module for iform theme.
|
||||
|
||||
- mojib wali <mojib.wali@tugraz.at>
|
||||
- cian hughes <cian.hughes@dcu.ie>
|
||||
|
||||
Forked from https://github.com/tu-graz-library/invenio-theme-tugraz
|
||||
|
||||
96
CHANGES.rst
@@ -1,13 +1,107 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
Changes
|
||||
=======
|
||||
|
||||
Version v4.13.0 (release 2025-01-24)
|
||||
|
||||
- setup: necessary because devs not released
|
||||
- view: add route for rdm-search
|
||||
- setup: relax upper pins
|
||||
- add default-page for unhandled errors
|
||||
- guard views/dashboard by `tugraz_authenticated`
|
||||
- fix deprecated `before_app_first_request`
|
||||
|
||||
|
||||
Version v4.12.9 (release 2024-05-07)
|
||||
|
||||
- overview: view publications only if permission
|
||||
|
||||
|
||||
Version v4.12.8 (release 2024-03-11)
|
||||
|
||||
- ui: add banner to header
|
||||
|
||||
|
||||
Version v4.12.7 (release 2024-02-12)
|
||||
|
||||
- translation: fix typo
|
||||
|
||||
|
||||
Version v4.12.6 (release 2024-02-02)
|
||||
|
||||
- fix: error_handler gets 1 parameter
|
||||
|
||||
|
||||
Version v4.12.5 (release 2024-02-02)
|
||||
|
||||
|
||||
|
||||
|
||||
Version v4.12.4 (release 2024-02-02)
|
||||
|
||||
- ui: add 423 error page
|
||||
- fix: types could be empty list
|
||||
- setup: sort tests imports
|
||||
- workflows: change to reusable workflows
|
||||
- wording: update one string frontpage
|
||||
- wording: update frontpage
|
||||
|
||||
|
||||
Version v4.12.3 (release 2024-01-28)
|
||||
|
||||
- wording: update text in benefits
|
||||
- translation: fix research result typo
|
||||
- ui: remove commented code
|
||||
- ui: remove comingsoon rule
|
||||
|
||||
|
||||
Version v4.12.2 (release 2024-01-07)
|
||||
|
||||
- ui: use only first type
|
||||
- ui: change overview logos
|
||||
- wording: improve
|
||||
- wording: improve wording
|
||||
- fix: multiple subjects not displayed in one row
|
||||
|
||||
|
||||
Version v4.12.1 (release 2023-11-23)
|
||||
|
||||
- translation: change text on frontpage overview
|
||||
- ui: comment browse functionality
|
||||
- ui: remove scss, not used
|
||||
|
||||
|
||||
Version v4.12.0 (release 2023-11-10)
|
||||
|
||||
- setup: move python supported window
|
||||
- overview: rephrase text
|
||||
- menu: temporarily remove overwrite
|
||||
- ui: change paths to data-models
|
||||
- global: change to invenio-records-global-search
|
||||
- refactor: apply semantic-ui, indentation, copyright
|
||||
- layout: improve
|
||||
- theme: add separate search entry for rdm
|
||||
- global: make it compatible with v12
|
||||
|
||||
|
||||
Version v4.11.3 (release 2023-06-07)
|
||||
|
||||
- fix: frontpage upload buttons small monitor
|
||||
|
||||
|
||||
Version v4.11.2 (release 2023-06-01)
|
||||
|
||||
- frontpage: layout changes
|
||||
- translation: add oer frontpage translation
|
||||
- WIP: oer upload button on frontpage
|
||||
|
||||
|
||||
Version v4.11.1 (release 2023-04-20)
|
||||
|
||||
- fix: increase invenio-config-tugraz
|
||||
|
||||
@@ -10,7 +10,7 @@ Types of Contributions
|
||||
Report Bugs
|
||||
~~~~~~~~~~~
|
||||
|
||||
Report bugs at https://github.com/tu-graz-library/invenio-theme-tugraz/issues.
|
||||
Report bugs at https://github.com/Cian-H/invenio-theme-iform/issues.
|
||||
|
||||
If you are reporting a bug, please include:
|
||||
|
||||
@@ -33,15 +33,15 @@ is open to whoever wants to implement it.
|
||||
Write Documentation
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
invenio-theme-tugraz could always use more documentation, whether as part of the
|
||||
official invenio-theme-tugraz docs, in docstrings, or even on the web in blog posts,
|
||||
invenio-theme-iform could always use more documentation, whether as part of the
|
||||
official invenio-theme-iform docs, in docstrings, or even on the web in blog posts,
|
||||
articles, and such.
|
||||
|
||||
Submit Feedback
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
The best way to send feedback is to file an issue at
|
||||
https://github.com/tu-graz-library/invenio-theme-tugraz/issues.
|
||||
https://github.com/Cian-H/invenio-theme-iform/issues.
|
||||
|
||||
If you are proposing a feature:
|
||||
|
||||
@@ -53,14 +53,14 @@ If you are proposing a feature:
|
||||
Get Started!
|
||||
------------
|
||||
|
||||
Ready to contribute? Here's how to set up `invenio-theme-tugraz` for local development.
|
||||
Ready to contribute? Here's how to set up `invenio-theme-iform` for local development.
|
||||
|
||||
1. Fork the `https://github.com/tu-graz-library/invenio-theme-tugraz.git` repo on GitHub.
|
||||
1. Fork the `https://github.com/Cian-H/invenio-theme-iform.git` repo on GitHub.
|
||||
2. Clone your fork locally:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone git@github.com:your_name_here/invenio-theme-tugraz.git
|
||||
$ git clone git@github.com:your_name_here/invenio-theme-iform.git
|
||||
|
||||
3. Install your local copy into a virtualenv. Assuming you have
|
||||
virtualenvwrapper installed, this is how you set up your fork for local
|
||||
@@ -68,8 +68,8 @@ Ready to contribute? Here's how to set up `invenio-theme-tugraz` for local devel
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ mkvirtualenv invenio-theme-tugraz
|
||||
$ cd invenio-theme-tugraz/
|
||||
$ mkvirtualenv invenio-theme-iform
|
||||
$ cd invenio-theme-iform/
|
||||
$ pip install -e .[all]
|
||||
|
||||
4. Create a branch for local development:
|
||||
@@ -114,5 +114,5 @@ Before you submit a pull request, check that it meets these guidelines:
|
||||
2. If the pull request adds functionality, the docs should be updated. Put
|
||||
your new functionality into a function with a docstring.
|
||||
3. The pull request should work for Python 2.7, 3.5 and 3.6. Check
|
||||
https://github.com/tu-graz-library/invenio-theme-tugraz/actions?query=event%3Apull_request
|
||||
https://github.com/Cian-H/invenio-theme-iform/actions?query=event%3Apull_request
|
||||
and make sure that the tests pass for all supported Python versions.
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
Installation
|
||||
============
|
||||
|
||||
invenio-theme-tugraz is on PyPI so all you need is:
|
||||
invenio-theme-iform is on PyPI so all you need is:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ pip install invenio-theme-tugraz
|
||||
$ pip install invenio-theme-iform
|
||||
|
||||
1
LICENSE
@@ -1,6 +1,7 @@
|
||||
MIT License
|
||||
|
||||
Copyright (C) 2020 Graz University of Technology.
|
||||
Copyright (C) 2025 I-Form Advanced Research Manufacturing Research Centre.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
|
||||
29
MANIFEST.in
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Copyright (C) 2020-2021 Graz University of Technology.
|
||||
#
|
||||
# invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||
# details.
|
||||
|
||||
@@ -10,7 +10,7 @@ include .dockerignore
|
||||
include .editorconfig
|
||||
include .tx/config
|
||||
prune docs/_build
|
||||
recursive-include invenio_theme_tugraz/translations *.po *.pot *.mo
|
||||
recursive-include invenio_theme_iform/translations *.po *.pot *.mo
|
||||
|
||||
# added by check_manifest.py
|
||||
include *.md
|
||||
@@ -19,26 +19,25 @@ include *.sh
|
||||
include *.txt
|
||||
include *.rst
|
||||
include LICENSE
|
||||
include babel.ini
|
||||
include pytest.ini
|
||||
recursive-include docs *.bat
|
||||
recursive-include docs *.py
|
||||
recursive-include docs *.rst
|
||||
recursive-include docs *.txt
|
||||
recursive-include docs Makefile
|
||||
recursive-include invenio_theme_tugraz *.html
|
||||
recursive-include invenio_theme_tugraz *.js
|
||||
recursive-include invenio_theme_tugraz *.png
|
||||
recursive-include invenio_theme_tugraz *.scss
|
||||
recursive-include invenio_theme_tugraz *.svg
|
||||
recursive-include invenio_theme_tugraz *.less
|
||||
recursive-include invenio_theme_tugraz *.ico
|
||||
recursive-include invenio_theme_tugraz *.pdf
|
||||
recursive-include invenio_theme_tugraz *.ttf
|
||||
recursive-include invenio_theme_tugraz *.txt
|
||||
recursive-include invenio_theme_iform *.html
|
||||
recursive-include invenio_theme_iform *.js
|
||||
recursive-include invenio_theme_iform *.png
|
||||
recursive-include invenio_theme_iform *.scss
|
||||
recursive-include invenio_theme_iform *.svg
|
||||
recursive-include invenio_theme_iform *.less
|
||||
recursive-include invenio_theme_iform *.ico
|
||||
recursive-include invenio_theme_iform *.pdf
|
||||
recursive-include invenio_theme_iform *.ttf
|
||||
recursive-include invenio_theme_iform *.txt
|
||||
|
||||
recursive-include tests *.py
|
||||
recursive-include invenio_theme_tugraz *.jpg
|
||||
recursive-include invenio_theme_tugraz *.gitkeep
|
||||
recursive-include invenio_theme_iform *.jpg
|
||||
recursive-include invenio_theme_iform *.gitkeep
|
||||
recursive-include .github/workflows *.yml
|
||||
include .git-blame-ignore-revs
|
||||
|
||||
50
README.rst
@@ -1,45 +1,47 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
======================
|
||||
invenio-theme-tugraz
|
||||
invenio-theme-iform
|
||||
======================
|
||||
|
||||
.. image:: https://github.com/tu-graz-library/invenio-theme-tugraz/workflows/CI/badge.svg
|
||||
:target: https://github.com/tu-graz-library/invenio-theme-tugraz/actions
|
||||
.. image:: https://github.com/Cian-H/invenio-theme-iform/workflows/CI/badge.svg
|
||||
:target: https://github.com/Cian-H/invenio-theme-iform/actions
|
||||
|
||||
.. image:: https://img.shields.io/pypi/dm/invenio-theme-tugraz.svg
|
||||
:target: https://pypi.python.org/pypi/invenio-theme-tugraz
|
||||
.. image:: https://img.shields.io/pypi/dm/invenio-theme-iform.svg
|
||||
:target: https://pypi.python.org/pypi/invenio-theme-iform
|
||||
|
||||
.. image:: https://img.shields.io/github/tag/tu-graz-library/invenio-theme-tugraz.svg
|
||||
:target: https://github.com/tu-graz-library/invenio-theme-tugraz/releases
|
||||
.. image:: https://img.shields.io/github/tag/Cian-H/invenio-theme-iform.svg
|
||||
:target: https://github.com/Cian-H/invenio-theme-iform/releases
|
||||
|
||||
.. image:: https://img.shields.io/github/license/tu-graz-library/invenio-theme-tugraz.svg
|
||||
:target: https://github.com/tu-graz-library/invenio-theme-tugraz/blob/master/LICENSE
|
||||
.. image:: https://img.shields.io/github/license/Cian-H/invenio-theme-iform.svg
|
||||
:target: https://github.com/Cian-H/invenio-theme-iform/blob/master/LICENSE
|
||||
|
||||
.. image:: https://readthedocs.org/projects/invenio-theme-tugraz/badge/?version=latest
|
||||
:target: https://invenio-theme-tugraz.readthedocs.io/en/latest/?badge=latest
|
||||
.. image:: https://readthedocs.org/projects/invenio-theme-iform/badge/?version=latest
|
||||
:target: https://invenio-theme-iform.readthedocs.io/en/latest/?badge=latest
|
||||
|
||||
.. image:: https://img.shields.io/coveralls/mb-wali/invenio-theme-tugraz.svg
|
||||
:target: https://coveralls.io/r/mb-wali/invenio-theme-tugraz
|
||||
.. image:: https://coveralls.io/repos/github/Cian-H/invenio-theme-iform/badge.svg?branch=master
|
||||
:target: https://coveralls.io/github/Cian-H/invenio-theme-iform?branch=master
|
||||
|
||||
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
|
||||
:target: https://github.com/psf/black
|
||||
.. image:: https://img.shields.io/badge/code%20style-Ruff-D7FF64.svg
|
||||
:target: https://github.com/astral-sh/ruff
|
||||
|
||||
TU Graz standard theme.
|
||||
I-Form standard theme.
|
||||
|
||||
Features:
|
||||
|
||||
* TU Graz custom header template.
|
||||
* TU Graz custom footer template.
|
||||
* TU Graz custom login/signup templates.
|
||||
* TU Graz custom frontpage template.
|
||||
* TU Graz custom contact template.
|
||||
* TU Graz overriden theme.
|
||||
* I-Form custom header template.
|
||||
* I-Form custom footer template.
|
||||
* I-Form custom login/signup templates.
|
||||
* I-Form custom frontpage template.
|
||||
* I-Form custom contact template.
|
||||
* I-Form overriden theme.
|
||||
|
||||
Further documentation is available on
|
||||
https://invenio-theme-tugraz.readthedocs.io/
|
||||
https://invenio-theme-iform.readthedocs.io/
|
||||
|
||||
Forked from https://github.com/tu-graz-library/invenio-theme-tugraz
|
||||
|
||||
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 "Build finished; now you can run "qcollectiongenerator" with the" \
|
||||
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
|
||||
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/invenio-theme-tugraz.qhcp"
|
||||
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/invenio-theme-iform.qhcp"
|
||||
@echo "To view the help file:"
|
||||
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/invenio-theme-tugraz.qhc"
|
||||
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/invenio-theme-iform.qhc"
|
||||
|
||||
applehelp:
|
||||
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
|
||||
@@ -104,8 +104,8 @@ devhelp:
|
||||
@echo
|
||||
@echo "Build finished."
|
||||
@echo "To view the help file:"
|
||||
@echo "# mkdir -p $$HOME/.local/share/devhelp/invenio-theme-tugraz"
|
||||
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/invenio-theme-tugraz"
|
||||
@echo "# mkdir -p $$HOME/.local/share/devhelp/invenio-theme-iform"
|
||||
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/invenio-theme-iform"
|
||||
@echo "# devhelp"
|
||||
|
||||
epub:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
API Docs
|
||||
========
|
||||
|
||||
.. automodule:: invenio_theme_tugraz.ext
|
||||
.. automodule:: invenio_theme_iform.ext
|
||||
:members:
|
||||
|
||||
Views
|
||||
-----
|
||||
|
||||
.. automodule:: invenio_theme_tugraz.views
|
||||
.. automodule:: invenio_theme_iform.views
|
||||
:members:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
|
||||
44
docs/conf.py
@@ -2,13 +2,13 @@
|
||||
#
|
||||
# Copyright (C) 2020-2021 Graz University of Technology.
|
||||
#
|
||||
# invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
# invenio-theme-iform is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||
# details.
|
||||
|
||||
"""Sphinx configuration."""
|
||||
|
||||
from invenio_theme_tugraz import __version__
|
||||
from invenio_theme_iform import __version__
|
||||
|
||||
# -- General configuration ------------------------------------------------
|
||||
|
||||
@@ -44,9 +44,9 @@ source_suffix = ".rst"
|
||||
master_doc = "index"
|
||||
|
||||
# General information about the project.
|
||||
project = "invenio-theme-tugraz"
|
||||
copyright = "2020, Graz University of Technology"
|
||||
author = "Graz University of Technology"
|
||||
project = "invenio-theme-iform"
|
||||
copyright = "2025, I-Form"
|
||||
author = "I-Form"
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
@@ -106,15 +106,15 @@ todo_include_todos = False
|
||||
html_theme = "alabaster"
|
||||
|
||||
html_theme_options = {
|
||||
"description": "invenio module for TUGRAZ theme.",
|
||||
"github_user": "TU Graz",
|
||||
"github_repo": "invenio-theme-tugraz",
|
||||
"github_button": False,
|
||||
"github_banner": True,
|
||||
"description": "invenio module for I-Form theme.",
|
||||
"github_user": "Cian-H",
|
||||
"github_repo": "invenio-theme-iform",
|
||||
"github_button": True,
|
||||
"github_banner": False,
|
||||
"show_powered_by": False,
|
||||
"extra_nav_links": {
|
||||
"invenio-theme-tugraz@GitHub": "https://github.com/tu-graz-library/invenio-theme-tugraz",
|
||||
"invenio-theme-tugraz@PyPI": "https://pypi.python.org/pypi/invenio-theme-tugraz/",
|
||||
"invenio-theme-iform@GitHub": "https://github.com/Cian-H/invenio-theme-iform",
|
||||
"invenio-theme-iform@PyPI": "https://pypi.python.org/pypi/invenio-theme-iform/",
|
||||
},
|
||||
}
|
||||
|
||||
@@ -219,7 +219,7 @@ html_sidebars = {
|
||||
# html_search_scorer = 'scorer.js'
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = "invenio-theme-tugraz_namedoc"
|
||||
htmlhelp_basename = "invenio-theme-iform_namedoc"
|
||||
|
||||
# -- Options for LaTeX output ---------------------------------------------
|
||||
|
||||
@@ -240,9 +240,9 @@ latex_elements = {
|
||||
latex_documents = [
|
||||
(
|
||||
master_doc,
|
||||
"invenio-theme-tugraz.tex",
|
||||
"invenio-theme-tugraz Documentation",
|
||||
"Graz University of Technology",
|
||||
"invenio-theme-iform.tex",
|
||||
"invenio-theme-iform Documentation",
|
||||
"I-Form",
|
||||
"manual",
|
||||
),
|
||||
]
|
||||
@@ -275,8 +275,8 @@ latex_documents = [
|
||||
man_pages = [
|
||||
(
|
||||
master_doc,
|
||||
"invenio-theme-tugraz",
|
||||
"invenio-theme-tugraz Documentation",
|
||||
"invenio-theme-iform",
|
||||
"invenio-theme-iform Documentation",
|
||||
[author],
|
||||
1,
|
||||
)
|
||||
@@ -294,11 +294,11 @@ man_pages = [
|
||||
texinfo_documents = [
|
||||
(
|
||||
master_doc,
|
||||
"invenio-theme-tugraz",
|
||||
"invenio-theme-tugraz Documentation",
|
||||
"invenio-theme-iform",
|
||||
"invenio-theme-iform Documentation",
|
||||
author,
|
||||
"invenio-theme-tugraz",
|
||||
"invenio module for TUGRAZ theme.",
|
||||
"invenio-theme-iform",
|
||||
"invenio module for I-Form theme.",
|
||||
"Miscellaneous",
|
||||
),
|
||||
]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
@@ -9,5 +9,5 @@
|
||||
Configuration
|
||||
=============
|
||||
|
||||
.. automodule:: invenio_theme_tugraz.config
|
||||
.. automodule:: invenio_theme_iform.config
|
||||
:members:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
@@ -12,7 +12,7 @@ User's Guide
|
||||
------------
|
||||
|
||||
This part of the documentation will show you how to get started in using
|
||||
invenio-theme-tugraz.
|
||||
invenio-theme-iform.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
|
||||
@@ -127,9 +127,9 @@ if "%1" == "qthelp" (
|
||||
echo.
|
||||
echo.Build finished; now you can run "qcollectiongenerator" with the ^
|
||||
.qhcp project file in %BUILDDIR%/qthelp, like this:
|
||||
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\invenio-theme-tugraz.qhcp
|
||||
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\invenio-theme-iform.qhcp
|
||||
echo.To view the help file:
|
||||
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\invenio-theme-tugraz.ghc
|
||||
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\invenio-theme-iform.ghc
|
||||
goto end
|
||||
)
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
-e .[docs,tests]
|
||||
@@ -1,7 +1,7 @@
|
||||
..
|
||||
Copyright (C) 2020-2021 Graz University of Technology.
|
||||
|
||||
invenio-theme-tugraz is free software; you can redistribute it and/or
|
||||
invenio-theme-iform is free software; you can redistribute it and/or
|
||||
modify it under the terms of the MIT License; see LICENSE file for more
|
||||
details.
|
||||
|
||||
@@ -9,4 +9,4 @@
|
||||
Usage
|
||||
=====
|
||||
|
||||
.. automodule:: invenio_theme_tugraz
|
||||
.. automodule:: invenio_theme_iform
|
||||
|
||||
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,14 +1,14 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
.ui.container.page-subheader-outer {
|
||||
background-color: unset;
|
||||
background-color: unset;
|
||||
}
|
||||
|
||||
.ui.fluid.container {
|
||||
width: fit-content;
|
||||
width: fit-content;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Copyright (C) 2021 Graz University of Technology.
|
||||
*
|
||||
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the MIT License; see LICENSE file for more details.
|
||||
*/
|
||||
|
||||
// deposit form segment styling
|
||||
.ui.inverted.brand.segment {
|
||||
background-color: @greyLight !important;
|
||||
color: @iformBlack !important;
|
||||
|
||||
label {
|
||||
color: @iformBlack;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,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.
|
||||
*
|
||||
* invenio-theme-tugraz is free software; you can redistribute it and/or modify it
|
||||
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the MIT License; see LICENSE file for more details.
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,198 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2021 Graz University of Technology.
|
||||
* Copyright (C) 2025 I-Form Advanced Manufacturing Research Centre.
|
||||
*
|
||||
* invenio-theme-iform is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the MIT License; see LICENSE file for more details.
|
||||
*/
|
||||
|
||||
/***
|
||||
* Logos background frontpage.
|
||||
* from rgba(173, 206, 224, 0.52)
|
||||
* to #ffffff
|
||||
***/
|
||||
.section-content-light-bg {
|
||||
background-color: @primaryBackground;
|
||||
}
|
||||
|
||||
/***
|
||||
* section title.
|
||||
* from #0377cd
|
||||
* to #000000
|
||||
***/
|
||||
.section-title {
|
||||
color: @primaryText;
|
||||
}
|
||||
|
||||
/***
|
||||
* login background color
|
||||
* from : rgba(13,95,137,.8)
|
||||
* To #ffffff
|
||||
***/
|
||||
.cover-page {
|
||||
//text-align: center;
|
||||
background-color: @primaryBackground;
|
||||
}
|
||||
|
||||
/***
|
||||
* login & sigup page title
|
||||
* from : #0377cd
|
||||
* To #000000
|
||||
***/
|
||||
.panel-free-title {
|
||||
color: @primaryText;
|
||||
}
|
||||
|
||||
/***
|
||||
* anchor color
|
||||
* from : #ef4444
|
||||
* To @iformBlue
|
||||
***/
|
||||
a {
|
||||
color: @iformBlue;
|
||||
}
|
||||
|
||||
/***
|
||||
* force: the font changes
|
||||
***/
|
||||
*,
|
||||
html,
|
||||
body,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
pre,
|
||||
.ui.button,
|
||||
.ui.items,
|
||||
.ui.accordion .title:not(.ui),
|
||||
.ui.items>.item>.content>.header,
|
||||
.ui.modal>.header,
|
||||
.ui.menu,
|
||||
.ui.header,
|
||||
.ui.form input[type],
|
||||
.ui.form input[type]:focus {
|
||||
font-family: "Source Sans Pro";
|
||||
}
|
||||
|
||||
pre {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
/***
|
||||
* search.button
|
||||
***/
|
||||
/*.ui.button,*/
|
||||
.ui.search.button {
|
||||
background-color: @iformBlue;
|
||||
}
|
||||
|
||||
/***
|
||||
* accordion title
|
||||
***/
|
||||
.ui.accordion.styled {
|
||||
|
||||
.title,
|
||||
.title.active {
|
||||
background-color: @greyLight;
|
||||
color: rgba(0, 0, 0, 0.6);
|
||||
}
|
||||
}
|
||||
|
||||
/***
|
||||
* buttons hover and accordion hover
|
||||
***/
|
||||
.ui.button:hover,
|
||||
.ui.search.button:hover,
|
||||
.ui.accordion.styled .title:hover,
|
||||
.ui.accordion.styled .accordion .title:hover {
|
||||
background-color: @primaryButtonHoverBackground;
|
||||
color: @primaryButton;
|
||||
}
|
||||
|
||||
/***
|
||||
* force: remove corners from border
|
||||
***/
|
||||
.label-keyword,
|
||||
.ui.label,
|
||||
.ui.button,
|
||||
.ui.rdm-sidebar,
|
||||
.ui.menu,
|
||||
.ui.input>input,
|
||||
/* it seams redundant but it is not */
|
||||
.ui.segment,
|
||||
.ui.selection.dropdown,
|
||||
.ui.accordion.styled,
|
||||
.ui.card,
|
||||
.ui.cards>.card,
|
||||
.ui.basic.button,
|
||||
.ui.basic.buttons .button,
|
||||
.ui.action.input:not([class*="left action"])>.button:last-child,
|
||||
.ui.action.input:not([class*="left action"])>.buttons:last-child>.button,
|
||||
.ui.action.input:not([class*="left action"])>.dropdown:last-child,
|
||||
.ui.form input[type],
|
||||
.ui.form input[type]:focus {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
/***
|
||||
* force: rdm-side-bar same empty box as on the frontpage
|
||||
***/
|
||||
.ui.rdm-sidebar {
|
||||
background-color: unset;
|
||||
box-shadow: unset;
|
||||
}
|
||||
|
||||
/***
|
||||
* force: font weight: normal
|
||||
***/
|
||||
.ui.label {
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
// override access badges color
|
||||
.ui.label.access-status {
|
||||
&.open {
|
||||
background-color: @accessRightOpen;
|
||||
}
|
||||
|
||||
&.embargoed {
|
||||
background-color: @accessRightEmbargoed;
|
||||
}
|
||||
|
||||
&.metadata-only {
|
||||
background-color: @accessRightMetadata;
|
||||
}
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Source Sans Pro";
|
||||
src: url("./fonts/SourceSansPro/SourceSansPro-Regular.ttf") format("truetype");
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Source Sans Pro";
|
||||
src: url("./fonts/SourceSansPro/SourceSansPro-Italic.ttf") format("truetype");
|
||||
font-weight: 400;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/**
|
||||
* mainly for the overview. maybe this should be written more specific to apply
|
||||
* only for the overview use case.
|
||||
*/
|
||||
.ui.segment:first-child {
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.ui.equal.height .ui.segment {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.ui.flashed.message.manage {
|
||||
text-align: center;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* Copyright (C) 2020 Graz University of Technology
|
||||
*
|
||||
* invenio-theme-iform is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the MIT License; see LICENSE file for more details.
|
||||
*/
|
||||
|
||||
.top-bottom-padded {
|
||||
margin: unset;
|
||||
}
|
||||
|
||||
.label.label-keyword {
|
||||
font-size: 0.71428571rem;
|
||||
font-weight: 400;
|
||||
background-color: @labelKeywordBackground;
|
||||
border: unset;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2023 Graz University of Technology
|
||||
*
|
||||
* invenio-theme-iform is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the MIT License; see LICENSE file for more details.
|
||||
*/
|
||||
|
||||
.creators {
|
||||
margin: 0 0 1em;
|
||||
}
|
||||
|
||||
.creators span {
|
||||
margin-left: 2px;
|
||||
}
|
||||
|
||||
.creator:not(:last-child):after {
|
||||
color: @greyDark;
|
||||
content: ";";
|
||||
}
|
||||
|
||||
.creator {
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.identifiers {
|
||||
display: inline;
|
||||
}
|
||||
@@ -1,7 +1,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 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.
|
||||
*/
|
||||
|
||||
@@ -27,13 +28,24 @@
|
||||
|
||||
// used in various templates
|
||||
// add no hyperlink decoration
|
||||
.no-decoration{
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
transition: background-color 0.15s ease 0s, color 0.15s ease 0s;
|
||||
outline: none;
|
||||
.no-decoration {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
transition:
|
||||
background-color 0.15s ease 0s,
|
||||
color 0.15s ease 0s;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.nowrap-link {
|
||||
white-space: nowrap;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.ui.label.schema {
|
||||
border: 1px solid #bfb5b5;
|
||||
}
|
||||
|
||||
.random-records-frontpage .grid .column {
|
||||
width: 380px !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
|
||||
@@ -1,15 +1,14 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (C) 2020-2021 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
|
||||
# details.
|
||||
|
||||
"""Frontpage records."""
|
||||
|
||||
from invenio_search.api import RecordsSearch
|
||||
from invenio_search.engine import dsl
|
||||
|
||||
|
||||
class FrontpageRecordsSearch(RecordsSearch):
|
||||
@@ -18,8 +17,4 @@ class FrontpageRecordsSearch(RecordsSearch):
|
||||
class Meta:
|
||||
"""Default index and filter for frontpage search."""
|
||||
|
||||
index = "rdmrecords-records"
|
||||
default_filter = dsl.Q(
|
||||
"query_string",
|
||||
query=("access.record:public " "AND versions.is_latest:true"),
|
||||
)
|
||||
index = "global-search"
|
||||
|
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 |
BIN
invenio_theme_iform/static/images/cyan_400x400.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
invenio_theme_iform/static/images/dark_blue_400x400.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
1
invenio_theme_iform/static/images/diamond.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg enable-background="new 0 0 64 64" height="64" viewBox="0 0 64 64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="m47.562 6.75c-.38-.474-.955-.75-1.562-.75h-28c-.607 0-1.182.276-1.562.75l-16 20c-.637.796-.573 1.943.147 2.664l30 30c.391.391.903.586 1.415.586s1.024-.195 1.414-.586l30-30c.721-.721.784-1.868.147-2.664zm10.276 19.25h-10.35l-4.8-16h2.351zm-41.054 4 10.722 20.677-20.677-20.677zm4.506 0h8.71v16.798zm12.71 0h8.71l-8.71 16.798zm13.216 0h9.956l-20.678 20.677zm-8.704-20 4.8 16h-9.312v-16zm-8.512 16h-9.312l4.8-16h4.512zm-11.039-16h2.351l-4.8 16h-10.35z"/></svg>
|
||||
|
After Width: | Height: | Size: 583 B |
1
invenio_theme_iform/static/images/group-discussion.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg fill="none" height="48" viewBox="0 0 48 48" width="48" xmlns="http://www.w3.org/2000/svg"><g clip-rule="evenodd" fill="#333" fill-rule="evenodd"><path d="m11.0392 17.2183c-.4756.2768-.8742.5498-1.18834.7845-.34219.2557-.85823.0372-.84079-.3896.01851-.4528.06658-1.0087.17644-1.5915.17477-.9271.50589-1.9223 1.12309-2.6789-.4552-.8767-.70618-1.8366-.70618-2.8428 0-4.14214 4.25328-7.5 9.49998-7.5s9.5 3.35786 9.5 7.5c0 4.1421-4.2533 7.5-9.5 7.5-2.304 0-4.4165-.6475-6.0613-1.7247-.7675.2816-1.4393.615-2.0029.943zm1.4999-3.9218c.0919.1771.0698.3919-.0563.5465l-.6017.7375c.1536-.0626.3111-.1237.4722-.1828l.7077-.2596c.1484-.0545.3139-.0355.4461.0511l.6307.413c1.3021.8527 3.0299 1.3978 4.9656 1.3978 4.6086 0 7.5-2.8772 7.5-5.5 0-2.62276-2.8914-5.5-7.5-5.5s-7.5 2.87724-7.5 5.5c0 .6661.1647 1.3116.4812 1.9212z"/><path d="m32.1035 10c-1.1521 0-2.1445.2398-2.9566.6265-.7113.3304-1.3112.7766-1.7493 1.3019.1348-.4596.2059-.9377.2059-1.4284 0-.4134-.0505-.81784-.147-1.20984 1.2777-.8079 2.8919-1.29016 4.647-1.29016 4.1421 0 7.5 2.6863 7.5 6 0 .8463-.2191 1.6517-.6143 2.3819-.0881.1629-.0893.3595-.0084.5261.0953.1962.1748.401.241.6083.1805.5653.2624 1.1496.2971 1.6307.0308.4261-.4853.6495-.8354.4048-.3202-.2239-.7262-.4769-1.2086-.7166-.0941-.0467-.1911-.0929-.2909-.1384-.1536-.0698-.3314-.0505-.4745.0388-1.2712.7924-2.8697 1.2644-4.606 1.2644-3.5699 0-6.5573-1.9954-7.3146-4.668.7532-.5186 1.3846-1.1387 1.8571-1.8321-.0281.1638-.0425.3307-.0425.5001 0 1.4176 1.014 2.663 2.5433 3.3735.8121.3867 1.8046.6265 2.9567.6265 3.0275 0 5.4837-1.779 5.4999-3.9781 0-.0073.0001-.0146.0001-.0219 0-.0029 0-.0057 0-.0086-.0041-1.414-1.0171-2.6558-2.5432-3.3648-.8121-.3868-1.8047-.6266-2.9568-.6266z"/><path d="m13 31c1.6579 0 3-1.3421 3-3s-1.3421-3-3-3-3 1.3421-3 3 1.3421 3 3 3zm0 2c2.7625 0 5-2.2375 5-5s-2.2375-5-5-5-5 2.2375-5 5 2.2375 5 5 5z"/><path d="m5.62151 38.7886c-.48599.4893-.62151.8839-.62151 1.2114v1h18v-1c0-.3275-.1355-.7221-.6215-1.2114-.5043-.5077-1.2895-1.0094-2.3027-1.4522-2.0371-.8903-4.5143-1.3364-6.0758-1.3364s-4.03865.4461-6.07582 1.3364c-1.01321.4428-1.79842.9445-2.30267 1.4522zm8.37849-4.7886c-3.6712 0-11 2.01-11 6v3h22v-3c0-3.99-7.3287-6-11-6z"/><path d="m35 31c1.6579 0 3-1.3421 3-3s-1.3421-3-3-3-3 1.3421-3 3 1.3421 3 3 3zm0 2c2.7625 0 5-2.2375 5-5s-2.2375-5-5-5-5 2.2375-5 5 2.2375 5 5 5z"/><path d="m24 29c1.1054 0 2-.8946 2-2s-.8946-2-2-2-2 .8946-2 2 .8946 2 2 2zm0 2c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4z"/><path d="m25.6215 38.7886c-.486.4893-.6215.8839-.6215 1.2114v1h18v-1c0-.3275-.1355-.7221-.6215-1.2114-.5043-.5077-1.2895-1.0094-2.3027-1.4522-2.0371-.8903-4.5143-1.3364-6.0758-1.3364s-4.0387.4461-6.0758 1.3364c-1.0132.4428-1.7984.9445-2.3027 1.4522zm8.3785-4.7886c-3.6712 0-11 2.01-11 6v3h22v-3c0-3.99-7.3287-6-11-6z"/><path d="m24 34c-3.3093 0-5.6283 1.5425-6.2929 2.2071l-1.4143-1.4142c1.0021-1.002 3.8164-2.7929 7.7072-2.7929 3.8907 0 6.705 1.7909 7.7071 2.7929l-1.4143 1.4142c-.6646-.6646-2.9836-2.2071-6.2928-2.2071z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 2.9 KiB |
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 |
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg fill="#000000" height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
viewBox="0 0 512.427 512.427" xml:space="preserve">
|
||||
<g transform="translate(1 1)">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M502.893,396.948h-54.941l19.102-5.12c1.707-0.853,4.267-1.707,5.12-4.267s1.707-4.267,0.853-6.827l-12.67-47.026
|
||||
c0.07-0.83,0.031-1.664-0.13-2.467l-8.533-33.28c-0.405-0.81-1.006-1.81-1.704-2.731l-42.692-158.453
|
||||
c0.228-1.166,0.251-2.368,0.023-3.51l-8.533-33.28c-0.526-1.052-1.377-2.426-2.352-3.527L384.28,51.348
|
||||
c-0.853-4.267-5.973-6.827-10.24-5.973l-82.773,22.187c-4.267,0.853-6.827,5.973-5.973,10.24l18.404,68.485
|
||||
c-6.845-3.409-14.542-5.339-22.671-5.339H33.56c-3.413,0-5.973,1.707-7.68,5.12c-1.707,2.56-1.707,5.973,0,8.533l10.24,16.213
|
||||
c7.68,13.653,7.68,29.867,0,43.52l-7.545,11.947H7.96c-3.413,0-5.973,1.707-7.68,5.12c-1.707,2.56-1.707,5.973,0,8.533
|
||||
l10.24,16.213c7.68,13.653,7.68,29.867,0,43.52L0.28,315.882c-1.707,2.56-1.707,5.973,0,8.533s4.267,4.267,7.68,4.267h20.076
|
||||
l8.084,12.8c7.68,13.653,7.68,29.867,0,43.52l-7.545,11.947H7.96c-5.12,0-8.533,3.413-8.533,8.533v51.2
|
||||
c0,5.12,3.413,8.533,8.533,8.533h494.933c5.12,0,8.533-3.413,8.533-8.533v-51.2C511.427,400.362,508.013,396.948,502.893,396.948
|
||||
z M292.303,312.89c8.853-9.215,14.323-21.7,14.323-35.409s-5.47-26.194-14.323-35.409c12.984-2.949,24.135-10.859,31.324-21.623
|
||||
l29.419,109.472l7.34,28.627c0.198,0.395,0.42,0.778,0.661,1.147l10.011,37.253h-51.961c8.15-9.076,13.129-21.05,13.129-34.133
|
||||
C332.227,338.528,315.083,318.064,292.303,312.89z M387.693,129.855l-65.707,17.92l-4.267-16.213l65.707-17.92L387.693,129.855z
|
||||
M392.263,146.011l39.228,148.419l-65.994,17.689l-33.635-125.96c-0.582-4.934-1.863-9.661-3.758-14.072l-2.089-7.824
|
||||
L392.263,146.011z M370.627,328.682l65.426-16.994l4.285,16.212l-65.444,17.849L370.627,328.682z M387.693,395.242l-8.951-33.52
|
||||
l65.868-17.655l8.79,33.255L387.693,395.242z M370.627,64.148l8.501,32.163l-66.498,17.824l-8.563-32.067L370.627,64.148z
|
||||
M50.627,161.428l-1.707-3.413h232.107c14.067,0,26.217,8.625,31.425,20.847l2.436,9.064c0.173,1.385,0.272,2.792,0.272,4.222
|
||||
c0,18.773-15.36,34.133-34.133,34.133h-25.6H48.92l1.707-3.413C61.72,204.095,61.72,180.202,50.627,161.428z M25.027,246.762
|
||||
l-1.707-3.413h10.24h221.867c18.773,0,34.133,15.36,34.133,34.133c0,18.773-15.36,34.133-34.133,34.133H33.56H23.32l1.707-3.413
|
||||
C36.12,289.428,36.12,265.535,25.027,246.762z M50.627,332.095l-1.707-3.413h206.507h25.6c18.773,0,34.133,15.36,34.133,34.133
|
||||
c0,18.773-15.36,34.133-34.133,34.133H48.92l1.707-3.413C61.72,374.762,61.72,350.868,50.627,332.095z M494.36,448.148H16.493
|
||||
v-34.133H33.56h247.467h101.547h1.707h110.08V448.148z"/>
|
||||
<path d="M93.293,371.348h187.733c5.12,0,8.533-3.413,8.533-8.533s-3.413-8.533-8.533-8.533H93.293
|
||||
c-5.12,0-8.533,3.413-8.533,8.533S88.173,371.348,93.293,371.348z"/>
|
||||
<path d="M67.693,286.015h187.733c5.12,0,8.533-3.413,8.533-8.533c0-5.12-3.413-8.533-8.533-8.533H67.693
|
||||
c-5.12,0-8.533,3.413-8.533,8.533C59.16,282.602,62.573,286.015,67.693,286.015z"/>
|
||||
<path d="M93.293,200.682h187.733c5.12,0,8.533-3.413,8.533-8.533s-3.413-8.533-8.533-8.533H93.293
|
||||
c-5.12,0-8.533,3.413-8.533,8.533S88.173,200.682,93.293,200.682z"/>
|
||||
<path d="M357.827,182.762l26.453,98.987c1.707,3.413,5.12,5.973,8.533,5.973c0,0,0.853,0,1.707-0.853
|
||||
c4.267-0.853,6.827-5.973,5.973-10.24l-26.453-98.133c-0.853-4.267-5.973-6.827-10.24-5.973S356.973,178.495,357.827,182.762z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.6 KiB |
BIN
invenio_theme_iform/static/images/light_green_400x400.png
Normal file
|
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 |
3
invenio_theme_iform/static/images/play.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" data-attribution="cc0-icons" viewBox="0 0 24 24">
|
||||
<path d="m4.5 2 15 10-15 10V2Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 256 B |
BIN
invenio_theme_iform/static/images/red_400x400.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
invenio_theme_iform/static/images/rosa_400x400.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
1
invenio_theme_iform/static/images/umbrella.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg enable-background="new 0 0 64 64" height="64" viewBox="0 0 64 64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="m32 0c-27.377 0-31.93 25.415-31.973 25.671-.097.58.066 1.173.447 1.622.38.448.938.707 1.526.707h28v30c0 3.309 2.691 6 6 6s6-2.691 6-6c0-1.104-.896-2-2-2s-2 .896-2 2c0 1.103-.897 2-2 2s-2-.897-2-2v-30h28c.007-.001.013 0 .02 0 1.104 0 2-.896 2-2 0-.234-.041-.459-.115-.669-.645-3.04-6.265-25.331-31.905-25.331zm-27.455 24c1.712-5.749 7.927-20 27.455-20s25.743 14.251 27.455 20z"/></svg>
|
||||
|
After Width: | Height: | Size: 510 B |
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.
|
||||
#
|
||||
# invenio-theme-tugraz is free software.
|
||||
# invenio-theme-iform is free software.
|
||||
|
||||
"""JS/CSS Webpack bundles for theme."""
|
||||
|
||||
@@ -15,11 +15,12 @@ theme = WebpackThemeBundle(
|
||||
themes={
|
||||
"semantic-ui": dict(
|
||||
entry={
|
||||
"invenio-theme-tugraz-theme": "./less/invenio_theme_tugraz/theme.less",
|
||||
"invenio-theme-tugraz-js": "./js/invenio_theme_tugraz/theme.js",
|
||||
"invenio-theme-iform-theme": "./less/invenio_theme_iform/theme.less",
|
||||
"invenio-theme-iform-js": "./js/invenio_theme_iform/theme.js",
|
||||
"invenio-theme-iform-unlock": "./js/invenio_theme_iform/unlock.js",
|
||||
},
|
||||
dependencies={
|
||||
# add any additional npm dependencies here...
|
||||
"jquery": "^3.2.1", # zammad-form, semantic-ui's modals
|
||||
},
|
||||
)
|
||||
},
|
||||