diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml
index cb6ec6d84..996023984 100644
--- a/.github/workflows/deploy.yaml
+++ b/.github/workflows/deploy.yaml
@@ -51,6 +51,8 @@ jobs:
- name: Install Node.js dependencies
run: "npm ci"
- name: Build admin CMS
+ env:
+ FIPGUIDE_BRANCH: ${{ github.ref_name }}
run: "npm run build:admin"
- name: Cache Hugo Resources
uses: actions/cache@v4
@@ -63,7 +65,6 @@ jobs:
env:
HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache
HUGO_ENVIRONMENT: production
- FIPGUIDE_BRANCH: ${{ github.ref_name }}
TZ: Europe/Berlin
run: |
hugo \
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 93a526529..738ee39c9 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -26,7 +26,6 @@ repos:
exclude:
glob:
- "**/validity.yaml"
- - "layouts/admin/section.cmsconfig.yml"
- id: debug-statements
- id: destroyed-symlinks
- id: end-of-file-fixer
diff --git a/assets/admin/fields.js b/assets/admin/fields.js
index 46f8cfdba..514bf85a0 100644
--- a/assets/admin/fields.js
+++ b/assets/admin/fields.js
@@ -8,17 +8,15 @@ function FipValiditySelectControl(props) {
var groups = props.entry ? props.entry.getIn(["data", "groups"]) : null;
groups = groups && typeof groups.toJS === "function" ? groups.toJS() : [];
var groupType = props.field ? props.field.get("group_type") : null;
- if (groupType) {
- groups = groups.filter(function (group) {
- return !group.type || group.type === groupType;
- });
- }
+
var options = groups
.filter(function (group) {
- return !!group.name;
+ return (
+ !!group.id && (!groupType || !group.type || group.type === groupType)
+ );
})
.map(function (group) {
- return { label: group.name, value: group.name };
+ return { label: group.id, value: group.id };
});
return h(SelectControl, {
diff --git a/assets/admin/shortcodes.js b/assets/admin/shortcodes.js
index 22addf953..2dfdb4c9e 100644
--- a/assets/admin/shortcodes.js
+++ b/assets/admin/shortcodes.js
@@ -157,6 +157,69 @@ function makeToBlock(name, cfg) {
};
}
+// Matches `suffix](src "title")`, where the
+// nested `[linkText](linkHref)` link and the quoted title are both optional.
+var imagePattern =
+ /!\[([^[\]]*)(?:\[([^\]]*)\]\(([^)]*)\))?([^\]]*)\]\(([^) "]+)(?: "([^"]*)")?\)/;
+
+var imageFields = [
+ {
+ name: "src",
+ label: "Source",
+ widget: "image",
+ param: { required: true },
+ },
+ {
+ name: "alt",
+ label: "Alt Text / Caption",
+ widget: "markdown",
+ required: false,
+ minimal: true,
+ hint: "Describes the image for accessibility and is also shown as a visible caption below the image.",
+ editor_components: ["icon", "dialog-trigger", "footnote-reference"],
+ param: {},
+ },
+ {
+ name: "title",
+ label: "Title",
+ widget: "string",
+ required: false,
+ hint: "Shown as a tooltip when hovering over the image.",
+ param: {},
+ },
+];
+
+CMS.registerEditorComponent({
+ id: "image2",
+ label: "Image",
+ icon: "image",
+ fields: imageFields,
+ pattern: imagePattern,
+ fromBlock: function (match) {
+ var prefix = match[1] || "";
+ var linkText = match[2];
+ var linkHref = match[3];
+ var suffix = match[4] || "";
+ var alt =
+ linkText !== undefined
+ ? prefix + "[" + linkText + "](" + linkHref + ")" + suffix
+ : prefix + suffix;
+ return {
+ alt: alt,
+ src: String(match[5] || ""),
+ title: String(match[6] || ""),
+ };
+ },
+ toBlock: function (data) {
+ var alt = data.alt || "";
+ var title = data.title ? ' "' + data.title + '"' : "";
+ return " + title + ")";
+ },
+ toPreview: function () {
+ return "";
+ },
+});
+
var highlightFields = [
{
name: "type",
@@ -167,12 +230,21 @@ var highlightFields = [
{ label: "Tip", value: "tip" },
{ label: "Inofficial", value: "inofficial" },
],
+ param: { positional: true, required: true },
},
{
name: "body",
label: "Content",
widget: "markdown",
- editor_components: ["button", "float-image", "icon", "image"],
+ editor_components: [
+ "button",
+ "float-image",
+ "icon",
+ "image2",
+ "table",
+ "dialog-trigger",
+ "footnote-reference",
+ ],
},
];
@@ -224,12 +296,21 @@ var confusionFields = [
search_fields: ["title"],
value_field: "country",
display_fields: ["title"],
+ param: { positional: true, required: true },
},
{
name: "body",
label: "Content",
widget: "markdown",
- editor_components: ["button", "float-image", "icon", "image"],
+ editor_components: [
+ "button",
+ "float-image",
+ "icon",
+ "image2",
+ "table",
+ "dialog-trigger",
+ "footnote-reference",
+ ],
},
];
@@ -281,7 +362,10 @@ var expanderFields = [
"float-image",
"highlight-raw",
"icon",
- "image",
+ "image2",
+ "table",
+ "dialog-trigger",
+ "footnote-reference",
],
},
];
@@ -475,8 +559,11 @@ var trainCategoryFields = [
"float-image",
"highlight-raw",
"icon",
- "image",
+ "image2",
+ "table",
+ "dialog-trigger",
"confusion",
+ "footnote-reference",
],
},
];
@@ -533,6 +620,7 @@ var bookingFields = [
label: "Booking Platform Link",
widget: "cms-edit-link",
static: true,
+ required: false,
href: "#/collections/booking",
label_template: "Manage Booking Platforms \u2192",
},
@@ -626,7 +714,15 @@ var bookingFields = [
label: "Additional info",
widget: "markdown",
required: false,
- editor_components: ["button", "float-image", "icon", "image"],
+ editor_components: [
+ "button",
+ "float-image",
+ "icon",
+ "image2",
+ "table",
+ "dialog-trigger",
+ "footnote-reference",
+ ],
},
];
@@ -688,7 +784,10 @@ var bookingSectionFields = [
"float-image",
"highlight-raw",
"icon",
- "image",
+ "image2",
+ "table",
+ "dialog-trigger",
+ "footnote-reference",
],
},
];
@@ -781,7 +880,15 @@ var identifyOperatorFields = [
label: "Additional info",
widget: "markdown",
required: false,
- editor_components: ["button", "float-image", "highlight", "icon", "image"],
+ editor_components: [
+ "button",
+ "float-image",
+ "highlight",
+ "icon",
+ "image2",
+ "table",
+ "dialog-trigger",
+ ],
},
];
@@ -819,7 +926,15 @@ var satelliteFields = [
label: "Additional info",
widget: "markdown",
required: false,
- editor_components: ["button", "float-image", "icon", "image"],
+ editor_components: [
+ "button",
+ "float-image",
+ "icon",
+ "image2",
+ "table",
+ "dialog-trigger",
+ "footnote-reference",
+ ],
},
];
@@ -859,7 +974,15 @@ var dialogFields = [
name: "body",
label: "Content",
widget: "markdown",
- editor_components: ["button", "float-image", "highlight", "icon", "image"],
+ editor_components: [
+ "button",
+ "float-image",
+ "highlight",
+ "icon",
+ "image2",
+ "table",
+ "dialog-trigger",
+ ],
},
];
@@ -888,6 +1011,48 @@ CMS.registerEditorComponent({
},
});
+// Matches `[text](dialog:dialogId)`, a link that opens the dialog with the
+// given ID (see the "Dialog" component) instead of navigating anywhere.
+var dialogTriggerPattern = /\[([^\]\n]*)\]\(dialog:([^)\s]+)\)/;
+
+var dialogTriggerFields = [
+ {
+ name: "text",
+ label: "Link text",
+ widget: "string",
+ required: true,
+ },
+ {
+ name: "dialog_id",
+ label: "Dialog ID (anchor)",
+ widget: "string",
+ required: true,
+ hint: 'Must match the "Dialog ID (anchor)" of a Dialog component on this page.',
+ },
+];
+
+CMS.registerEditorComponent({
+ id: "dialog-trigger",
+ label: "Dialog Trigger",
+ icon: "open_in_browser",
+ mode: "dialog",
+ summary: "{{text}}",
+ fields: dialogTriggerFields,
+ pattern: dialogTriggerPattern,
+ fromBlock: function (match) {
+ return {
+ text: String(match[1] || ""),
+ dialog_id: String(match[2] || ""),
+ };
+ },
+ toBlock: function (data) {
+ return "[" + (data.text || "") + "](dialog:" + (data.dialog_id || "") + ")";
+ },
+ toPreview: function () {
+ return "";
+ },
+});
+
var floatImageFields = [
{ name: "src", label: "Image", widget: "image", param: { required: true } },
{
@@ -927,7 +1092,14 @@ var floatImageFields = [
label: "Surrounding text",
widget: "markdown",
required: false,
- editor_components: ["button", "icon", "image"],
+ editor_components: [
+ "button",
+ "icon",
+ "image2",
+ "table",
+ "dialog-trigger",
+ "footnote-reference",
+ ],
},
];
@@ -973,6 +1145,25 @@ CMS.registerEditorComponent({
},
});
+CMS.registerEditorComponent({
+ id: "children-discount",
+ label: "Children Discount Notice",
+ icon: "child_care",
+ fields: [],
+ pattern: selfClosingPattern("children-discount"),
+ fromBlock: function () {
+ return {};
+ },
+ toBlock: makeToBlock("children-discount", {
+ bracket: "<",
+ fields: [],
+ bodyMode: "none",
+ }),
+ toPreview: function () {
+ return "";
+ },
+});
+
var iconFields = [
{
name: "name",
@@ -1046,7 +1237,16 @@ var updateFields = [
name: "body",
label: "Content",
widget: "markdown",
- editor_components: ["button", "float-image", "highlight", "icon", "image"],
+ editor_components: [
+ "button",
+ "float-image",
+ "highlight",
+ "icon",
+ "image2",
+ "table",
+ "dialog-trigger",
+ "footnote-reference",
+ ],
},
];
@@ -1081,7 +1281,15 @@ var columnFields = [
name: "body",
label: "Content",
widget: "markdown",
- editor_components: ["button", "float-image", "highlight", "icon", "image"],
+ editor_components: [
+ "button",
+ "float-image",
+ "highlight",
+ "icon",
+ "image2",
+ "table",
+ "footnote-reference",
+ ],
},
];
@@ -1110,7 +1318,7 @@ var columnsFields = [
name: "body",
label: "Content",
widget: "markdown",
- editor_components: ["column", "icon"],
+ editor_components: ["column"],
},
];
diff --git a/layouts/admin/section.cmsconfig.yml b/assets/admin/static/config.yml
similarity index 81%
rename from layouts/admin/section.cmsconfig.yml
rename to assets/admin/static/config.yml
index 4c939383f..f0d650777 100644
--- a/layouts/admin/section.cmsconfig.yml
+++ b/assets/admin/static/config.yml
@@ -1,11 +1,13 @@
backend:
name: github
repo: fipguide/fipguide.github.io
- branch: "{{ or (os.Getenv "FIPGUIDE_BRANCH") "main" }}"
- auth_scope: repo
+ branch: main
+ auth_scope: public_repo
open_authoring: true
site_domain: fipguide.netlify.app
preview_context: netlify/fipguide-test/deploy-preview
+ prompt_commit_messages: true
+ cms_label_prefix: cms/
publish_mode: editorial_workflow
app_title: "FIP Guide CMS"
editor:
@@ -90,27 +92,19 @@ x_fip_validity_target_fields_reduced: &fip_validity_target_fields_reduced
group_type: "fip-reduced-ticket"
required: false
-x_fip_validity_columns: &fip_validity_columns
- - label: "FIP Coupon"
- name: "fip-coupon"
- widget: "object"
- summary: "Target groups"
- hint: "Number and validity of FIP Coupons available to this target group."
- fields: *fip_validity_target_fields_coupon
- - label: "FIP Reduced Ticket"
- name: "fip-reduced-ticket"
- widget: "object"
- summary: "Target groups"
- hint: "Discount on FIP Reduced Tickets (FIP 50 / FIP 75) available to this target group."
- fields: *fip_validity_target_fields_reduced
-
collections:
- name: "news"
label: "News"
label_singular: "News Article"
+ editor:
+ second_pane: false
folder: "content/news"
- path: "{{"{{"}}slug}}/index"
- preview_path: "{{"{{"}}locale}}/news/{{"{{"}}slug}}/"
+ path: "{{slug}}/index"
+ preview_path: "{{locale}}/news/{{slug}}/"
+ slug:
+ auto_increment: true
+ hint: "A sequential number used as the article slug, e.g. 1."
+ pattern: ["^[0-9]+$", "Must contain only numbers"]
publish: false
create: true
delete: false
@@ -174,11 +168,13 @@ collections:
widget: "markdown"
i18n: true
editor_components:
- - "image"
+ - "image2"
+ - "table"
- "highlight"
- "expander"
- "button"
- "dialog"
+ - "dialog-trigger"
- "float-image"
- "wip"
- "icon"
@@ -190,10 +186,12 @@ collections:
- name: "country"
label: "Countries"
label_singular: "Country"
+ editor:
+ second_pane: false
folder: "content/country"
- path: "{{"{{"}}slug}}/index"
- preview_path: "{{"{{"}}locale}}/country/{{"{{"}}slug}}/"
- thumbnail: "/images/flags/{{"{{"}}slug}}.webp"
+ path: "{{slug}}/index"
+ preview_path: "{{locale}}/country/{{slug}}/"
+ thumbnail: "/images/flags/{{slug}}.webp"
create: false
publish: false
delete: false
@@ -231,11 +229,13 @@ collections:
widget: "markdown"
i18n: true
editor_components:
- - "image"
+ - "image2"
+ - "table"
- "highlight"
- "expander"
- "button"
- "dialog"
+ - "dialog-trigger"
- "float-image"
- "wip"
- "icon"
@@ -247,9 +247,11 @@ collections:
- name: "operator"
label: "Operators"
label_singular: "Operator"
+ editor:
+ second_pane: false
folder: "content/operator"
- path: "{{"{{"}}slug}}/index"
- preview_path: "{{"{{"}}locale}}/operator/{{"{{"}}slug}}/"
+ path: "{{slug}}/index"
+ preview_path: "{{locale}}/operator/{{slug}}/"
publish: false
create: false
delete: false
@@ -292,7 +294,8 @@ collections:
widget: "markdown"
i18n: true
editor_components:
- - "image"
+ - "image2"
+ - "table"
- "highlight"
- "expander"
- "fip-validity"
@@ -300,19 +303,23 @@ collections:
- "booking"
- "button"
- "dialog"
+ - "dialog-trigger"
- "float-image"
- "wip"
- "icon"
- "footnote-reference"
- "columns"
- "footnote"
+ - "children-discount"
- name: "application"
label: "FIP Application"
label_singular: "FIP Application Page"
+ editor:
+ second_pane: false
folder: "content/application"
- path: "{{"{{"}}slug}}/index"
- preview_path: "{{"{{"}}locale}}/application/{{"{{"}}slug}}/"
+ path: "{{slug}}/index"
+ preview_path: "{{locale}}/application/{{slug}}/"
publish: false
create: true
delete: false
@@ -356,7 +363,7 @@ collections:
How and when can employees of this issuer request FIP Coupons?
-->
- {{"{{"}}< fip-validity-table type="fip-coupon" >}}
+ {{< fip-validity-table type="fip-coupon" >}}
## FIP Reduced Ticket
@@ -364,14 +371,16 @@ collections:
How and when can employees of this issuer request FIP Reduced Tickets (FIP 50 / FIP 75)?
-->
- {{"{{"}}< fip-validity-table type="fip-reduced-ticket" >}}
+ {{< fip-validity-table type="fip-reduced-ticket" >}}
editor_components:
- - "image"
+ - "image2"
+ - "table"
- "highlight"
- "expander"
- "fip-validity-table"
- "button"
- "dialog"
+ - "dialog-trigger"
- "float-image"
- "wip"
- "icon"
@@ -382,11 +391,13 @@ collections:
- name: "fip-validity"
label: "FIP Validity Tables"
label_singular: "FIP Validity Table"
+ editor:
+ second_pane: false
folder: "content/application"
- path: "{{"{{"}}slug}}/validity"
+ path: "{{slug}}/validity"
extension: "yaml"
format: "yaml"
- summary: "{{"{{"}}dirname}}"
+ summary: "{{dirname}}"
create: true
publish: false
delete: false
@@ -394,23 +405,36 @@ collections:
- label: "Validity Groups"
name: "groups"
widget: "list"
- summary: "{{"{{"}}fields.name}} ({{"{{"}}fields.type}}, {{"{{"}}fields.status}})"
- hint: "The validity groups available for this issuer. Referenced by name in the Operators section below."
+ map_key_field: "id"
+ summary: "{{fields.id}} ({{fields.type}}, {{fields.status}})"
+ hint: "The validity groups available for this issuer. Referenced by ID in the Operators section below."
fields:
- - label: "Name"
- name: "name"
+ - label: "ID"
+ name: "id"
widget: "string"
+ pattern:
+ ["^[a-z0-9-]+$", "Use lowercase letters, digits and hyphens only"]
hint: 'Unique identifier of this group, e.g. "coupon-1".'
- label: "Type"
name: "type"
widget: "select"
- options: ["fip-coupon", "fip-reduced-ticket"]
+ options:
+ - label: "FIP Coupon"
+ value: "fip-coupon"
+ - label: "FIP Reduced Ticket"
+ value: "fip-reduced-ticket"
required: false
hint: "Which FIP product this group applies to. Restricts which dropdowns it shows up in below. Leave unset to show it under both."
- label: "Status"
name: "status"
widget: "select"
- options: ["valid", "invalid", "unknown"]
+ options:
+ - label: "Valid"
+ value: "valid"
+ - label: "Invalid"
+ value: "invalid"
+ - label: "Unknown"
+ value: "unknown"
- label: "Text"
name: "text"
widget: "object"
@@ -438,26 +462,41 @@ collections:
minimal: true
- label: "Operators"
name: "operators"
- widget: "object"
+ widget: "list"
+ map_key_field: "operator"
collapsed: true
- summary: "Validity Groups"
+ summary: "{{fields.operator}}"
hint: "For each target operator, select the applicable validity group per FIP product and target group."
fields:
-{{- range (sort (where site.RegularPages "Type" "operator") "File.ContentBaseName") }}
- - label: {{ printf "%q" .Title }}
- name: {{ printf "%q" .File.ContentBaseName }}
+ - label: "Operator"
+ name: "operator"
+ widget: "relation"
+ collection: "operator"
+ search_fields: ["title"]
+ value_field: "operator"
+ display_fields: ["title"]
+ hint: "The operator this validity information applies to."
+ - label: "FIP Coupon"
+ name: "fip-coupon"
+ widget: "object"
+ summary: "Target groups"
+ hint: "Number and validity of FIP Coupons available to this target group."
+ fields: *fip_validity_target_fields_coupon
+ - label: "FIP Reduced Ticket"
+ name: "fip-reduced-ticket"
widget: "object"
- collapsed: true
- summary: "FIP Coupon & FIP Reduced Ticket"
- fields: *fip_validity_columns
-{{- end }}
+ summary: "Target groups"
+ hint: "Discount on FIP Reduced Tickets (FIP 50 / FIP 75) available to this target group."
+ fields: *fip_validity_target_fields_reduced
- name: "booking"
label: "Booking Platforms"
label_singular: "Booking Platform"
+ editor:
+ second_pane: false
folder: "content/booking"
- path: "{{"{{"}}slug}}/index"
- preview_path: "{{"{{"}}locale}}/booking/{{"{{"}}slug}}/"
+ path: "{{slug}}/index"
+ preview_path: "{{locale}}/booking/{{slug}}/"
publish: false
create: true
delete: false
@@ -566,7 +605,20 @@ collections:
name: type
widget: select
options:
- [website, online, onsite, phone, email, socialmedia, machine]
+ - label: "Website"
+ value: "website"
+ - label: "Online"
+ value: "online"
+ - label: "On-Site"
+ value: "onsite"
+ - label: "Telephone"
+ value: "phone"
+ - label: "Email"
+ value: "email"
+ - label: "Social Media"
+ value: "socialmedia"
+ - label: "Ticket Machine"
+ value: "machine"
i18n: duplicate
- label: "Email Templates"
name: email_templates
@@ -664,7 +716,7 @@ collections:
widget: "markdown"
i18n: true
default: |
- {{"{{"}}% booking-section "fip_50" %}}
+ {{% booking-section "fip_50" %}}
## FIP 50 Tickets
@@ -672,9 +724,9 @@ collections:
Explain the steps for booking FIP 50 Tickets with this booking platform.
-->
- {{"{{"}}% /booking-section %}}
+ {{% /booking-section %}}
- {{"{{"}}% booking-section "fip_global_fare" %}}
+ {{% booking-section "fip_global_fare" %}}
## FIP Global Fare
@@ -682,9 +734,9 @@ collections:
Explain the steps for booking FIP Global Fares with this booking platform.
-->
- {{"{{"}}% /booking-section %}}
+ {{% /booking-section %}}
- {{"{{"}}% booking-section "reservations" %}}
+ {{% booking-section "reservations" %}}
## Reservations
@@ -692,15 +744,17 @@ collections:
Explain the steps for booking reservations with this booking platform.
-->
- {{"{{"}}% /booking-section %}}
+ {{% /booking-section %}}
editor_components:
- - "image"
+ - "image2"
+ - "table"
- "highlight-raw"
- "expander"
- "booking-section"
- "button"
- "satellite"
- "dialog"
+ - "dialog-trigger"
- "float-image"
- "wip"
- "icon"
@@ -711,14 +765,16 @@ collections:
- name: "general"
label: "General Pages"
i18n: true
+ editor:
+ second_pane: false
files:
- name: "contribution"
label: "Contribution"
- file: "content/contribution/index.{{"{{"}}locale}}.md"
+ file: "content/contribution/index.{{locale}}.md"
media_folder: ""
public_folder: ""
i18n: true
- preview_path: "{{"{{"}}locale}}/contribution/"
+ preview_path: "{{locale}}/contribution/"
fields:
- label: "Title"
name: "title"
@@ -729,11 +785,13 @@ collections:
widget: "markdown"
i18n: true
editor_components:
- - "image"
+ - "image2"
+ - "table"
- "highlight"
- "expander"
- "button"
- "dialog"
+ - "dialog-trigger"
- "float-image"
- "wip"
- "icon"
@@ -743,11 +801,11 @@ collections:
- name: "generalinformation"
label: "General Information"
- file: "content/general/generalinformation/index.{{"{{"}}locale}}.md"
+ file: "content/general/generalinformation/index.{{locale}}.md"
media_folder: ""
public_folder: ""
i18n: true
- preview_path: "{{"{{"}}locale}}/general/generalinformation/"
+ preview_path: "{{locale}}/general/generalinformation/"
fields:
- label: "Title"
name: "title"
@@ -768,11 +826,13 @@ collections:
widget: "markdown"
i18n: true
editor_components:
- - "image"
+ - "image2"
+ - "table"
- "highlight"
- "expander"
- "button"
- "dialog"
+ - "dialog-trigger"
- "float-image"
- "wip"
- "icon"
@@ -782,11 +842,11 @@ collections:
- name: "fip-application"
label: "FIP Application"
- file: "content/general/fip-validity/index.{{"{{"}}locale}}.md"
+ file: "content/general/fip-validity/index.{{locale}}.md"
media_folder: ""
public_folder: ""
i18n: true
- preview_path: "{{"{{"}}locale}}/general/fip-validity/"
+ preview_path: "{{locale}}/general/fip-validity/"
fields:
- label: "Title"
name: "title"
@@ -807,11 +867,13 @@ collections:
widget: "markdown"
i18n: true
editor_components:
- - "image"
+ - "image2"
+ - "table"
- "highlight"
- "expander"
- "button"
- "dialog"
+ - "dialog-trigger"
- "float-image"
- "wip"
- "icon"
@@ -822,9 +884,11 @@ collections:
- name: "faq"
label: "FAQ"
label_singular: "FAQ Entry"
+ editor:
+ second_pane: false
folder: "content/general/faq"
- path: "{{"{{"}}slug}}/index"
- preview_path: "{{"{{"}}locale}}/general/faq/{{"{{"}}slug}}/"
+ path: "{{slug}}/index"
+ preview_path: "{{locale}}/general/faq/{{slug}}/"
publish: false
create: true
delete: false
@@ -838,17 +902,20 @@ collections:
name: "weight"
widget: "number"
required: false
+ min: 0
i18n: duplicate
- label: "Body"
name: "body"
widget: "markdown"
i18n: true
editor_components:
- - "image"
+ - "image2"
+ - "table"
- "highlight"
- "expander"
- "button"
- "dialog"
+ - "dialog-trigger"
- "float-image"
- "wip"
- "icon"
@@ -859,9 +926,11 @@ collections:
- name: "identify-operator"
label: "Identify Operator"
label_singular: "Identify Operator"
+ editor:
+ second_pane: false
folder: "content/identify-operator"
- path: "{{"{{"}}slug}}/index"
- preview_path: "{{"{{"}}locale}}/identify-operator/{{"{{"}}slug}}/"
+ path: "{{slug}}/index"
+ preview_path: "{{locale}}/identify-operator/{{slug}}/"
publish: false
create: true
delete: false
@@ -886,11 +955,13 @@ collections:
widget: "markdown"
i18n: true
editor_components:
- - "image"
+ - "image2"
+ - "table"
- "highlight"
- "expander"
- "button"
- "dialog"
+ - "dialog-trigger"
- "float-image"
- "wip"
- "icon"
diff --git a/content/admin/_index.md b/content/admin/_index.md
deleted file mode 100644
index f5bf6ac9b..000000000
--- a/content/admin/_index.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: "Admin"
-url: "/admin/"
-outputs: ["CMSConfig"]
-sitemap:
- disable: true
-build:
- list: never
- render: always
----
diff --git a/content/application/cd/validity.yaml b/content/application/cd/validity.yaml
index 5ee87509f..2bdc285ab 100644
--- a/content/application/cd/validity.yaml
+++ b/content/application/cd/validity.yaml
@@ -1,12 +1,12 @@
groups:
- - name: coupon-not-available
+ coupon-not-available:
status: invalid
text:
de: Nicht verfügbar
en: Not available
fr: Non disponible
type: fip-coupon
- - name: coupon-1
+ coupon-1:
status: valid
text:
de: |
@@ -20,7 +20,7 @@ groups:
Avec 4 champs par an. Chaque champ est valable deux jours.
type: fip-coupon
- - name: coupon-2
+ coupon-2:
status: valid
text:
de: |
@@ -34,7 +34,7 @@ groups:
Avec 4 champs par an. Chaque champ est valable deux jours.
type: fip-coupon
- - name: coupon-3
+ coupon-3:
status: valid
text:
de: |
@@ -48,7 +48,7 @@ groups:
Avec 4 champs par an. Chaque champ est valable deux jours.
type: fip-coupon
- - name: coupon-crossing-1
+ coupon-crossing-1:
status: valid
text:
de: >
@@ -64,7 +64,7 @@ groups:
Avec 2 champs par an. Chaque champ est valable pour une traversée.
type: fip-coupon
- - name: coupon-zssk
+ coupon-zssk:
status: valid
text:
de: |
diff --git a/content/application/cie/validity.yaml b/content/application/cie/validity.yaml
index f5e3cdf1b..1e11776f3 100644
--- a/content/application/cie/validity.yaml
+++ b/content/application/cie/validity.yaml
@@ -1,5 +1,5 @@
groups:
- - name: reduced-75
+ reduced-75:
status: valid
text:
de: 75 % Rabatt
diff --git a/content/application/db/validity.yaml b/content/application/db/validity.yaml
index 878e012cf..8093d182e 100644
--- a/content/application/db/validity.yaml
+++ b/content/application/db/validity.yaml
@@ -1,5 +1,5 @@
groups:
- - name: coupon-4fields
+ coupon-4fields:
status: valid
text:
de: >
@@ -15,14 +15,14 @@ groups:
Avec 4 champs chacun par an. Chaque champ est valable deux jours.
type: fip-coupon
- - name: coupon-not-available
+ coupon-not-available:
status: invalid
text:
de: Nicht verfügbar
en: Not available
fr: Non disponible
type: fip-coupon
- - name: coupon-crossing
+ coupon-crossing:
status: valid
text:
de: >
@@ -38,7 +38,7 @@ groups:
Avec 2 champs chacun par an. Chaque champ est valable pour une traversée.
type: fip-coupon
- - name: coupon-former-1-onetime
+ coupon-former-1-onetime:
status: valid
text:
de: |
@@ -51,7 +51,7 @@ groups:
**1 coupon**
Unique, dans les 45 mois suivant le départ.
type: fip-coupon
- - name: reduced-50
+ reduced-50:
status: valid
text:
de: 50 % Rabatt
diff --git a/content/application/gb/validity.yaml b/content/application/gb/validity.yaml
index ff633087a..968724f9b 100644
--- a/content/application/gb/validity.yaml
+++ b/content/application/gb/validity.yaml
@@ -1,12 +1,12 @@
groups:
- - name: coupon-not-available
+ coupon-not-available:
status: invalid
text:
de: Nicht verfügbar
en: Not available
fr: Non disponible
type: fip-coupon
- - name: coupon-active-1
+ coupon-active-1:
status: valid
text:
de: |
@@ -19,7 +19,7 @@ groups:
**1 coupon**
Par an.
type: fip-coupon
- - name: coupon-active-2
+ coupon-active-2:
status: valid
text:
de: |
@@ -32,14 +32,14 @@ groups:
**2 coupons**
Par an.
type: fip-coupon
- - name: reduced-50
+ reduced-50:
status: valid
text:
de: 50 % Rabatt
en: 50 % discount
fr: 50 % de réduction
type: fip-reduced-ticket
- - name: reduced-75
+ reduced-75:
status: valid
text:
de: 75 % Rabatt
diff --git a/content/application/nir/validity.yaml b/content/application/nir/validity.yaml
index f5e3cdf1b..1e11776f3 100644
--- a/content/application/nir/validity.yaml
+++ b/content/application/nir/validity.yaml
@@ -1,5 +1,5 @@
groups:
- - name: reduced-75
+ reduced-75:
status: valid
text:
de: 75 % Rabatt
diff --git a/content/application/ns/validity.yaml b/content/application/ns/validity.yaml
index 5534eb366..15cf3aefb 100644
--- a/content/application/ns/validity.yaml
+++ b/content/application/ns/validity.yaml
@@ -1,12 +1,12 @@
groups:
- - name: coupon-not-available
+ coupon-not-available:
status: invalid
text:
de: Nicht verfügbar
en: Not available
fr: Non disponible
type: fip-coupon
- - name: free-travel
+ free-travel:
status: valid
text:
de: >
@@ -22,7 +22,7 @@ groups:
Un nombre illimité de coupons pays peut être demandé (un coupon par demande).
type: fip-coupon
- - name: coupon-1
+ coupon-1:
status: valid
text:
de: |
@@ -35,7 +35,7 @@ groups:
**1 coupon**
Par an.
type: fip-coupon
- - name: coupon-2
+ coupon-2:
status: valid
text:
de: |
@@ -48,7 +48,7 @@ groups:
**2 coupons**
Par an.
type: fip-coupon
- - name: coupon-4
+ coupon-4:
status: valid
text:
de: |
@@ -61,7 +61,7 @@ groups:
**4 coupons**
Par an.
type: fip-coupon
- - name: coupon-1-onetime
+ coupon-1-onetime:
status: valid
text:
de: |
@@ -74,7 +74,7 @@ groups:
**1 coupon**
Unique, dans les 45 mois suivant le départ.
type: fip-coupon
- - name: relatives-sncf-active
+ relatives-sncf-active:
status: valid
text:
de: >
diff --git a/content/application/oebb/validity.yaml b/content/application/oebb/validity.yaml
index af5912b9f..e477aa398 100644
--- a/content/application/oebb/validity.yaml
+++ b/content/application/oebb/validity.yaml
@@ -1,12 +1,12 @@
groups:
- - name: coupon-not-available
+ coupon-not-available:
status: invalid
text:
de: Nicht verfügbar
en: Not available
fr: Non disponible
type: fip-coupon
- - name: coupon-1
+ coupon-1:
status: valid
text:
de: |
@@ -16,7 +16,7 @@ groups:
fr: |
**1 coupon** Temps plein uniquement
type: fip-coupon
- - name: coupon-1-1
+ coupon-1-1:
status: valid
text:
de: >
@@ -28,7 +28,7 @@ groups:
**1 coupon** Temps plein
Temps partiel (min. 50%): 1
coupon
type: fip-coupon
- - name: coupon-2-1
+ coupon-2-1:
status: valid
text:
de: >
@@ -41,7 +41,7 @@ groups:
**2 coupons** Temps plein
Temps partiel (min. 50%): 1
coupon
type: fip-coupon
- - name: coupon-3-1
+ coupon-3-1:
status: valid
text:
de: >
@@ -54,7 +54,7 @@ groups:
**3 coupons** Temps plein
Temps partiel (min. 50%): 1
coupon
type: fip-coupon
- - name: coupon-y1-9x1-45x0
+ coupon-y1-9x1-45x0:
status: valid
text:
de: >
@@ -71,7 +71,7 @@ groups:
mois** après le départ à la retraite: 1 coupon
**Unique dans les 45
mois** après le départ à la retraite: 0 coupon
type: fip-coupon
- - name: coupon-y0-9x1-45x1
+ coupon-y0-9x1-45x1:
status: valid
text:
de: >
@@ -88,7 +88,7 @@ groups:
mois** après le départ à la retraite: 1 coupon
**Unique dans les 45
mois** après le départ à la retraite: 1 coupon
type: fip-coupon
- - name: coupon-y0-9x2-45x1
+ coupon-y0-9x2-45x1:
status: valid
text:
de: >
@@ -105,7 +105,7 @@ groups:
mois** après le départ à la retraite: 2 coupons
**Unique dans les
45 mois** après le départ à la retraite: 1 coupon
type: fip-coupon
- - name: coupon-y1-9x3-45x0
+ coupon-y1-9x3-45x0:
status: valid
text:
de: >
@@ -122,7 +122,7 @@ groups:
mois** après le départ à la retraite: 3 coupons
**Unique dans les
45 mois** après le départ à la retraite: 0 coupon
type: fip-coupon
- - name: coupon-y0-9x0-45x1
+ coupon-y0-9x0-45x1:
status: valid
text:
de: >
@@ -139,14 +139,14 @@ groups:
mois** après le départ à la retraite: 0 coupon
**Unique dans les 45
mois** après le départ à la retraite: 1 coupon
type: fip-coupon
- - name: reduced-50
+ reduced-50:
status: valid
text:
de: 50 % Rabatt
en: 50 % discount
fr: 50 % de réduction
type: fip-reduced-ticket
- - name: reduced-no-discount
+ reduced-no-discount:
status: invalid
text:
de: Kein Rabatt
diff --git a/content/application/sncb/validity.yaml b/content/application/sncb/validity.yaml
index bc20d0fbe..a1e5764ca 100644
--- a/content/application/sncb/validity.yaml
+++ b/content/application/sncb/validity.yaml
@@ -1,12 +1,12 @@
groups:
- - name: coupon-not-available
+ coupon-not-available:
status: invalid
text:
de: Nicht verfügbar
en: Not available
fr: Non disponible
type: fip-coupon
- - name: coupon-1
+ coupon-1:
status: valid
text:
de: |
@@ -19,7 +19,7 @@ groups:
**1 coupon**
Par an.
type: fip-coupon
- - name: coupon-2
+ coupon-2:
status: valid
text:
de: |
@@ -32,7 +32,7 @@ groups:
**2 coupons**
Par an.
type: fip-coupon
- - name: coupon-sncf-nord
+ coupon-sncf-nord:
status: valid
text:
de: >
@@ -48,7 +48,7 @@ groups:
Réseau entier : 4 coupons par an. Région Nord : 8 coupons par an.
type: fip-coupon
- - name: relatives-sncf-nord
+ relatives-sncf-nord:
status: valid
text:
de: >
@@ -64,7 +64,7 @@ groups:
Réseau entier : 2 coupons par an. Région Nord : 4 coupons par an.
type: fip-coupon
- - name: relatives-sncf-retired
+ relatives-sncf-retired:
status: valid
text:
de: |
@@ -77,14 +77,14 @@ groups:
**1 coupon**
Par an (enfant uniquement).
type: fip-coupon
- - name: reduced-50
+ reduced-50:
status: valid
text:
de: 50 % Rabatt
en: 50 % discount
fr: 50 % de réduction
type: fip-reduced-ticket
- - name: reduced-75
+ reduced-75:
status: valid
text:
de: 75 % Rabatt
diff --git a/content/application/sncf/validity.yaml b/content/application/sncf/validity.yaml
index 9b4edb8c2..860163f53 100644
--- a/content/application/sncf/validity.yaml
+++ b/content/application/sncf/validity.yaml
@@ -1,5 +1,5 @@
groups:
- - name: coupon-4fields
+ coupon-4fields:
status: valid
text:
de: >
@@ -15,14 +15,14 @@ groups:
Avec 4 champs chacun par an. Chaque champ est valable deux jours.
type: fip-coupon
- - name: coupon-not-available
+ coupon-not-available:
status: invalid
text:
de: Nicht verfügbar
en: Not available
fr: Non disponible
type: fip-coupon
- - name: coupon-2fields
+ coupon-2fields:
status: valid
text:
de: >
@@ -38,7 +38,7 @@ groups:
Avec 4 champs chacun par an. Chaque champ est valable deux jours.
type: fip-coupon
- - name: coupon-4fields-4
+ coupon-4fields-4:
status: valid
text:
de: >
@@ -54,7 +54,7 @@ groups:
Avec 4 champs chacun par an. Chaque champ est valable deux jours.
type: fip-coupon
- - name: coupon-6fields
+ coupon-6fields:
status: valid
text:
de: >
@@ -70,7 +70,7 @@ groups:
Avec 4 champs chacun par an. Chaque champ est valable deux jours.
type: fip-coupon
- - name: coupon-crossing
+ coupon-crossing:
status: valid
text:
de: >
@@ -86,14 +86,14 @@ groups:
Avec 2 champs chacun par an. Chaque champ est valable pour une traversée.
type: fip-coupon
- - name: reduced-50
+ reduced-50:
status: valid
text:
de: 50 % Rabatt
en: 50 % discount
fr: 50 % de réduction
type: fip-reduced-ticket
- - name: reduced-75
+ reduced-75:
status: valid
text:
de: 75 % Rabatt
diff --git a/content/operator/bls/index.de.md b/content/operator/bls/index.de.md
index 0a0529a08..3e3c3b5b5 100644
--- a/content/operator/bls/index.de.md
+++ b/content/operator/bls/index.de.md
@@ -2,6 +2,7 @@
title: BLS
country:
- switzerland
+operator: bls
content_images:
- image.webp
aliases:
diff --git a/content/operator/bls/index.en.md b/content/operator/bls/index.en.md
index c556e9bcf..b85dcbe1e 100644
--- a/content/operator/bls/index.en.md
+++ b/content/operator/bls/index.en.md
@@ -2,6 +2,7 @@
title: BLS
country:
- switzerland
+operator: bls
content_images:
- image.webp
aliases:
diff --git a/content/operator/bls/index.fr.md b/content/operator/bls/index.fr.md
index a88c14bd8..7f6805d2b 100644
--- a/content/operator/bls/index.fr.md
+++ b/content/operator/bls/index.fr.md
@@ -2,6 +2,7 @@
title: BLS
country:
- switzerland
+operator: bls
content_images:
- image.webp
aliases:
diff --git a/content/operator/sbb/index.de.md b/content/operator/sbb/index.de.md
index 3ecb168de..42c4b4e1d 100644
--- a/content/operator/sbb/index.de.md
+++ b/content/operator/sbb/index.de.md
@@ -2,6 +2,7 @@
title: SBB CFF FFS
country:
- switzerland
+operator: sbb
content_images:
- image.webp
aliases:
diff --git a/content/operator/sbb/index.en.md b/content/operator/sbb/index.en.md
index 024db463a..3a4b501b6 100644
--- a/content/operator/sbb/index.en.md
+++ b/content/operator/sbb/index.en.md
@@ -2,6 +2,7 @@
title: SBB CFF FFS
country:
- switzerland
+operator: sbb
content_images:
- image.webp
aliases:
diff --git a/content/operator/sbb/index.fr.md b/content/operator/sbb/index.fr.md
index 4a1c31959..6d5a14697 100644
--- a/content/operator/sbb/index.fr.md
+++ b/content/operator/sbb/index.fr.md
@@ -2,6 +2,7 @@
title: SBB CFF FFS
country:
- switzerland
+operator: sbb
content_images:
- image.webp
aliases:
diff --git a/hugo.yaml b/hugo.yaml
index ae6ce0ea7..167593e8d 100644
--- a/hugo.yaml
+++ b/hugo.yaml
@@ -4,7 +4,7 @@ ignoreLogs: ["warning-rendershortcodes-in-html"]
security:
funcs:
- getenv: ["^HUGO_", "^CI$", "^FIPGUIDE_"]
+ getenv: ["^HUGO_", "^CI$"]
defaultContentLanguage: "en"
defaultContentLanguageInSubdir: true
@@ -38,17 +38,6 @@ module:
hugoVersion:
min: "0.164.0"
-mediaTypes:
- application/x-yaml:
- suffixes: ["yml"]
-
-outputFormats:
- CMSConfig:
- mediaType: "application/x-yaml"
- baseName: "config"
- isPlainText: true
- notAlternative: true
-
related:
includeNewer: true
indices:
diff --git a/layouts/_partials/fip-validity/dialog.html b/layouts/_partials/fip-validity/dialog.html
index ea8f39582..8fed9523e 100644
--- a/layouts/_partials/fip-validity/dialog.html
+++ b/layouts/_partials/fip-validity/dialog.html
@@ -14,7 +14,7 @@
{{- with $appPage -}}
{{- with .Resources.Get "validity.yaml" -}}
{{- $validity := . | transform.Unmarshal -}}
- {{- $groupsMap = partial "fip-validity/groups-map" $validity -}}
+ {{- $groupsMap = $validity.groups -}}
{{- $entry = index (index (index $validity "operators") $currentSlug) $type -}}
{{- end -}}
{{- end -}}
diff --git a/layouts/_partials/fip-validity/groups-map.html b/layouts/_partials/fip-validity/groups-map.html
deleted file mode 100644
index 79130ff84..000000000
--- a/layouts/_partials/fip-validity/groups-map.html
+++ /dev/null
@@ -1,5 +0,0 @@
-{{- $map := dict -}}
-{{- range $g := index . "groups" -}}
- {{- $map = merge $map (dict $g.name $g) -}}
-{{- end -}}
-{{- return $map -}}
diff --git a/layouts/_shortcodes/fip-validity-table.html b/layouts/_shortcodes/fip-validity-table.html
index ff184a192..9e59638ae 100644
--- a/layouts/_shortcodes/fip-validity-table.html
+++ b/layouts/_shortcodes/fip-validity-table.html
@@ -4,7 +4,7 @@
{{- $excluded := slice "eurostar" "euskotren" -}}
{{- $issuerSlug := $page.File.ContentBaseName -}}
{{- $validity := $page.Resources.Get "validity.yaml" | transform.Unmarshal -}}
-{{- $groupsMap := partial "fip-validity/groups-map" $validity -}}
+{{- $groupsMap := $validity.groups -}}
{{- $entries := dict -}}
{{- range where $page.Site.RegularPages "Type" "operator" -}}
{{- $targetSlug := .File.ContentBaseName -}}
diff --git a/netlify.toml b/netlify.toml
index 8fab1904c..4fd828719 100644
--- a/netlify.toml
+++ b/netlify.toml
@@ -1,5 +1,5 @@
[build]
- command = "npm run build:admin && echo 'resourceDir: /opt/build/cache/resources_cache' >> hugo.yaml && FIPGUIDE_BRANCH=\"$HEAD\" hugo --gc --minify -b $DEPLOY_PRIME_URL && npx -y pagefind --site public"
+ command = "FIPGUIDE_BRANCH=\"$HEAD\" npm run build:admin && echo 'resourceDir: /opt/build/cache/resources_cache' >> hugo.yaml && hugo --gc --minify -b $DEPLOY_PRIME_URL && npx -y pagefind --site public"
publish = "public"
[build.environment]
diff --git a/package-lock.json b/package-lock.json
index 37b96ff61..3e4237932 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,15 +11,15 @@
"dependencies": {
"@fontsource/roboto": "^5.3.0",
"@fontsource/sansita": "^5.3.0",
- "@material-symbols/svg-700": "^0.47.6",
+ "@material-symbols/svg-700": "^0.48.0",
"@panzoom/panzoom": "^4.6.2",
- "@sveltia/cms": "^0.227.3",
+ "@sveltia/cms": "^0.248.1",
"pagefind": "^1.5.2",
- "prettier": "^3.9.9"
+ "prettier": "^3.9.10"
},
"devDependencies": {
"prettier-plugin-go-template": "^0.0.15",
- "vite": "7.3.6"
+ "vite": "8.3.4"
}
},
"node_modules/@esbuild/aix-ppc64": {
@@ -35,6 +35,7 @@
"os": [
"aix"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -52,6 +53,7 @@
"os": [
"android"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -69,6 +71,7 @@
"os": [
"android"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -86,6 +89,7 @@
"os": [
"android"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -103,6 +107,7 @@
"os": [
"darwin"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -120,6 +125,7 @@
"os": [
"darwin"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -137,6 +143,7 @@
"os": [
"freebsd"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -154,6 +161,7 @@
"os": [
"freebsd"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -171,6 +179,7 @@
"os": [
"linux"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -188,6 +197,7 @@
"os": [
"linux"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -205,6 +215,7 @@
"os": [
"linux"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -222,6 +233,7 @@
"os": [
"linux"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -239,6 +251,7 @@
"os": [
"linux"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -256,6 +269,7 @@
"os": [
"linux"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -273,6 +287,7 @@
"os": [
"linux"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -290,6 +305,7 @@
"os": [
"linux"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -307,6 +323,7 @@
"os": [
"linux"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -324,6 +341,7 @@
"os": [
"netbsd"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -341,6 +359,7 @@
"os": [
"netbsd"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -358,6 +377,7 @@
"os": [
"openbsd"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -375,6 +395,7 @@
"os": [
"openbsd"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -392,6 +413,7 @@
"os": [
"openharmony"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -409,6 +431,7 @@
"os": [
"sunos"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -426,6 +449,7 @@
"os": [
"win32"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -443,6 +467,7 @@
"os": [
"win32"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -460,6 +485,7 @@
"os": [
"win32"
],
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -483,9 +509,9 @@
}
},
"node_modules/@material-symbols/svg-700": {
- "version": "0.47.6",
- "resolved": "https://registry.npmjs.org/@material-symbols/svg-700/-/svg-700-0.47.6.tgz",
- "integrity": "sha512-qF9HS5YtdK8pQ6S3/dsm6fGS79Pq/7op71kAGwtLAL+5OD1mseSnCYDjhHGaMSqk1Vdqt2BEExE+OdjLWBBSUg==",
+ "version": "0.48.0",
+ "resolved": "https://registry.npmjs.org/@material-symbols/svg-700/-/svg-700-0.48.0.tgz",
+ "integrity": "sha512-E1uUoqBN4NhcE4JlZo89027cQ8HzDMrEcA21c/UPPJExSC/g5125YlCpSq9mTQEOqDbinF6WVVbdJ0IEsFTLMA==",
"license": "Apache-2.0"
},
"node_modules/@mixmark-io/domino": {
@@ -494,21 +520,264 @@
"integrity": "sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==",
"license": "BSD-2-Clause"
},
- "node_modules/@napi-rs/lzma-linux-x64-gnu": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz",
- "integrity": "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==",
+ "node_modules/@napi-rs/canvas": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-1.0.11.tgz",
+ "integrity": "sha512-vt5tog1cr+QKadIddGe+3LrcX0EmjEd0izF717Uwf92mBmgYfq2XRmL2r4bZU40spB69exxhrBn9I91HYEr/7w==",
+ "license": "MIT",
+ "optional": true,
+ "workspaces": [
+ "e2e/*"
+ ],
+ "engines": {
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ },
+ "optionalDependencies": {
+ "@napi-rs/canvas-android-arm64": "1.0.11",
+ "@napi-rs/canvas-darwin-arm64": "1.0.11",
+ "@napi-rs/canvas-darwin-x64": "1.0.11",
+ "@napi-rs/canvas-linux-arm-gnueabihf": "1.0.11",
+ "@napi-rs/canvas-linux-arm64-gnu": "1.0.11",
+ "@napi-rs/canvas-linux-arm64-musl": "1.0.11",
+ "@napi-rs/canvas-linux-riscv64-gnu": "1.0.11",
+ "@napi-rs/canvas-linux-x64-gnu": "1.0.11",
+ "@napi-rs/canvas-linux-x64-musl": "1.0.11",
+ "@napi-rs/canvas-win32-arm64-msvc": "1.0.11",
+ "@napi-rs/canvas-win32-x64-msvc": "1.0.11"
+ }
+ },
+ "node_modules/@napi-rs/canvas-android-arm64": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-1.0.11.tgz",
+ "integrity": "sha512-dtJS4FQEfH9OwSYLtMrEnj7T8DzBbJc/97LI/OkiWOYpW/iW5t6R/gcxVrUXS8l45gCVpwMufgucRe/pe0ISqA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ }
+ },
+ "node_modules/@napi-rs/canvas-darwin-arm64": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-1.0.11.tgz",
+ "integrity": "sha512-J/JylWoJTG8OQqZaiqly4IODyAxNofUlZo0wtSBJtHk6AdymbdIkPynAM1JvQaZpPaG5h+msk9QuK8y4i1ooqw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ }
+ },
+ "node_modules/@napi-rs/canvas-darwin-x64": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-1.0.11.tgz",
+ "integrity": "sha512-nlecCk3xy06eAGC7krZtzNDm9UNTHKuHQYK8ZYegdjzgSL8anGt/eLJZm86OWaNgZkwQwvDqfSmG8Nqe6MPZNQ==",
"cpu": [
"x64"
],
- "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ }
+ },
+ "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-1.0.11.tgz",
+ "integrity": "sha512-DKImmG+sTPolE0kGPsYPBxTtOjb3INALp32O2lW2CfSr0bAzSEKKuu+GrQbtilClyoPOahUErS3OrznFDraoWA==",
+ "cpu": [
+ "arm"
+ ],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
- "node": "^22.20 || ^24.12 || >=25"
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ }
+ },
+ "node_modules/@napi-rs/canvas-linux-arm64-gnu": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-1.0.11.tgz",
+ "integrity": "sha512-55sykACGENj5j1rhj+81AO8JbR9HYgGjRZ7/H+pNr4VE1DvINKYNMTcutk8ZmWxk276jAQvUKJ3+Kdj9GXU3lQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ }
+ },
+ "node_modules/@napi-rs/canvas-linux-arm64-musl": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-1.0.11.tgz",
+ "integrity": "sha512-6Jz6jys17yXydO+WdJgu7JhoB4K7/w9sWHByzzTmLjQghUx3TDMWvLv+UcCdnWhg4oprET67EMymnrETdeGNAg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ }
+ },
+ "node_modules/@napi-rs/canvas-linux-riscv64-gnu": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-1.0.11.tgz",
+ "integrity": "sha512-lf2XeEebWiUYVOVEjLXxF7dfXrBBSEOBn9AqBh39VYXrPt5cDqI+1t58IFSjn8npqkg5jIOs8TQbjKABbFW1gQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ }
+ },
+ "node_modules/@napi-rs/canvas-linux-x64-gnu": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-1.0.11.tgz",
+ "integrity": "sha512-iDapw7nFSE5tsmQxcH2+KotJhyfVPmHd6vUOQN/Em+8WNbkZJwJ/rDowlJMFnMl0SYSDSfgKCNUGi6Sn5++Smg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ }
+ },
+ "node_modules/@napi-rs/canvas-linux-x64-musl": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-1.0.11.tgz",
+ "integrity": "sha512-26q26AyITo3CGZX4HWFIMgBMA1lu3YN07gxzBm4tW6Hglq/OVyTP50kDrmWuKybCX6dh3m8Ly+c7YhI+sqCgCQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ }
+ },
+ "node_modules/@napi-rs/canvas-win32-arm64-msvc": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-arm64-msvc/-/canvas-win32-arm64-msvc-1.0.11.tgz",
+ "integrity": "sha512-cUO96IdsfvIj2S+2PNcDSkTcLhjPj8pIOEWRV1Kj70MOP4wnE9zSk7N4C1EKHlFGRcgdR5AkbnBZj0dfHK9nbQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ }
+ },
+ "node_modules/@napi-rs/canvas-win32-x64-msvc": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-1.0.11.tgz",
+ "integrity": "sha512-DFYp/ZQRdKunI/LPc0UkRXG1vlNjJKOJf8O8Ctb8+wm2Nt2ELg9Eamc31D2VoakkfGo8L+z0Iejz6WtFbQwyGw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ }
+ },
+ "node_modules/@oxc-project/types": {
+ "version": "0.154.0",
+ "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.154.0.tgz",
+ "integrity": "sha512-KYOUGQFlLWR+s4QMV2Q9ko38TZm7EdO87Qm7rvZLqk/webse/cDjtyxKhg/47l0byCbs/k46LT8qc4PKjAikzA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/oxc-project"
}
},
"node_modules/@pagefind/darwin-arm64": {
@@ -608,10 +877,10 @@
"integrity": "sha512-Zn3B5/hwa6eYIPRSKX0xf2clv8nviTX8AnAU5kU/EugiTDhG41ya2wlBqYrZJYCWQROr/5XkWObZhIkepi89qw==",
"license": "MIT"
},
- "node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.63.5.tgz",
- "integrity": "sha512-J25QJU+B78T4FhhBsNpLJyVWOi31mwtpcMwywHmOKH65Q9IWGA81gPj+dnwlhU8wktVriYE+tFAaQgrnJRzAZg==",
+ "node_modules/@rolldown/binding-android-arm-eabi": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.14.tgz",
+ "integrity": "sha512-aWR+XKH9+rW7m5fWq/5360J3mHycrx/o6xZM2DQFdJnTMdyP7/WzxPjhtLbVWdKo2y612/4U1bWqb3HQhiF7vg==",
"cpu": [
"arm"
],
@@ -620,12 +889,15 @@
"optional": true,
"os": [
"android"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-android-arm64": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.63.5.tgz",
- "integrity": "sha512-LDopB3zuZM5Ux9TT2luNEBJW/tYbGU2g1d+VpKk6I+gSKDb+/7sYE6M225gRQt4RbMX6MSwMsVR/phdjVUgRLg==",
+ "node_modules/@rolldown/binding-android-arm64": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.14.tgz",
+ "integrity": "sha512-QiVxHofl6A8lQU7WAtOUY4QMVZXohxwz7WJJoeh8NBEUyKfIkMRKhYyq8az/1RypNiIXzNTtiS6KwHz0erxYRQ==",
"cpu": [
"arm64"
],
@@ -634,12 +906,15 @@
"optional": true,
"os": [
"android"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.63.5.tgz",
- "integrity": "sha512-wlJEERGfeuHeBavCL2qVnNacOK43NDoZM4sjkeRPymd04OAE9T1zBqDJgmZ+CIsPTYKwdzpUC8vmOw84dwY4Tg==",
+ "node_modules/@rolldown/binding-darwin-arm64": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.14.tgz",
+ "integrity": "sha512-lTQOzHuBIooh3jIr5XINQkjPGEuGy+Dsy0meXDr6Sjty0b99kYgGh4uBC/8mJX1T0kC8d6S0aPP1Y+bHkh6aBw==",
"cpu": [
"arm64"
],
@@ -648,12 +923,15 @@
"optional": true,
"os": [
"darwin"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.63.5.tgz",
- "integrity": "sha512-4nJJGg5jbo2wwPP4JP+LfEBA3bvP8rU9CLuhp7jWvq9sxEyhjQFTFdrqi+/dHEin/pd8jpT0vcehIpnZtmEdcQ==",
+ "node_modules/@rolldown/binding-darwin-x64": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.14.tgz",
+ "integrity": "sha512-hyMKEGatjmBYCs/Q4sbIcL/GqpFEqsX3wc+HYVQ/85A4rxc1o7rPm4DUI4GV4k/h0ITddwFSGpqQunI14GXjTA==",
"cpu": [
"x64"
],
@@ -662,26 +940,15 @@
"optional": true,
"os": [
"darwin"
- ]
- },
- "node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.63.5.tgz",
- "integrity": "sha512-DrZbyCDF1hneuO6jRbvZ2D7+PIBM6yIwYnJpg2vIk58T+wuFpiaGZrfUr59lDWw45bg+IrpTGLPiNi/Fk4w3Cg==",
- "cpu": [
- "arm64"
],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.63.5.tgz",
- "integrity": "sha512-gqfUVMJMB3mehqywxp6hTBFfgtMQykZY19+cfiaYP0toIJLb/1DZRJHVkQQGP13W4TAwfZDWeg1qBcheTRioXQ==",
+ "node_modules/@rolldown/binding-freebsd-x64": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.14.tgz",
+ "integrity": "sha512-u371GbXoVXrEgP20PwzoGNOdAOqAMhzo19JzzY+V4YmmnC+DTOoqdbMu+O+54emM59Mik/UdrtWgcuEDKWRPKA==",
"cpu": [
"x64"
],
@@ -690,26 +957,15 @@
"optional": true,
"os": [
"freebsd"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.63.5.tgz",
- "integrity": "sha512-CFmhpvAwzSaWMlN3VN7UtmoTihlZNzoP0juQib5TQRnYUyDV8dXeWOp29sobWAT6gXl/hQgAClLlEiYozQG3OQ==",
- "cpu": [
- "arm"
],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.63.5.tgz",
- "integrity": "sha512-Uc9H8eXCOayV6JLTH5bXKMId6qbhNHa818/BgYjm4jrlq3vZquC9cqyvHBw17xy5Mnj5f+I3gFK5JcEf3hSqrw==",
+ "node_modules/@rolldown/binding-linux-arm-gnueabihf": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.14.tgz",
+ "integrity": "sha512-BqwKsdZQf6EqVWr8fv2MrDYzAvOZ7+NYFSJESRGs87fkseEhs0TU9TXgRJTkZoRRkxTizyEg1LKUXfU3/78uqg==",
"cpu": [
"arm"
],
@@ -718,26 +974,15 @@
"optional": true,
"os": [
"linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.63.5.tgz",
- "integrity": "sha512-VcPr/szv/1BFw112Kt//fxulXt/JPqzzidU84iW68L2DdjnOO8QFUv2zTSYBEPHD6movBD4z+bbr5y60GYM7Jw==",
- "cpu": [
- "arm64"
],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.63.5.tgz",
- "integrity": "sha512-BnxtJ5/91BrIHYIkGrmjz/lbMhqEHt1dPFqIxIFR+jPn0xVc/oUSCtIT089zfp5ufwGDlYz2UC+Fe1SRBpYFbQ==",
+ "node_modules/@rolldown/binding-linux-arm64-gnu": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.14.tgz",
+ "integrity": "sha512-SD9kY8M009x/7s57Z1dgUVlP5+uYBgKQK0Tkr1WIWngrtUJmRCW1RJFMY7QDla2khXhmg2i5Io7MUjcmZNZ/KQ==",
"cpu": [
"arm64"
],
@@ -746,54 +991,32 @@
"optional": true,
"os": [
"linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-loong64-gnu": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.63.5.tgz",
- "integrity": "sha512-LrYcHZwF+fAMNKHYTOQ5osWM4AZF7YF6D+XtsjDyEvljtt11twc+zHVXBLNEjxVSUnKYsOhvVz4Z213eW02COQ==",
- "cpu": [
- "loong64"
],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-loong64-musl": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.63.5.tgz",
- "integrity": "sha512-nj7QKQePAAUpCpJHtg0pR0W/b92A9NO17JS3BAQmHDn/yhmkir2p8llrKY9TOhleKIaSzy1JhxS3T9FVld6coA==",
+ "node_modules/@rolldown/binding-linux-arm64-musl": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.14.tgz",
+ "integrity": "sha512-BJ2CL19M6uuWesMgnqJzgxoI+N+eV7b0A9O9vLV42y+gitC41fNa8KElau1tHVzuLWX5GzEuxMPhAO0tQXQMkg==",
"cpu": [
- "loong64"
+ "arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-ppc64-gnu": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.63.5.tgz",
- "integrity": "sha512-5ylkX6dWMeBKge9nTU+Rxfb+ZfaCIJ9lRqIFaK0eAMcWp7OJbYnLveLgXmm0VrvuLKb8qIK+mHyH0qu88RM+iA==",
- "cpu": [
- "ppc64"
],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-ppc64-musl": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.63.5.tgz",
- "integrity": "sha512-oHK4ZHYFDKjZviK34I+NwgfbGxgI7ztrNxj2hPTSSNFgeq1a/lEd7dHV2fdGAuTH4Iym3RHJg+vAbWaWG4B7Zg==",
+ "node_modules/@rolldown/binding-linux-ppc64-gnu": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.14.tgz",
+ "integrity": "sha512-4+Kl8daPV8NDHaD7mfCcc1pRM+Qg7ab8DyMm5FG5WoZgv4h2i3KFN1CybYBNbQqmuYm7ftJLvmMI1eHYJ22S/Q==",
"cpu": [
"ppc64"
],
@@ -802,40 +1025,15 @@
"optional": true,
"os": [
"linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.63.5.tgz",
- "integrity": "sha512-UcetmHZ6XOXuUByiKZyQmb55ZPr0LABr3Ec/HB9wKZn6CEAFWZkE+hsJErJ9hbPBC7nI0dKuELx7CoV6IM7TMg==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-riscv64-musl": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.63.5.tgz",
- "integrity": "sha512-C5CmDPQBtvjVo8cgQsBs+w6WB0JLkiixhgi6hVLV11hERWdn/p0XcPU2OUcZzac9BPOFq7SbaHFa8r3SWEysCQ==",
- "cpu": [
- "riscv64"
],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.63.5.tgz",
- "integrity": "sha512-lHVQHJFKsuuxLMi3MQO9XVL8Tje3JR82CzB+QDKC5NWBcsIWuwsn9uIM5e3lBhI+fF1/s63qnyYqsg65+8rV/w==",
+ "node_modules/@rolldown/binding-linux-s390x-gnu": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.14.tgz",
+ "integrity": "sha512-V/h8ePq1fKDrmtFMz6xcCN3DKvuvMRrwwD1q0PkBeeo4DpK64biaKvqWGVxqCeYKqeRk7gE7/iKPxLCn08O97A==",
"cpu": [
"s390x"
],
@@ -844,12 +1042,15 @@
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.63.5.tgz",
- "integrity": "sha512-3W9bTFcQNJn71cSJVM9RKIiZOy8DO/XLDii8Uv/Pm6WKqDRj7JV3ZfuXIEfyuy5LXpIzAbB/1M4Ukp9GKNa7nA==",
+ "node_modules/@rolldown/binding-linux-x64-gnu": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.14.tgz",
+ "integrity": "sha512-WxalXzgrLVpKC93xfpaJ3gCXUWzeCr+FRCbDVD2mUAy4L6Vo3lNVz0epUEUpxPWJkLNYUwM4OSIikv36OJ9mLg==",
"cpu": [
"x64"
],
@@ -858,12 +1059,15 @@
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.63.5.tgz",
- "integrity": "sha512-VDC7rRJlee/scpki96GZ27Omf6yU87s1YXwVTpjE5841faVlDYYT565rgfmoR1U0sqL7z5ivQSDjcsF6VRXyBA==",
+ "node_modules/@rolldown/binding-linux-x64-musl": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.14.tgz",
+ "integrity": "sha512-3G3tnAmTpdk9jO3GQtyHXqeFD2SlecfTws/Y3M2mmj9nMBwwuLT4kur8sZKeu7ENUHSpVO3cIsm5A52LEWWwlg==",
"cpu": [
"x64"
],
@@ -872,26 +1076,15 @@
"optional": true,
"os": [
"linux"
- ]
- },
- "node_modules/@rollup/rollup-openbsd-x64": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.63.5.tgz",
- "integrity": "sha512-z86Ok2p4pTdv5xqCKZsTooO7yBEiaJR/HzU3Wx8RmWsPoLppnMKROhJusQob8B3IE1ghC343kUW9rC2r+Wf3ig==",
- "cpu": [
- "x64"
],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-openharmony-arm64": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.63.5.tgz",
- "integrity": "sha512-IzQmj+xXwQFGhMAMKMQVXkMwMZN3TqkJgAE0nSsqvVwWWciP4AIPMmWRqOQ2GfX7TUDZr+xqGFcBS36CRPGw0g==",
+ "node_modules/@rolldown/binding-openharmony-arm64": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.14.tgz",
+ "integrity": "sha512-qyr5XiNGxm2ytx17vvtcJ9nXn6v1gENETi503bJx3OGwZ1tSonj7BosxbMa/xeAfSl5iS9X6KjEWYXLu6v1L7Q==",
"cpu": [
"arm64"
],
@@ -900,12 +1093,15 @@
"optional": true,
"os": [
"openharmony"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.63.5.tgz",
- "integrity": "sha512-F6qpTaPc9bwBH85kjy0/BLmLSW1uv7AoOXCoRIkg2arlgCYlWYcAbiMkvZuAcaWk9TpCRG//okznLAqLGshkMw==",
+ "node_modules/@rolldown/binding-win32-arm64-msvc": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.14.tgz",
+ "integrity": "sha512-oA4o5o0S2yB199YyYXDzKUv1Z56Rc+mgOjwm7Z/vJ9Z8igiDPYvoOuDyo6g7AK/ZaF09nPhDKVnGBcYHO11GXA==",
"cpu": [
"arm64"
],
@@ -914,26 +1110,15 @@
"optional": true,
"os": [
"win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.63.5.tgz",
- "integrity": "sha512-igoDsTFhhwECBeGbUuLeIk7t8Y1apa+cs6mDWpx2EZ0ch7oEQgzHbFUXN9euoHekCAQzXdXApAGkV6jznS7tWw==",
- "cpu": [
- "ia32"
],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-win32-x64-gnu": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.63.5.tgz",
- "integrity": "sha512-U3teMeMbXFmaM5D+OTJpsOXd+wV/qftIeYF9kBKL4v73641qyJmoXFtA28DQLsnmlyayEsTe72xpLHrArq6vHw==",
+ "node_modules/@rolldown/binding-win32-x64-msvc": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.14.tgz",
+ "integrity": "sha512-9mE94bf2GZUaR/fUSXCMpBoWkctu421Mi0ORpm4zqfbkjKep7RxzPFa5etcGs5h+2KApoWBOA/hAJa/7saGgEQ==",
"cpu": [
"x64"
],
@@ -942,50 +1127,46 @@
"optional": true,
"os": [
"win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.63.5.tgz",
- "integrity": "sha512-ypfC34F3RKXvCXBglGqGMsUSMKlgwd1HX9AOAlx9RoZZ6GaI42YHVeKpzg3JG+wpBUJYTG+NNZhqbDWL8tBZkw==",
- "cpu": [
- "x64"
],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/pluginutils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz",
+ "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==",
"dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
+ "license": "MIT"
},
"node_modules/@shikijs/langs": {
- "version": "4.4.3",
- "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.4.3.tgz",
- "integrity": "sha512-ePic0yfAJGOF83D5wBHK/00EjK65oahBYxFk5epgq33WRv7X9UuxLEV8PtR0szC0z8dl7INIpIodB99JRFlR+A==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.5.0.tgz",
+ "integrity": "sha512-wwBTqwduXSz0X4v9Qa2EWeFaYJEw1clCncWjoRNQRbVDu3SPRTRWucnouYapKj3b8Q+sk/41Vbc4B5c8nuYzLA==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "4.4.3"
+ "@shikijs/types": "4.5.0"
},
"engines": {
"node": ">=20"
}
},
"node_modules/@shikijs/themes": {
- "version": "4.4.3",
- "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.4.3.tgz",
- "integrity": "sha512-w8UHjeUnIR965KMWJHUPXOc2mNJUnK3vpVLYLvw5IYU2mnTTJ89E24OrJDBNiJDQ0qzb0tc4l7mrIXx5cFeIyw==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.5.0.tgz",
+ "integrity": "sha512-zGb87H3UBbpuI4yoh5UguB1XbU+2BDU3kflM7UfZ+Cy2hWo9lBtqjSVK20gmLY6ukYl040hAypGXMgud9vul8Q==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "4.4.3"
+ "@shikijs/types": "4.5.0"
},
"engines": {
"node": ">=20"
}
},
"node_modules/@shikijs/types": {
- "version": "4.4.3",
- "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.4.3.tgz",
- "integrity": "sha512-UEJxmRR++MAGR6hugn0vgVS2W/6lWAts84FFSrnlH9sP0LNol7E5+NQ792pH8liWUhyMyjhTgSUH3k7iD7tc5g==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.5.0.tgz",
+ "integrity": "sha512-drtPrtD8N0DENyD2cyt6Ajy+IWsiCLgMxODwLTpvH1UsN6a9jf90tNTPjqwHvA+0Lzu9e0txk8DjfqH1p9UJRw==",
"license": "MIT",
"dependencies": {
"@shikijs/vscode-textmate": "^10.0.2",
@@ -1002,18 +1183,19 @@
"license": "MIT"
},
"node_modules/@sveltia/cms": {
- "version": "0.227.3",
- "resolved": "https://registry.npmjs.org/@sveltia/cms/-/cms-0.227.3.tgz",
- "integrity": "sha512-DZd4TkNGF53sdOGvKHCkIUzwM9oJtnT6tI4KNKxlV3BSkgqg6+Dh2JigV0E4LjE0jbQeGadaNxoH37RIiYAxmQ==",
+ "version": "0.248.1",
+ "resolved": "https://registry.npmjs.org/@sveltia/cms/-/cms-0.248.1.tgz",
+ "integrity": "sha512-p1ggCMZnTJb76lA00Y0bDhfDS1AWMErW+TbnAGC8rz+jpYn/PfC2U14oWQO/dEGry22JVGPORoOZKSOH8iNbPQ==",
"license": "MIT",
"dependencies": {
- "@shikijs/langs": "4.4.3",
- "@shikijs/themes": "4.4.3",
+ "@shikijs/langs": "4.5.0",
+ "@shikijs/themes": "4.5.0",
"exifr": "^7.1.3",
"immutable": "^5.1.9",
"leaflet": "^1.9.4",
+ "pdfjs-dist": "^6.4.299",
"svgo": "^4.1.0",
- "terra-draw": "^1.35.0",
+ "terra-draw": "^1.38.0",
"terra-draw-leaflet-adapter": "1.0.3",
"turndown": "^7.2.4"
},
@@ -1030,13 +1212,6 @@
}
}
},
- "node_modules/@types/estree": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
- "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/@types/hast": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz",
@@ -1141,6 +1316,16 @@
"integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==",
"license": "CC0-1.0"
},
+ "node_modules/detect-libc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/dom-serializer": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
@@ -1215,6 +1400,8 @@
"dev": true,
"hasInstallScript": true,
"license": "MIT",
+ "optional": true,
+ "peer": true,
"bin": {
"esbuild": "bin/esbuild"
},
@@ -1301,6 +1488,267 @@
"integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==",
"license": "BSD-2-Clause"
},
+ "node_modules/lightningcss": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz",
+ "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==",
+ "dev": true,
+ "license": "MPL-2.0",
+ "dependencies": {
+ "detect-libc": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "lightningcss-android-arm64": "1.33.0",
+ "lightningcss-darwin-arm64": "1.33.0",
+ "lightningcss-darwin-x64": "1.33.0",
+ "lightningcss-freebsd-x64": "1.33.0",
+ "lightningcss-linux-arm-gnueabihf": "1.33.0",
+ "lightningcss-linux-arm64-gnu": "1.33.0",
+ "lightningcss-linux-arm64-musl": "1.33.0",
+ "lightningcss-linux-x64-gnu": "1.33.0",
+ "lightningcss-linux-x64-musl": "1.33.0",
+ "lightningcss-win32-arm64-msvc": "1.33.0",
+ "lightningcss-win32-x64-msvc": "1.33.0"
+ }
+ },
+ "node_modules/lightningcss-android-arm64": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz",
+ "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-darwin-arm64": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz",
+ "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-darwin-x64": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz",
+ "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-freebsd-x64": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz",
+ "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz",
+ "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-gnu": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz",
+ "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-musl": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz",
+ "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-gnu": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz",
+ "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-musl": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz",
+ "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-arm64-msvc": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz",
+ "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-x64-msvc": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz",
+ "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
"node_modules/mdn-data": {
"version": "2.27.1",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz",
@@ -1308,9 +1756,9 @@
"license": "CC0-1.0"
},
"node_modules/nanoid": {
- "version": "3.3.19",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.19.tgz",
- "integrity": "sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==",
+ "version": "3.3.20",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz",
+ "integrity": "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==",
"dev": true,
"funding": [
{
@@ -1356,6 +1804,18 @@
"@pagefind/windows-x64": "1.5.2"
}
},
+ "node_modules/pdfjs-dist": {
+ "version": "6.4.299",
+ "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-6.4.299.tgz",
+ "integrity": "sha512-AVl138zALtfaAPvADulE0PZThbYzCBS79nL4pOSL/6Sm/4AH5A21BD9VHt97OlCuzJuCpmeZtAtkinisF4Vb1g==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=22.13.0 || >=24"
+ },
+ "optionalDependencies": {
+ "@napi-rs/canvas": "^1.0.10"
+ }
+ },
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -1376,9 +1836,9 @@
}
},
"node_modules/postcss": {
- "version": "8.5.28",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz",
- "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==",
+ "version": "8.5.30",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.30.tgz",
+ "integrity": "sha512-zkd+e9S1AQHhmaBKye9zlFHWjOwVgqXl1q3ECYy8561K7qxR2cREf/STLskulBFd78k6AOFeA+ff1TtEzk9bAA==",
"dev": true,
"funding": [
{
@@ -1396,18 +1856,18 @@
],
"license": "MIT",
"dependencies": {
- "nanoid": "^3.3.18",
+ "nanoid": "^3.3.20",
"picocolors": "^1.1.1",
- "source-map-js": "^1.2.1"
+ "source-map-js": "^1.2.2"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"node_modules/prettier": {
- "version": "3.9.9",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.9.tgz",
- "integrity": "sha512-Z/CJHIkdujO/OtN7nXUii0Rf3VT5SRuhjBA82Xvu2XhBUgX3nhP67T0LHceBdQLex7OOFGTox+Q5Yg8Jk2Qivg==",
+ "version": "3.9.10",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.10.tgz",
+ "integrity": "sha512-skGHTH1Yb9QvaTC4hWnRTzEYtCpApF0UMBPz+t/0ZPzP8ihefo/btKd+QA7pUE0fEwA1SbS/NmhyEcstdXOIdA==",
"license": "MIT",
"bin": {
"prettier": "bin/prettier.cjs"
@@ -1435,50 +1895,38 @@
"prettier": "^3.0.0"
}
},
- "node_modules/rollup": {
- "version": "4.63.5",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.63.5.tgz",
- "integrity": "sha512-KRWwmNLlPw5M7HcdYfm15oBv9n9LPtjzpzCIxS/phwqvPyxHSoKX6Y2YU3pxSPfy0CLquVgsx/j/hBi6OvH1Nw==",
+ "node_modules/rolldown": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.14.tgz",
+ "integrity": "sha512-eTBTTqMR6uHKLgcUqpJP8ntzDI6V4LYA8negAMBEI7gkgVvOdrx6VsvS2Ym+83KhOPdLCHWJu0w7UQFJZhHKNw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@types/estree": "1.0.9"
+ "@oxc-project/types": "=0.154.0",
+ "@rolldown/pluginutils": "^1.0.0"
},
"bin": {
- "rollup": "dist/bin/rollup"
+ "rolldown": "bin/cli.mjs"
},
"engines": {
- "node": ">=18.0.0",
- "npm": ">=8.0.0"
+ "node": "^20.19.0 || >=22.12.0"
},
"optionalDependencies": {
- "@napi-rs/lzma-linux-x64-gnu": "1.5.1",
- "@rollup/rollup-android-arm-eabi": "4.63.5",
- "@rollup/rollup-android-arm64": "4.63.5",
- "@rollup/rollup-darwin-arm64": "4.63.5",
- "@rollup/rollup-darwin-x64": "4.63.5",
- "@rollup/rollup-freebsd-arm64": "4.63.5",
- "@rollup/rollup-freebsd-x64": "4.63.5",
- "@rollup/rollup-linux-arm-gnueabihf": "4.63.5",
- "@rollup/rollup-linux-arm-musleabihf": "4.63.5",
- "@rollup/rollup-linux-arm64-gnu": "4.63.5",
- "@rollup/rollup-linux-arm64-musl": "4.63.5",
- "@rollup/rollup-linux-loong64-gnu": "4.63.5",
- "@rollup/rollup-linux-loong64-musl": "4.63.5",
- "@rollup/rollup-linux-ppc64-gnu": "4.63.5",
- "@rollup/rollup-linux-ppc64-musl": "4.63.5",
- "@rollup/rollup-linux-riscv64-gnu": "4.63.5",
- "@rollup/rollup-linux-riscv64-musl": "4.63.5",
- "@rollup/rollup-linux-s390x-gnu": "4.63.5",
- "@rollup/rollup-linux-x64-gnu": "4.63.5",
- "@rollup/rollup-linux-x64-musl": "4.63.5",
- "@rollup/rollup-openbsd-x64": "4.63.5",
- "@rollup/rollup-openharmony-arm64": "4.63.5",
- "@rollup/rollup-win32-arm64-msvc": "4.63.5",
- "@rollup/rollup-win32-ia32-msvc": "4.63.5",
- "@rollup/rollup-win32-x64-gnu": "4.63.5",
- "@rollup/rollup-win32-x64-msvc": "4.63.5",
- "fsevents": "~2.3.2"
+ "@rolldown/binding-android-arm-eabi": "1.2.14",
+ "@rolldown/binding-android-arm64": "1.2.14",
+ "@rolldown/binding-darwin-arm64": "1.2.14",
+ "@rolldown/binding-darwin-x64": "1.2.14",
+ "@rolldown/binding-freebsd-x64": "1.2.14",
+ "@rolldown/binding-linux-arm-gnueabihf": "1.2.14",
+ "@rolldown/binding-linux-arm64-gnu": "1.2.14",
+ "@rolldown/binding-linux-arm64-musl": "1.2.14",
+ "@rolldown/binding-linux-ppc64-gnu": "1.2.14",
+ "@rolldown/binding-linux-s390x-gnu": "1.2.14",
+ "@rolldown/binding-linux-x64-gnu": "1.2.14",
+ "@rolldown/binding-linux-x64-musl": "1.2.14",
+ "@rolldown/binding-openharmony-arm64": "1.2.14",
+ "@rolldown/binding-win32-arm64-msvc": "1.2.14",
+ "@rolldown/binding-win32-x64-msvc": "1.2.14"
}
},
"node_modules/sax": {
@@ -1525,9 +1973,9 @@
}
},
"node_modules/terra-draw": {
- "version": "1.36.0",
- "resolved": "https://registry.npmjs.org/terra-draw/-/terra-draw-1.36.0.tgz",
- "integrity": "sha512-qvfMP2t8pVJectt3VL4h9VOoRaI7NEaKsvoiU+7rXzKuyDfsc+h0wsbl0d3ru7etiVSwl+ic64YCKVdVrcqJnA==",
+ "version": "1.38.0",
+ "resolved": "https://registry.npmjs.org/terra-draw/-/terra-draw-1.38.0.tgz",
+ "integrity": "sha512-h7bD5/mIN/t1qNKmPLqwZvsHnwtZpvFWo49PGA3n7CzM28lyc/xcMl85xWNOMBgF0Tq20UT06+KlBJ7g7B24rg==",
"license": "MIT"
},
"node_modules/terra-draw-leaflet-adapter": {
@@ -1581,18 +2029,17 @@
}
},
"node_modules/vite": {
- "version": "7.3.6",
- "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.6.tgz",
- "integrity": "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==",
+ "version": "8.3.4",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-8.3.4.tgz",
+ "integrity": "sha512-IftLE8phJhdNRIGNEV4JCCvfNScoZQVfcXaN8TQropWGJtOHcu+iAB9pHcuGvmEb/kddw0LBe/jS8ztdC6xdiQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "esbuild": "^0.27.0 || ^0.28.0",
- "fdir": "^6.5.0",
- "picomatch": "^4.0.3",
- "postcss": "^8.5.6",
- "rollup": "^4.43.0",
- "tinyglobby": "^0.2.15"
+ "lightningcss": "^1.33.0",
+ "picomatch": "^4.0.7",
+ "postcss": "^8.5.29",
+ "rolldown": "~1.2.12",
+ "tinyglobby": "^0.2.17"
},
"bin": {
"vite": "bin/vite.js"
@@ -1608,9 +2055,10 @@
},
"peerDependencies": {
"@types/node": "^20.19.0 || >=22.12.0",
+ "@vitejs/devtools": "^0.7.1",
+ "esbuild": "^0.27.0 || ^0.28.0",
"jiti": ">=1.21.0",
"less": "^4.0.0",
- "lightningcss": "^1.21.0",
"sass": "^1.70.0",
"sass-embedded": "^1.70.0",
"stylus": ">=0.54.8",
@@ -1623,13 +2071,16 @@
"@types/node": {
"optional": true
},
- "jiti": {
+ "@vitejs/devtools": {
"optional": true
},
- "less": {
+ "esbuild": {
"optional": true
},
- "lightningcss": {
+ "jiti": {
+ "optional": true
+ },
+ "less": {
"optional": true
},
"sass": {
diff --git a/package.json b/package.json
index 620524b34..45cd5df0a 100644
--- a/package.json
+++ b/package.json
@@ -20,14 +20,14 @@
"dependencies": {
"@fontsource/roboto": "^5.3.0",
"@fontsource/sansita": "^5.3.0",
- "@material-symbols/svg-700": "^0.47.6",
+ "@material-symbols/svg-700": "^0.48.0",
"@panzoom/panzoom": "^4.6.2",
- "@sveltia/cms": "^0.227.3",
+ "@sveltia/cms": "^0.248.1",
"pagefind": "^1.5.2",
- "prettier": "^3.9.9"
+ "prettier": "^3.9.10"
},
"devDependencies": {
"prettier-plugin-go-template": "^0.0.15",
- "vite": "7.3.6"
+ "vite": "8.3.4"
}
}
diff --git a/vite.config.js b/vite.config.js
index c1c956cc6..cd55575ee 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -1,9 +1,28 @@
import { defineConfig } from "vite";
import { resolve } from "path";
+import { readFileSync, writeFileSync } from "fs";
+
+const branch = process.env.FIPGUIDE_BRANCH || "main";
+
+function cmsConfigBranchPlugin() {
+ return {
+ name: "cms-config-branch",
+ closeBundle() {
+ const configPath = resolve(__dirname, "static/admin/config.yml");
+ const content = readFileSync(configPath, "utf-8");
+ writeFileSync(
+ configPath,
+ content.replace(/^(\s*branch:\s*).+$/m, `$1${branch}`),
+ );
+ },
+ };
+}
export default defineConfig({
root: "assets/admin",
base: "./",
+ publicDir: resolve(__dirname, "assets/admin/static"),
+ plugins: [cmsConfigBranchPlugin()],
build: {
outDir: resolve(__dirname, "static/admin"),
emptyOutDir: true,