diff --git a/.eslintignore b/.eslintignore
index 27aa2c1b3..1c3c51948 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,2 +1,3 @@
helix-importer-ui
common/echarts-5.4.2
+vendor/**
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
new file mode 100644
index 000000000..ff453b2bc
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -0,0 +1,118 @@
+name: 'Report 🐛 bug or 🕳️ defect'
+description: Please fill out this form to report a bug or defect.
+labels: ["Bugfix, Triage"]
+projects: ["hlxsites/8"]
+body:
+ - type: dropdown
+ id: issue-type
+ attributes:
+ label: Issue Type
+ description: >
+ Select whether this is a bug or a defect.
+
+
+
+ What’s the difference?
+
+
+ :hole: **Defects**
+
+ These are issues that are found when testing a functional requirement or change request.
+
+
+ :bug: **Bugs**
+
+ Bugs are issues that are found when not validating any Change Request or Functional requirement. They can be regressions or simply issues you find while doing Exploratory Testing.
+
+ options:
+ - Bug
+ - Defect
+ validations:
+ required: true
+ - type: input
+ id: summary
+ attributes:
+ label: Summary
+ description: Provide a short description of the defect. Include the block name
+ or story in brackets for easier search.
+ placeholder: e.g., [Block Name] Issue description.
+ validations:
+ required: false
+ - type: dropdown
+ id: priority
+ attributes:
+ label: Priority
+ description: Select the priority of the issue.
+ options:
+ - Blocker
+ - Critical
+ - High
+ - Medium
+ - Low
+ validations:
+ required: true
+ - type: textarea
+ id: description
+ attributes:
+ label: Description
+ description: Provide a more detailed description of the issue.
+ placeholder: Detailed issue description here.
+ validations:
+ required: true
+ - type: dropdown
+ id: affected-device-classes
+ attributes:
+ label: Affected Device Classes
+ description: Check all device classes affected by this issue.
+ multiple: true
+ options:
+ - Mobile
+ - Tablet
+ - Desktop
+ validations:
+ required: true
+ - type: textarea
+ id: affected-browsers-devices
+ attributes:
+ label: Affected Browsers/Devices and Versions
+ description: List all browsers and devices affected by this issue and specify
+ their versions.
+ placeholder: e.g., Chrome (v123), Safari (on iOS 17.4)
+ validations:
+ required: true
+ - type: textarea
+ id: steps-to-reproduce
+ attributes:
+ label: Steps to Reproduce
+ description: Detail the steps to reproduce the bug. Each action should be a
+ separate step.
+ placeholder: |-
+ 1. Navigate to…
+ 2. Click on…
+ 3. Observe the issue.
+ validations:
+ required: true
+ - type: textarea
+ id: expected-results
+ attributes:
+ label: Expected Results
+ description: Describe the correct behavior expected. Include links to
+ specifications if available.
+ placeholder: Expected behavior description.
+ validations:
+ required: true
+ - type: textarea
+ id: actual-results
+ attributes:
+ label: Actual Results
+ description: Describe the defect identified.
+ placeholder: Actual defect description.
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: Attachment
+ description: You can attach images by clicking this area and drag files in.
+ placeholder: Upload file
+ validations:
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/new_feature.yml b/.github/ISSUE_TEMPLATE/new_feature.yml
new file mode 100644
index 000000000..92998e34b
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/new_feature.yml
@@ -0,0 +1,98 @@
+name: 'New feature ✨'
+description: Functional or non-functional requirements
+body:
+ - type: markdown
+ attributes:
+ value: >-
+ Naming convention:
+
+ - For functional requirements: FR: [block name] - <issue description>
+
+ - For non-functional requirements: NFR: <issue description>
+ - type: textarea
+ id: description
+ attributes:
+ label: Context/Description
+ description: >-
+ This section contains information from the business like:
+
+ - Business needs
+
+ - User Stories
+
+ - Design
+ validations:
+ required: true
+ - type: textarea
+ id: acceptance-criteria
+ attributes:
+ label: Acceptance Criteria
+ description: >
+
+
+ Examples
+
+
+ User AC:
+
+ - Users can see in some flyout additional teaser areas (including titles) on top or below the navigation list
+
+ - In the teaser areas 1-n teasers are visible
+
+ - To meet a11y criteria, do not forget about alt text for teaser image
+
+
+ Editor AC:
+
+ - The current situation needs to be the default
+
+ - Teasers including section title can be added on specific flyouts, on top or below the navigation list
+
+ - New configurations should only be available in Mack Trucks
+
+
+ Non-functional AC:
+
+ - Performance
+
+ - Accessibility
+
+ - href in sitemap
+
+ value: |+
+ **User AC:**
+
+
+ **Editor AC:**
+
+
+ **Non-functional AC:**
+
+ validations:
+ required: true
+ - type: textarea
+ id: out-of-scope
+ attributes:
+ label: Out of scope
+ description: >-
+ List of things that are not in scope. For instance when a ticket is
+ split or a certain function is deprioritized.
+ - type: textarea
+ id: note
+ attributes:
+ label: Note
+ description: Some additional information that can help the implementation or testing.
+ - type: textarea
+ id: technical-details
+ attributes:
+ label: Technical details
+ description: >-
+ In case a certain technical direction is chosen it can be added here.
+ Can happen as follow up of a spike for instance.
+ - type: textarea
+ attributes:
+ label: Attachment / link to Figma
+ description: You can attach images by clicking this area and drag files in, or add a URL.
+ placeholder: Upload file or paste URL
+ validations:
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/technical-debt.yml b/.github/ISSUE_TEMPLATE/technical-debt.yml
new file mode 100644
index 000000000..3dde678db
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/technical-debt.yml
@@ -0,0 +1,113 @@
+name: 'File technical debt ⚓️'
+description: Please fill out this form to file technical debt.
+labels: ["Technical debt, Triage"]
+projects: ["hlxsites/8"]
+body:
+ - type: input
+ id: summary
+ attributes:
+ label: Summary
+ description: Provide a short description and include a block name or story in brackets for easier search.
+ placeholder: e.g., [Block Name] Issue description.
+ validations:
+ required: false
+ - type: dropdown
+ id: priority
+ attributes:
+ label: Priority
+ description: Select the priority of the issue.
+ options:
+ - Blocker
+ - Critical
+ - High
+ - Medium
+ - Low
+ default: 3
+ validations:
+ required: true
+ - type: textarea
+ id: description
+ attributes:
+ label: Description
+ description: Provide a more detailed description of the issue.
+ placeholder: Detailed issue description here.
+ validations:
+ required: true
+ - type: dropdown
+ id: value
+ attributes:
+ label: Value creation
+ description: Check all possible outcomes that apply.
+ multiple: true
+ options:
+ - Performance improvement
+ - Maintainability & scalability
+ - Compliance & standards
+ - DX improvement
+ - UX improvement
+ - EX improvement
+ validations:
+ required: true
+ - type: dropdown
+ id: cost-of-fixing
+ attributes:
+ label: Cost of fixing
+ description: >
+ Categorize the cost of fixing technical debt items, considering both immediate and long-term perspectives
+
+
+
+ Details of perspectives
+
+
+ **Low Cost**
+
+ - Immediate: Requires minimal effort, such as minor code refactoring or updating documentation. Can often be addressed by a single developer in a few hours or less.
+ - Long-Term: Neglecting these might slightly degrade code quality over time but won't likely cause significant issues in the short term.
+
+ **Medium Cost**
+
+ - Immediate: Involves moderate effort, such as optimizing existing algorithms, implementing better error handling, or updating several dependencies. May require a few days of work and potentially a small team to ensure thorough testing and integration.
+ - Long-Term: If left unaddressed, could lead to moderate performance issues, hinder scalability, or increase maintenance time and costs.
+
+ **High Cost**
+
+ - Immediate: Demands substantial effort, such as rewriting a significant portion of the codebase, migrating to a new framework, or addressing complex security vulnerabilities. This could involve multiple team members over weeks or months, with considerable testing and validation phases.
+ - Long-Term: Ignoring these issues can lead to severe performance bottlenecks, security breaches, legal compliance issues, or major disruptions in user experience, potentially costing much more in damage repair, lost customers, or legal penalties.
+
+ **Variable Cost**
+
+ - Immediate: The cost is dependent on the chosen approach, such as deciding between patching a system for a temporary fix versus investing in a more comprehensive solution that may take longer initially but provides greater benefits in the long run.
+ - Long-Term: A strategic decision to invest more upfront can significantly reduce future costs related to maintenance, scalability, and performance optimization.
+
+ options:
+ - Low cost
+ - Medium cost
+ - High cost
+ - Variable cost
+ default: 0
+ validations:
+ required: true
+ - type: dropdown
+ id: technical-complexity
+ attributes:
+ label: Technical complexity
+ description: The level of technical challenge involved in fixing the debt.
+ options:
+ - XL
+ - L
+ - M
+ - S
+ - XS
+ - Unknown
+ default: 3
+ validations:
+ required: true
+ - type: textarea
+ id: references
+ attributes:
+ label: References
+ description: Links to relevant examples, discussions, PRs, or documentation that provide more context.
+ placeholder:
+ validations:
+ required: true
diff --git a/.github/release.yml b/.github/release.yml
index 6809eb9b5..4b96087a5 100644
--- a/.github/release.yml
+++ b/.github/release.yml
@@ -3,7 +3,7 @@
changelog:
exclude:
labels:
- - ignore-for-release
+ - Ignore for release
categories:
- title: Functional requirements
labels:
diff --git a/.github/workflows/enforce-branch-policy b/.github/workflows/enforce-branch-policy
new file mode 100644
index 000000000..ed1c0dae2
--- /dev/null
+++ b/.github/workflows/enforce-branch-policy
@@ -0,0 +1,15 @@
+name: Enforce Branch Policy
+on:
+ pull_request:
+ branches: [main]
+
+jobs:
+ check-branch:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check source branch
+ run: |
+ if [ "${{ github.head_ref }}" != "develop" ]; then
+ echo "This repository only allows merges to main from develop."
+ exit 1
+ fi
diff --git a/.github/workflows/update-package-version.yaml b/.github/workflows/update-package-version.yaml
new file mode 100644
index 000000000..407c0a170
--- /dev/null
+++ b/.github/workflows/update-package-version.yaml
@@ -0,0 +1,35 @@
+name: Update Package Version
+
+on:
+ push:
+ tags:
+ - 'v*'
+
+jobs:
+ update-version:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v3
+ with:
+ ref: ${{ github.head_ref }}
+ # The bot user https://github.com/hlx-macktrucks-bot is used to commit the changes. The personal access token
+ # must be created from: https://github.com/settings/tokens
+ # The token is then stored in the secrets of the this.
+ # see https://github.com/hlxsites/vg-macktrucks-com/settings/secrets/actions
+ token: ${{ secrets.BOT_ACCESS_TOKEN }}
+
+ - name: Update package version by release tag
+ uses: BellCubeDev/update-package-version-by-release-tag@v2
+ with:
+ keep-v: "false"
+ ignore-semver-check: "true"
+ encoding: "utf8"
+
+ - name: Commit and Push Changes
+ run: |
+ git config user.name "GitHubActions"
+ git config user.email "<>"
+ git add package.json
+ git commit -m "Update package version to ${{ github.ref_name }}"
+ git push
diff --git a/.gitignore b/.gitignore
index 6a3bcc995..b924bb2a6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,8 @@ node_modules
helix-importer-ui
.DS_Store
.idea/*
+
+fstab.yaml
+pull_request_template.md
+README.md
+config.json
diff --git a/.stylelintignore b/.stylelintignore
new file mode 100644
index 000000000..05b7efe0e
--- /dev/null
+++ b/.stylelintignore
@@ -0,0 +1 @@
+vendor/**
diff --git a/404.html b/404.html
index 67f0e821d..571b00ca3 100644
--- a/404.html
+++ b/404.html
@@ -1,5 +1,5 @@
-
+
Page not found
@@ -12,65 +12,51 @@
-
-
-
Sorry, we've looked high and low and can't find the page you're looking
- for.
-
You might try searching for it or try some of our most commonly visited pages.
-
Possible reasons:
-
-
The page has moved
-
The page no longer exists
-
The web address was not entered correctly
-
The page was accessed from an expired search result
-
-
Suggested actions
-
-
Make sure the web address has been entered correctly