From a6b2c0cb457ee45407c155c850f94cae61e81789 Mon Sep 17 00:00:00 2001
From: lyq <1661898579@qq.com>
Date: Mon, 13 May 2024 00:45:03 +0800
Subject: [PATCH] Add calendar page
---
astro.config.mjs | 324 ++++++++++++---------
package-lock.json | 456 +++++++++++++++++++++++++++++-
package.json | 10 +
src/components/Navigation.astro | 5 +-
src/components/react/Calendar.tsx | 41 +++
src/env.d.ts | 1 +
src/pages/calendar.astro | 8 +
src/styles/calendar.css | 20 ++
tsconfig.json | 3 +-
9 files changed, 711 insertions(+), 157 deletions(-)
create mode 100644 src/components/react/Calendar.tsx
create mode 100644 src/pages/calendar.astro
create mode 100644 src/styles/calendar.css
diff --git a/astro.config.mjs b/astro.config.mjs
index 501705f..56fa0ab 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -1,160 +1,204 @@
-import { defineConfig } from 'astro/config';
-import { visit } from 'unist-util-visit';
-import md5 from 'md5';
-import { SITE_URL } from './src/consts';
-import vue from "@astrojs/vue";
-import tailwind from "@astrojs/tailwind";
+import { defineConfig } from "astro/config"
+import { visit } from "unist-util-visit"
+import md5 from "md5"
+import { SITE_URL } from "./src/consts"
+import vue from "@astrojs/vue"
+import tailwind from "@astrojs/tailwind"
+import react from "@astrojs/react"
function pipeline() {
- return [() => tree => {
- visit(tree, 'element', (node, index) => {
- if (node.tagName === 'p' && node.children[0].tagName === 'img') {
- node.tagName = 'figure';
- let img = node.children[0];
- let sign = md5(img.properties.src);
- let data = img.properties.alt.split("|");
- let alt = data[0];
- let size = "big";
- if (data.length > 1) {
- size = data[1];
- }
- let classes = ['image component image-fullbleed body-copy-wide nr-scroll-animation nr-scroll-animation--on'];
- classes.push(`image-${size}`);
- node.properties.className = classes;
- node.children = [{
- type: 'element',
- tagName: 'div',
- properties: {
- className: ['component-content']
- },
- children: [{
- type: 'element',
- tagName: 'div',
- properties: {
- className: ['image-sharesheet']
- },
- children: [{
- type: 'element',
- tagName: 'div',
+ return [
+ () => (tree) => {
+ visit(tree, "element", (node, index) => {
+ if (node.tagName === "p" && node.children[0].tagName === "img") {
+ node.tagName = "figure"
+ let img = node.children[0]
+ let sign = md5(img.properties.src)
+ let data = img.properties.alt.split("|")
+ let alt = data[0]
+ let size = "big"
+ if (data.length > 1) {
+ size = data[1]
+ }
+ let classes = [
+ "image component image-fullbleed body-copy-wide nr-scroll-animation nr-scroll-animation--on",
+ ]
+ classes.push(`image-${size}`)
+ node.properties.className = classes
+ node.children = [
+ {
+ type: "element",
+ tagName: "div",
properties: {
- className: [`image image-load image-asset image-${sign}`],
- id: `lht${sign}`
+ className: ["component-content"],
},
- children: [{
- type: 'element',
- tagName: 'picture',
- properties: {
- className: ['picture']
- },
- children: [{
- type: 'element',
- tagName: 'img',
+ children: [
+ {
+ type: "element",
+ tagName: "div",
properties: {
- 'data-src': img.properties.src,
- alt: alt,
- className: ['picture-image']
- }
- }]
- }]
- }]
- }, {
- type: 'element',
- tagName: 'div',
- properties: {
- className: ['image-description']
+ className: ["image-sharesheet"],
+ },
+ children: [
+ {
+ type: "element",
+ tagName: "div",
+ properties: {
+ className: [
+ `image image-load image-asset image-${sign}`,
+ ],
+ id: `lht${sign}`,
+ },
+ children: [
+ {
+ type: "element",
+ tagName: "picture",
+ properties: {
+ className: ["picture"],
+ },
+ children: [
+ {
+ type: "element",
+ tagName: "img",
+ properties: {
+ "data-src": img.properties.src,
+ alt: alt,
+ className: ["picture-image"],
+ },
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ },
+ {
+ type: "element",
+ tagName: "div",
+ properties: {
+ className: ["image-description"],
+ },
+ children: [
+ {
+ type: "element",
+ tagName: "div",
+ properties: {
+ className: ["image-caption"],
+ },
+ children: [
+ {
+ type: "text",
+ value: alt,
+ },
+ ],
+ },
+ ],
+ },
+ ],
},
- children: [{
- type: 'element',
- tagName: 'div',
- properties: {
- className: ['image-caption']
- },
- children: [{
- type: 'text',
- value: alt
- }]
- }]
- }]
- }];
- }
- });
- }, () => tree => {
- tree.children.forEach(node => {
- if (node.type === "raw") {
- node.value = `
`;
- // node.value = node.value.replace(/astro-code/g, 'astro-code')
- }
- });
- }, () => tree => {
- for (let i = 0; i < tree.children.length; i++) {
- let node = tree.children[i];
- if (node.type === "element" && ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6','table'].includes(node.tagName)) {
- let next = tree.children[i + 1];
- let nodes = [node];
- while (next && !['figure'].includes(next.tagName) && next.type != "raw") {
- nodes.push(next);
- next = tree.children[tree.children.indexOf(next) + 1];
+ ]
}
- if (nodes.length > 1) {
- // rename label
- nodes.forEach(node => {
- if (node.tagName === "p") {
- node.properties.className = ['pagebody-copy'];
- node.tagName = "div";
- }
- if (['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(node.tagName)) {
- node.properties.className = ['pagebody-header'];
- }
- });
- tree.children.splice(i, nodes.length, {
- type: 'element',
- tagName: 'div',
- properties: {
- className: ['pagebody text component']
- },
- children: [{
- type: 'element',
- tagName: 'div',
+ })
+ },
+ () => (tree) => {
+ tree.children.forEach((node) => {
+ if (node.type === "raw") {
+ node.value = ``
+ // node.value = node.value.replace(/astro-code/g, 'astro-code')
+ }
+ })
+ },
+ () => (tree) => {
+ for (let i = 0; i < tree.children.length; i++) {
+ let node = tree.children[i]
+ if (
+ node.type === "element" &&
+ ["p", "h1", "h2", "h3", "h4", "h5", "h6", "table"].includes(
+ node.tagName
+ )
+ ) {
+ let next = tree.children[i + 1]
+ let nodes = [node]
+ while (
+ next &&
+ !["figure"].includes(next.tagName) &&
+ next.type != "raw"
+ ) {
+ nodes.push(next)
+ next = tree.children[tree.children.indexOf(next) + 1]
+ }
+ if (nodes.length > 1) {
+ // rename label
+ nodes.forEach((node) => {
+ if (node.tagName === "p") {
+ node.properties.className = ["pagebody-copy"]
+ node.tagName = "div"
+ }
+ if (["h1", "h2", "h3", "h4", "h5", "h6"].includes(node.tagName)) {
+ node.properties.className = ["pagebody-header"]
+ }
+ })
+ tree.children.splice(i, nodes.length, {
+ type: "element",
+ tagName: "div",
properties: {
- className: ['component-content']
+ className: ["pagebody text component"],
},
- children: nodes
- }]
- });
+ children: [
+ {
+ type: "element",
+ tagName: "div",
+ properties: {
+ className: ["component-content"],
+ },
+ children: nodes,
+ },
+ ],
+ })
+ }
}
}
- }
- }, () => tree => {
- let len = tree.children.length;
- for (let index = 0; index < len; index++) {
- let node = tree.children[index];
- if (node.type === "element" && node.tagName === "figure") {
- tree.children.splice(index, 0, {
- type: 'element',
- tagName: 'div',
- properties: {
- className: ['tertiarynav component']
- },
- children: [{
- type: 'element',
- tagName: 'div',
+ },
+ () => (tree) => {
+ let len = tree.children.length
+ for (let index = 0; index < len; index++) {
+ let node = tree.children[index]
+ if (node.type === "element" && node.tagName === "figure") {
+ tree.children.splice(index, 0, {
+ type: "element",
+ tagName: "div",
properties: {
- className: ['component-content']
- }
- }]
- });
- index++;
+ className: ["tertiarynav component"],
+ },
+ children: [
+ {
+ type: "element",
+ tagName: "div",
+ properties: {
+ className: ["component-content"],
+ },
+ },
+ ],
+ })
+ index++
+ }
}
- }
- }];
+ },
+ ]
}
-
// https://astro.build/config
export default defineConfig({
site: SITE_URL,
markdown: {
rehypePlugins: pipeline(),
- syntaxHighlight: 'prism'
+ syntaxHighlight: "prism",
},
- integrations: [vue(), tailwind()]
-});
\ No newline at end of file
+ integrations: [
+ vue(),
+ tailwind(),
+ react({
+ include: ["**/react/*"],
+ experimentalReactChildren: true,
+ }),
+ ],
+})
diff --git a/package-lock.json b/package-lock.json
index 76cedce..43b84ee 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,11 +8,21 @@
"name": "blog",
"version": "0.0.1",
"dependencies": {
+ "@astrojs/react": "^3.3.1",
"@astrojs/rss": "^4.0.5",
"@astrojs/tailwind": "^5.1.0",
"@astrojs/vue": "^4.0.9",
+ "@fullcalendar/core": "^6.1.11",
+ "@fullcalendar/daygrid": "^6.1.11",
+ "@fullcalendar/icalendar": "^6.1.11",
+ "@fullcalendar/react": "^6.1.11",
+ "@types/react": "^18.2.79",
+ "@types/react-dom": "^18.2.25",
"astro": "^4.5.12",
+ "ical.js": "^1.5.0",
"md5": "^2.3.0",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
"rehype": "^13.0.1",
"tailwindcss": "^3.4.3",
"unist-util-visit": "^5.0.0",
@@ -88,6 +98,24 @@
"node": ">=18.14.1"
}
},
+ "node_modules/@astrojs/react": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/@astrojs/react/-/react-3.3.1.tgz",
+ "integrity": "sha512-dwN6B+C0hQ1jpeQ5EckICpqv76t6RxEslldCP0UQ/ospolNk8GjqL11X/xQSbftiQvGWRMT0Tj5f0Xk17k5qJQ==",
+ "dependencies": {
+ "@vitejs/plugin-react": "^4.2.1",
+ "ultrahtml": "^1.5.3"
+ },
+ "engines": {
+ "node": "^18.17.1 || ^20.3.0 || >=21.0.0"
+ },
+ "peerDependencies": {
+ "@types/react": "^17.0.50 || ^18.0.21",
+ "@types/react-dom": "^17.0.17 || ^18.0.6",
+ "react": "^17.0.2 || ^18.0.0",
+ "react-dom": "^17.0.2 || ^18.0.0"
+ }
+ },
"node_modules/@astrojs/rss": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/@astrojs/rss/-/rss-4.0.5.tgz",
@@ -518,6 +546,34 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/plugin-transform-react-jsx-self": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.1.tgz",
+ "integrity": "sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-source": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.1.tgz",
+ "integrity": "sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
"node_modules/@babel/plugin-transform-typescript": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.1.tgz",
@@ -926,6 +982,41 @@
"node": ">=12"
}
},
+ "node_modules/@fullcalendar/core": {
+ "version": "6.1.11",
+ "resolved": "https://registry.npmmirror.com/@fullcalendar/core/-/core-6.1.11.tgz",
+ "integrity": "sha512-TjG7c8sUz+Vkui2FyCNJ+xqyu0nq653Ibe99A66LoW95oBo6tVhhKIaG1Wh0GVKymYiqAQN/OEdYTuj4ay27kA==",
+ "dependencies": {
+ "preact": "~10.12.1"
+ }
+ },
+ "node_modules/@fullcalendar/daygrid": {
+ "version": "6.1.11",
+ "resolved": "https://registry.npmmirror.com/@fullcalendar/daygrid/-/daygrid-6.1.11.tgz",
+ "integrity": "sha512-hF5jJB7cgUIxWD5MVjj8IU407HISyLu7BWXcEIuTytkfr8oolOXeCazqnnjmRbnFOncoJQVstTtq6SIhaT32Xg==",
+ "peerDependencies": {
+ "@fullcalendar/core": "~6.1.11"
+ }
+ },
+ "node_modules/@fullcalendar/icalendar": {
+ "version": "6.1.11",
+ "resolved": "https://registry.npmmirror.com/@fullcalendar/icalendar/-/icalendar-6.1.11.tgz",
+ "integrity": "sha512-a1kFIUs/G1ic9kkblL08n8Vwqw+jkBExhgFjbARVQrvyTwx0/SDmRtt0crqlkUYUOnu5nofj3xXPNupdxgPSwg==",
+ "peerDependencies": {
+ "@fullcalendar/core": "~6.1.11",
+ "ical.js": "^1.4.0"
+ }
+ },
+ "node_modules/@fullcalendar/react": {
+ "version": "6.1.11",
+ "resolved": "https://registry.npmmirror.com/@fullcalendar/react/-/react-6.1.11.tgz",
+ "integrity": "sha512-Og0Tv0OiglTFp+b++yRyEhAeWnAmKkMLQ3iS0eJE1KDEov6QqGkoO+dUG4x8zp2w55IJqzik/a9iHi0s3oQDbA==",
+ "peerDependencies": {
+ "@fullcalendar/core": "~6.1.11",
+ "react": "^16.7.0 || ^17 || ^18",
+ "react-dom": "^16.7.0 || ^17 || ^18"
+ }
+ },
"node_modules/@isaacs/cliui": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
@@ -1316,6 +1407,28 @@
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
"integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
},
+ "node_modules/@types/prop-types": {
+ "version": "15.7.12",
+ "resolved": "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.12.tgz",
+ "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q=="
+ },
+ "node_modules/@types/react": {
+ "version": "18.2.79",
+ "resolved": "https://registry.npmmirror.com/@types/react/-/react-18.2.79.tgz",
+ "integrity": "sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/react-dom": {
+ "version": "18.2.25",
+ "resolved": "https://registry.npmmirror.com/@types/react-dom/-/react-dom-18.2.25.tgz",
+ "integrity": "sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==",
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
"node_modules/@types/unist": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
@@ -1326,6 +1439,24 @@
"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
},
+ "node_modules/@vitejs/plugin-react": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz",
+ "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==",
+ "dependencies": {
+ "@babel/core": "^7.23.5",
+ "@babel/plugin-transform-react-jsx-self": "^7.23.3",
+ "@babel/plugin-transform-react-jsx-source": "^7.23.3",
+ "@types/babel__core": "^7.20.5",
+ "react-refresh": "^0.14.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.2.0 || ^5.0.0"
+ }
+ },
"node_modules/@vitejs/plugin-vue": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz",
@@ -1625,6 +1756,8 @@
},
"node_modules/argparse": {
"version": "1.0.10",
+ "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"license": "MIT",
"dependencies": {
"sprintf-js": "~1.0.2"
@@ -2140,6 +2273,8 @@
},
"node_modules/charenc": {
"version": "0.0.2",
+ "resolved": "https://registry.npmmirror.com/charenc/-/charenc-0.0.2.tgz",
+ "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
"license": "BSD-3-Clause",
"engines": {
"node": "*"
@@ -2305,6 +2440,8 @@
},
"node_modules/common-ancestor-path": {
"version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz",
+ "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==",
"license": "ISC"
},
"node_modules/convert-source-map": {
@@ -2335,6 +2472,8 @@
},
"node_modules/crypt": {
"version": "0.0.2",
+ "resolved": "https://registry.npmmirror.com/crypt/-/crypt-0.0.2.tgz",
+ "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
"license": "BSD-3-Clause",
"engines": {
"node": "*"
@@ -2574,6 +2713,8 @@
},
"node_modules/esprima": {
"version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"license": "BSD-2-Clause",
"bin": {
"esparse": "bin/esparse.js",
@@ -2585,6 +2726,8 @@
},
"node_modules/estree-walker": {
"version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
"license": "MIT",
"dependencies": {
"@types/estree": "^1.0.0"
@@ -2633,6 +2776,8 @@
},
"node_modules/extend-shallow": {
"version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
"license": "MIT",
"dependencies": {
"is-extendable": "^0.1.0"
@@ -2826,6 +2971,8 @@
},
"node_modules/github-slugger": {
"version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/github-slugger/-/github-slugger-2.0.0.tgz",
+ "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==",
"license": "ISC"
},
"node_modules/glob": {
@@ -2875,6 +3022,8 @@
},
"node_modules/gray-matter": {
"version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/gray-matter/-/gray-matter-4.0.3.tgz",
+ "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==",
"license": "MIT",
"dependencies": {
"js-yaml": "^3.13.1",
@@ -3075,6 +3224,8 @@
},
"node_modules/html-escaper": {
"version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/html-escaper/-/html-escaper-3.0.3.tgz",
+ "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==",
"license": "MIT"
},
"node_modules/html-tags": {
@@ -3110,6 +3261,11 @@
"node": ">=16.17.0"
}
},
+ "node_modules/ical.js": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/ical.js/-/ical.js-1.5.0.tgz",
+ "integrity": "sha512-7ZxMkogUkkaCx810yp0ZGKvq1ZpRgJeornPttpoxe6nYZ3NLesZe1wWMXDdwTkj/b5NtXT+Y16Aakph/ao98ZQ=="
+ },
"node_modules/ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
@@ -3215,6 +3371,8 @@
},
"node_modules/is-extendable": {
"version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
@@ -3367,6 +3525,8 @@
},
"node_modules/js-yaml": {
"version": "3.14.1",
+ "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
"license": "MIT",
"dependencies": {
"argparse": "^1.0.7",
@@ -3400,6 +3560,8 @@
},
"node_modules/kind-of": {
"version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
@@ -3407,6 +3569,8 @@
},
"node_modules/kleur": {
"version": "4.1.5",
+ "resolved": "https://registry.npmmirror.com/kleur/-/kleur-4.1.5.tgz",
+ "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
"license": "MIT",
"engines": {
"node": ">=6"
@@ -3491,6 +3655,17 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
"node_modules/lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
@@ -3521,6 +3696,8 @@
},
"node_modules/md5": {
"version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/md5/-/md5-2.3.0.tgz",
+ "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
"license": "BSD-3-Clause",
"dependencies": {
"charenc": "0.0.2",
@@ -3530,6 +3707,8 @@
},
"node_modules/md5/node_modules/is-buffer": {
"version": "1.1.6",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
"license": "MIT"
},
"node_modules/mdast-util-definitions": {
@@ -5000,6 +5179,11 @@
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
},
+ "node_modules/preact": {
+ "version": "10.12.1",
+ "resolved": "https://registry.npmmirror.com/preact/-/preact-10.12.1.tgz",
+ "integrity": "sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg=="
+ },
"node_modules/prebuild-install": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz",
@@ -5125,6 +5309,8 @@
},
"node_modules/prompts": {
"version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
"license": "MIT",
"dependencies": {
"kleur": "^3.0.3",
@@ -5136,6 +5322,8 @@
},
"node_modules/prompts/node_modules/kleur": {
"version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
"license": "MIT",
"engines": {
"node": ">=6"
@@ -5200,6 +5388,37 @@
"rc": "cli.js"
}
},
+ "node_modules/react": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmmirror.com/react/-/react-18.2.0.tgz",
+ "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-18.2.0.tgz",
+ "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.0"
+ },
+ "peerDependencies": {
+ "react": "^18.2.0"
+ }
+ },
+ "node_modules/react-refresh": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.14.0.tgz",
+ "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/read-cache": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@@ -5863,8 +6082,18 @@
}
]
},
+ "node_modules/scheduler": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.23.0.tgz",
+ "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
"node_modules/section-matter": {
"version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/section-matter/-/section-matter-1.0.0.tgz",
+ "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==",
"license": "MIT",
"dependencies": {
"extend-shallow": "^2.0.1",
@@ -6032,6 +6261,8 @@
},
"node_modules/sisteransi": {
"version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
"license": "MIT"
},
"node_modules/source-map-js": {
@@ -6053,6 +6284,8 @@
},
"node_modules/sprintf-js": {
"version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"license": "BSD-3-Clause"
},
"node_modules/stdin-discarder": {
@@ -6201,6 +6434,8 @@
},
"node_modules/strip-bom-string": {
"version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
+ "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
@@ -6462,6 +6697,11 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/ultrahtml": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmmirror.com/ultrahtml/-/ultrahtml-1.5.3.tgz",
+ "integrity": "sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg=="
+ },
"node_modules/unherit": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/unherit/-/unherit-3.0.1.tgz",
@@ -7390,6 +7630,8 @@
},
"node_modules/yargs-parser": {
"version": "21.1.1",
+ "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"license": "ISC",
"engines": {
"node": ">=12"
@@ -7490,6 +7732,15 @@
"prismjs": "^1.29.0"
}
},
+ "@astrojs/react": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/@astrojs/react/-/react-3.3.1.tgz",
+ "integrity": "sha512-dwN6B+C0hQ1jpeQ5EckICpqv76t6RxEslldCP0UQ/ospolNk8GjqL11X/xQSbftiQvGWRMT0Tj5f0Xk17k5qJQ==",
+ "requires": {
+ "@vitejs/plugin-react": "^4.2.1",
+ "ultrahtml": "^1.5.3"
+ }
+ },
"@astrojs/rss": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/@astrojs/rss/-/rss-4.0.5.tgz",
@@ -7790,6 +8041,22 @@
"@babel/types": "^7.23.4"
}
},
+ "@babel/plugin-transform-react-jsx-self": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.1.tgz",
+ "integrity": "sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-react-jsx-source": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.1.tgz",
+ "integrity": "sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
"@babel/plugin-transform-typescript": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.1.tgz",
@@ -7976,6 +8243,32 @@
"integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==",
"optional": true
},
+ "@fullcalendar/core": {
+ "version": "6.1.11",
+ "resolved": "https://registry.npmmirror.com/@fullcalendar/core/-/core-6.1.11.tgz",
+ "integrity": "sha512-TjG7c8sUz+Vkui2FyCNJ+xqyu0nq653Ibe99A66LoW95oBo6tVhhKIaG1Wh0GVKymYiqAQN/OEdYTuj4ay27kA==",
+ "requires": {
+ "preact": "~10.12.1"
+ }
+ },
+ "@fullcalendar/daygrid": {
+ "version": "6.1.11",
+ "resolved": "https://registry.npmmirror.com/@fullcalendar/daygrid/-/daygrid-6.1.11.tgz",
+ "integrity": "sha512-hF5jJB7cgUIxWD5MVjj8IU407HISyLu7BWXcEIuTytkfr8oolOXeCazqnnjmRbnFOncoJQVstTtq6SIhaT32Xg==",
+ "requires": {}
+ },
+ "@fullcalendar/icalendar": {
+ "version": "6.1.11",
+ "resolved": "https://registry.npmmirror.com/@fullcalendar/icalendar/-/icalendar-6.1.11.tgz",
+ "integrity": "sha512-a1kFIUs/G1ic9kkblL08n8Vwqw+jkBExhgFjbARVQrvyTwx0/SDmRtt0crqlkUYUOnu5nofj3xXPNupdxgPSwg==",
+ "requires": {}
+ },
+ "@fullcalendar/react": {
+ "version": "6.1.11",
+ "resolved": "https://registry.npmmirror.com/@fullcalendar/react/-/react-6.1.11.tgz",
+ "integrity": "sha512-Og0Tv0OiglTFp+b++yRyEhAeWnAmKkMLQ3iS0eJE1KDEov6QqGkoO+dUG4x8zp2w55IJqzik/a9iHi0s3oQDbA==",
+ "requires": {}
+ },
"@isaacs/cliui": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
@@ -8250,6 +8543,28 @@
}
}
},
+ "@types/prop-types": {
+ "version": "15.7.12",
+ "resolved": "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.12.tgz",
+ "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q=="
+ },
+ "@types/react": {
+ "version": "18.2.79",
+ "resolved": "https://registry.npmmirror.com/@types/react/-/react-18.2.79.tgz",
+ "integrity": "sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==",
+ "requires": {
+ "@types/prop-types": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "@types/react-dom": {
+ "version": "18.2.25",
+ "resolved": "https://registry.npmmirror.com/@types/react-dom/-/react-dom-18.2.25.tgz",
+ "integrity": "sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==",
+ "requires": {
+ "@types/react": "*"
+ }
+ },
"@types/unist": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
@@ -8260,6 +8575,18 @@
"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
},
+ "@vitejs/plugin-react": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz",
+ "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==",
+ "requires": {
+ "@babel/core": "^7.23.5",
+ "@babel/plugin-transform-react-jsx-self": "^7.23.3",
+ "@babel/plugin-transform-react-jsx-source": "^7.23.3",
+ "@types/babel__core": "^7.20.5",
+ "react-refresh": "^0.14.0"
+ }
+ },
"@vitejs/plugin-vue": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz",
@@ -8509,6 +8836,8 @@
},
"argparse": {
"version": "1.0.10",
+ "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"requires": {
"sprintf-js": "~1.0.2"
}
@@ -8851,7 +9180,9 @@
"integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="
},
"charenc": {
- "version": "0.0.2"
+ "version": "0.0.2",
+ "resolved": "https://registry.npmmirror.com/charenc/-/charenc-0.0.2.tgz",
+ "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA=="
},
"chokidar": {
"version": "3.6.0",
@@ -8963,7 +9294,9 @@
"integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="
},
"common-ancestor-path": {
- "version": "1.0.1"
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz",
+ "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w=="
},
"convert-source-map": {
"version": "2.0.0",
@@ -8986,7 +9319,9 @@
}
},
"crypt": {
- "version": "0.0.2"
+ "version": "0.0.2",
+ "resolved": "https://registry.npmmirror.com/crypt/-/crypt-0.0.2.tgz",
+ "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow=="
},
"cssesc": {
"version": "3.0.0",
@@ -9156,10 +9491,14 @@
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
},
"esprima": {
- "version": "4.0.1"
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
},
"estree-walker": {
"version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
"requires": {
"@types/estree": "^1.0.0"
}
@@ -9198,6 +9537,8 @@
},
"extend-shallow": {
"version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
"requires": {
"is-extendable": "^0.1.0"
}
@@ -9320,7 +9661,9 @@
"optional": true
},
"github-slugger": {
- "version": "2.0.0"
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/github-slugger/-/github-slugger-2.0.0.tgz",
+ "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="
},
"glob": {
"version": "10.3.12",
@@ -9354,6 +9697,8 @@
},
"gray-matter": {
"version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/gray-matter/-/gray-matter-4.0.3.tgz",
+ "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==",
"requires": {
"js-yaml": "^3.13.1",
"kind-of": "^6.0.2",
@@ -9503,7 +9848,9 @@
}
},
"html-escaper": {
- "version": "3.0.3"
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/html-escaper/-/html-escaper-3.0.3.tgz",
+ "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ=="
},
"html-tags": {
"version": "3.3.1",
@@ -9525,6 +9872,11 @@
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
"integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ=="
},
+ "ical.js": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/ical.js/-/ical.js-1.5.0.tgz",
+ "integrity": "sha512-7ZxMkogUkkaCx810yp0ZGKvq1ZpRgJeornPttpoxe6nYZ3NLesZe1wWMXDdwTkj/b5NtXT+Y16Aakph/ao98ZQ=="
+ },
"ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
@@ -9579,7 +9931,9 @@
"integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="
},
"is-extendable": {
- "version": "0.1.1"
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw=="
},
"is-extglob": {
"version": "2.1.1",
@@ -9666,6 +10020,8 @@
},
"js-yaml": {
"version": "3.14.1",
+ "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
"requires": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
@@ -9682,10 +10038,14 @@
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="
},
"kind-of": {
- "version": "6.0.3"
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
},
"kleur": {
- "version": "4.1.5"
+ "version": "4.1.5",
+ "resolved": "https://registry.npmmirror.com/kleur/-/kleur-4.1.5.tgz",
+ "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="
},
"lilconfig": {
"version": "3.1.1",
@@ -9737,6 +10097,14 @@
"resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
"integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="
},
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
"lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
@@ -9760,6 +10128,8 @@
},
"md5": {
"version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/md5/-/md5-2.3.0.tgz",
+ "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
"requires": {
"charenc": "0.0.2",
"crypt": "0.0.2",
@@ -9767,7 +10137,9 @@
},
"dependencies": {
"is-buffer": {
- "version": "1.1.6"
+ "version": "1.1.6",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
}
}
},
@@ -10681,6 +11053,11 @@
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
},
+ "preact": {
+ "version": "10.12.1",
+ "resolved": "https://registry.npmmirror.com/preact/-/preact-10.12.1.tgz",
+ "integrity": "sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg=="
+ },
"prebuild-install": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz",
@@ -10778,13 +11155,17 @@
},
"prompts": {
"version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
"requires": {
"kleur": "^3.0.3",
"sisteransi": "^1.0.5"
},
"dependencies": {
"kleur": {
- "version": "3.0.3"
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="
}
}
},
@@ -10826,6 +11207,28 @@
"strip-json-comments": "~2.0.1"
}
},
+ "react": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmmirror.com/react/-/react-18.2.0.tgz",
+ "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+ "requires": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "react-dom": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-18.2.0.tgz",
+ "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.0"
+ }
+ },
+ "react-refresh": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.14.0.tgz",
+ "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ=="
+ },
"read-cache": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@@ -11303,8 +11706,18 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
},
+ "scheduler": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.23.0.tgz",
+ "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
+ "requires": {
+ "loose-envify": "^1.1.0"
+ }
+ },
"section-matter": {
"version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/section-matter/-/section-matter-1.0.0.tgz",
+ "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==",
"requires": {
"extend-shallow": "^2.0.1",
"kind-of": "^6.0.0"
@@ -11410,7 +11823,9 @@
}
},
"sisteransi": {
- "version": "1.0.5"
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="
},
"source-map-js": {
"version": "1.2.0",
@@ -11423,7 +11838,9 @@
"integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="
},
"sprintf-js": {
- "version": "1.0.3"
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
},
"stdin-discarder": {
"version": "0.1.0",
@@ -11530,7 +11947,9 @@
"integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="
},
"strip-bom-string": {
- "version": "1.0.0"
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
+ "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g=="
},
"strip-final-newline": {
"version": "3.0.0",
@@ -11711,6 +12130,11 @@
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
"integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA=="
},
+ "ultrahtml": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmmirror.com/ultrahtml/-/ultrahtml-1.5.3.tgz",
+ "integrity": "sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg=="
+ },
"unherit": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/unherit/-/unherit-3.0.1.tgz",
@@ -12225,7 +12649,9 @@
"integrity": "sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg=="
},
"yargs-parser": {
- "version": "21.1.1"
+ "version": "21.1.1",
+ "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="
},
"yocto-queue": {
"version": "1.0.0",
diff --git a/package.json b/package.json
index 210fd69..38f9ea6 100644
--- a/package.json
+++ b/package.json
@@ -10,11 +10,21 @@
"astro": "astro"
},
"dependencies": {
+ "@astrojs/react": "^3.3.1",
"@astrojs/rss": "^4.0.5",
"@astrojs/tailwind": "^5.1.0",
"@astrojs/vue": "^4.0.9",
+ "@fullcalendar/core": "^6.1.11",
+ "@fullcalendar/daygrid": "^6.1.11",
+ "@fullcalendar/icalendar": "^6.1.11",
+ "@fullcalendar/react": "^6.1.11",
+ "@types/react": "^18.2.79",
+ "@types/react-dom": "^18.2.25",
"astro": "^4.5.12",
+ "ical.js": "^1.5.0",
"md5": "^2.3.0",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
"rehype": "^13.0.1",
"tailwindcss": "^3.4.3",
"unist-util-visit": "^5.0.0",
diff --git a/src/components/Navigation.astro b/src/components/Navigation.astro
index 12db6a3..e77d4c2 100644
--- a/src/components/Navigation.astro
+++ b/src/components/Navigation.astro
@@ -1,5 +1,5 @@
---
-import { SITE_TITLE } from "../consts";
+import { SITE_TITLE } from "../consts"
---