From 250c05e85e620cae63b73cc522a3aa8dc0db8321 Mon Sep 17 00:00:00 2001 From: ddshi <8811906+ddshi@user.noreply.gitee.com> Date: Mon, 2 Feb 2026 15:26:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=A6=85=E6=84=8F=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E9=A3=8E=E6=A0=BC=E9=87=8D=E6=9E=84=E4=B8=8E=E4=BD=93=E9=AA=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - LandingPage: 全新水墨晕染算法背景,循环墨迹动画 - 登录/注册页: 禅意黑白极简风格 - HomePage: 三栏布局优化,标题颜色语义化 - 纪念日组件: 分类逻辑优化,颜色语义统一 - 提醒组件: 分组标题颜色优化,逾期提示更醒目 - 修复农历日期边界问题(29/30天月份) - 添加 lunar-javascript 类型声明 - 清理未使用的导入和代码 --- package-lock.json | 1507 ++++++++++++++++- package.json | 3 + src/assets/icon.png | Bin 0 -> 99319 bytes src/components/ai/AIChatBox.tsx | 4 - src/components/ai/FloatingAIChat.tsx | 262 +++ .../anniversary/AnniversaryCard.tsx | 57 +- .../anniversary/AnniversaryList.tsx | 70 +- src/components/note/NoteEditor.tsx | 182 +- .../reminder/ArchiveReminderModal.tsx | 140 ++ src/components/reminder/ReminderCard.tsx | 128 +- src/components/reminder/ReminderList.tsx | 332 ++-- src/constants/holidays.ts | 10 +- src/pages/HomePage.tsx | 438 +++-- src/pages/LandingPage.tsx | 427 ++++- src/pages/LoginPage.tsx | 151 +- src/pages/RegisterPage.tsx | 216 ++- src/routes.tsx | 19 +- src/services/api.ts | 3 +- src/types/index.ts | 8 - src/types/lunar-javascript.d.ts | 16 + src/utils/countdown.ts | 54 +- tmpclaude-1682-cwd | 1 + tmpclaude-51ef-cwd | 1 + tmpclaude-53b7-cwd | 1 + tmpclaude-5843-cwd | 1 + tmpclaude-7db7-cwd | 1 + tmpclaude-8b3b-cwd | 1 + tmpclaude-90be-cwd | 1 + tmpclaude-90fc-cwd | 1 + tmpclaude-c0a2-cwd | 1 + tmpclaude-ca71-cwd | 1 + tmpclaude-d261-cwd | 1 + tmpclaude-d732-cwd | 1 + tmpclaude-ea09-cwd | 1 + tmpclaude-f30f-cwd | 1 + tmpclaude-f858-cwd | 1 + tmpclaude-fec8-cwd | 1 + 37 files changed, 3426 insertions(+), 617 deletions(-) create mode 100644 src/assets/icon.png create mode 100644 src/components/ai/FloatingAIChat.tsx create mode 100644 src/components/reminder/ArchiveReminderModal.tsx create mode 100644 src/types/lunar-javascript.d.ts create mode 100644 tmpclaude-1682-cwd create mode 100644 tmpclaude-51ef-cwd create mode 100644 tmpclaude-53b7-cwd create mode 100644 tmpclaude-5843-cwd create mode 100644 tmpclaude-7db7-cwd create mode 100644 tmpclaude-8b3b-cwd create mode 100644 tmpclaude-90be-cwd create mode 100644 tmpclaude-90fc-cwd create mode 100644 tmpclaude-c0a2-cwd create mode 100644 tmpclaude-ca71-cwd create mode 100644 tmpclaude-d261-cwd create mode 100644 tmpclaude-d732-cwd create mode 100644 tmpclaude-ea09-cwd create mode 100644 tmpclaude-f30f-cwd create mode 100644 tmpclaude-f858-cwd create mode 100644 tmpclaude-fec8-cwd diff --git a/package-lock.json b/package-lock.json index a3b21b0..4d41fea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "client", - "version": "0.0.0", + "version": "0.3.0-alpha", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "client", - "version": "0.0.0", + "version": "0.3.0-alpha", "dependencies": { "@mantine/core": "^8.3.13", "@mantine/dates": "^8.3.13", @@ -21,7 +21,10 @@ "postcss-simple-vars": "^7.0.1", "react": "^19.2.0", "react-dom": "^19.2.0", + "react-markdown": "^10.1.0", "react-router-dom": "^7.13.0", + "rehype-sanitize": "^6.0.0", + "remark-gfm": "^4.0.1", "zustand": "^5.0.10" }, "devDependencies": { @@ -1661,13 +1664,39 @@ "@babel/types": "^7.28.2" } }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmmirror.com/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.8.tgz", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, "license": "MIT" }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -1675,6 +1704,21 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, "node_modules/@types/node": { "version": "24.10.9", "resolved": "https://registry.npmmirror.com/@types/node/-/node-24.10.9.tgz", @@ -1694,7 +1738,6 @@ "version": "19.2.10", "resolved": "https://registry.npmmirror.com/@types/react/-/react-19.2.10.tgz", "integrity": "sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw==", - "devOptional": true, "license": "MIT", "dependencies": { "csstype": "^3.2.2" @@ -1710,6 +1753,12 @@ "@types/react": "^19.2.0" } }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, "node_modules/@types/ws": { "version": "8.18.1", "resolved": "https://registry.npmmirror.com/@types/ws/-/ws-8.18.1.tgz", @@ -1988,6 +2037,12 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, "node_modules/@vitejs/plugin-react": { "version": "5.1.2", "resolved": "https://registry.npmmirror.com/@vitejs/plugin-react/-/plugin-react-5.1.2.tgz", @@ -2072,6 +2127,16 @@ "dev": true, "license": "Python-2.0" }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", @@ -2174,6 +2239,16 @@ ], "license": "CC-BY-4.0" }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", @@ -2191,6 +2266,46 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmmirror.com/clsx/-/clsx-2.1.1.tgz", @@ -2220,6 +2335,16 @@ "dev": true, "license": "MIT" }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", @@ -2301,7 +2426,6 @@ "version": "4.4.3", "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -2315,6 +2439,19 @@ } } }, + "node_modules/decode-named-character-reference": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", @@ -2322,12 +2459,34 @@ "dev": true, "license": "MIT" }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/detect-node-es": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/detect-node-es/-/detect-node-es-1.1.0.tgz", "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", "license": "MIT" }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/dom-helpers": { "version": "5.2.1", "resolved": "https://registry.npmmirror.com/dom-helpers/-/dom-helpers-5.2.1.tgz", @@ -2584,6 +2743,16 @@ "node": ">=4.0" } }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", @@ -2594,6 +2763,12 @@ "node": ">=0.10.0" } }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2753,6 +2928,61 @@ "node": ">=8" } }, + "node_modules/hast-util-sanitize": { + "version": "5.0.2", + "resolved": "https://registry.npmmirror.com/hast-util-sanitize/-/hast-util-sanitize-5.0.2.tgz", + "integrity": "sha512-3yTWghByc50aGS7JlGhk61SPenfE/p1oaFeNwkOOyrscaOkMGrcW9+Cy/QAIOBpZxP1yqDIzFMR0+Np0i0+usg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "unist-util-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmmirror.com/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hermes-estree": { "version": "0.25.1", "resolved": "https://registry.npmmirror.com/hermes-estree/-/hermes-estree-0.25.1.tgz", @@ -2770,6 +3000,16 @@ "hermes-estree": "0.25.1" } }, + "node_modules/html-url-attributes": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/html-url-attributes/-/html-url-attributes-3.0.1.tgz", + "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/iceberg-js": { "version": "0.8.1", "resolved": "https://registry.npmmirror.com/iceberg-js/-/iceberg-js-0.8.1.tgz", @@ -2816,6 +3056,46 @@ "node": ">=0.8.19" } }, + "node_modules/inline-style-parser": { + "version": "0.2.7", + "resolved": "https://registry.npmmirror.com/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", + "license": "MIT" + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2839,6 +3119,28 @@ "node": ">=0.10.0" } }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", @@ -2959,6 +3261,16 @@ "dev": true, "license": "MIT" }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "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", @@ -2987,6 +3299,861 @@ "integrity": "sha512-u/KYiwPIBo/0bT+WWfU7qO1d+aqeB90Tuy4ErXenr2Gam0QcWeezUvtiOIyXR7HbVnW2I1DKfU0NBvzMZhbVQw==", "license": "MIT" }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmmirror.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", @@ -3004,7 +4171,6 @@ "version": "2.1.3", "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, "license": "MIT" }, "node_modules/nanoid": { @@ -3111,6 +4277,31 @@ "node": ">=6" } }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmmirror.com/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", @@ -3318,6 +4509,16 @@ "react-is": "^16.13.1" } }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz", @@ -3355,6 +4556,33 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, + "node_modules/react-markdown": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/react-markdown/-/react-markdown-10.1.0.tgz", + "integrity": "sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "html-url-attributes": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=18", + "react": ">=18" + } + }, "node_modules/react-number-format": { "version": "5.4.4", "resolved": "https://registry.npmmirror.com/react-number-format/-/react-number-format-5.4.4.tgz", @@ -3515,6 +4743,86 @@ "react-dom": ">=16.6.0" } }, + "node_modules/rehype-sanitize": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/rehype-sanitize/-/rehype-sanitize-6.0.0.tgz", + "integrity": "sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-sanitize": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmmirror.com/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmmirror.com/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmmirror.com/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", @@ -3624,6 +4932,30 @@ "node": ">=0.10.0" } }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -3637,6 +4969,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/style-to-js": { + "version": "1.1.21", + "resolved": "https://registry.npmmirror.com/style-to-js/-/style-to-js-1.1.21.tgz", + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.14" + } + }, + "node_modules/style-to-object": { + "version": "1.0.14", + "resolved": "https://registry.npmmirror.com/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.7" + } + }, "node_modules/sugarss": { "version": "5.0.1", "resolved": "https://registry.npmmirror.com/sugarss/-/sugarss-5.0.1.tgz", @@ -3694,6 +5044,26 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/ts-api-utils": { "version": "2.4.0", "resolved": "https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-2.4.0.tgz", @@ -3782,6 +5152,93 @@ "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "license": "MIT" }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmmirror.com/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/update-browserslist-db": { "version": "1.2.3", "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", @@ -3917,6 +5374,34 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/vite": { "version": "7.3.1", "resolved": "https://registry.npmmirror.com/vite/-/vite-7.3.1.tgz", @@ -4110,6 +5595,16 @@ "optional": true } } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } } } } diff --git a/package.json b/package.json index 6c7d246..11375f9 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,10 @@ "postcss-simple-vars": "^7.0.1", "react": "^19.2.0", "react-dom": "^19.2.0", + "react-markdown": "^10.1.0", "react-router-dom": "^7.13.0", + "rehype-sanitize": "^6.0.0", + "remark-gfm": "^4.0.1", "zustand": "^5.0.10" }, "devDependencies": { diff --git a/src/assets/icon.png b/src/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e09a651150716d74508058272dd4fb3a7c8bf374 GIT binary patch literal 99319 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 const [history, setHistory] = useState([]); const addConversation = useAppStore((state) => state.addConversation); const scrollRef = useRef(null); @@ -55,7 +52,6 @@ export function AIChatBox({ onEventCreated }: AIChatBoxProps) { created_at: new Date().toISOString(), }; - setConversation(newConversation); setHistory((prev) => [...prev, newConversation]); addConversation(newConversation); diff --git a/src/components/ai/FloatingAIChat.tsx b/src/components/ai/FloatingAIChat.tsx new file mode 100644 index 0000000..16ec212 --- /dev/null +++ b/src/components/ai/FloatingAIChat.tsx @@ -0,0 +1,262 @@ +import { useState, useRef, useEffect } from 'react'; +import { + Paper, + Text, + Stack, + Group, + TextInput, + ActionIcon, + Loader, + Box, + Transition, +} from '@mantine/core'; +import { IconSparkles, IconX, IconSend, IconMessage } from '@tabler/icons-react'; +import { api } from '../../services/api'; +import { useAppStore } from '../../stores'; +import type { AIConversation } from '../../types'; + +interface FloatingAIChatProps { + onEventCreated?: () => void; +} + +export function FloatingAIChat({ onEventCreated }: FloatingAIChatProps) { + const [isOpen, setIsOpen] = useState(false); + const [message, setMessage] = useState(''); + const [loading, setLoading] = useState(false); + const [history, setHistory] = useState([]); + const addConversation = useAppStore((state) => state.addConversation); + const scrollRef = useRef(null); + + const scrollToBottom = () => { + scrollRef.current?.scrollIntoView({ behavior: 'smooth' }); + }; + + useEffect(() => { + scrollToBottom(); + }, [history]); + + const handleSend = async () => { + if (!message.trim() || loading) return; + + const userMessage = message.trim(); + setMessage(''); + setLoading(true); + + try { + const result = await api.ai.parse(userMessage); + + const newConversation: AIConversation = { + id: Date.now().toString(), + user_id: '', + message: userMessage, + response: result.response, + created_at: new Date().toISOString(), + }; + + setHistory((prev) => [...prev, newConversation]); + addConversation(newConversation); + + if (onEventCreated) { + onEventCreated(); + } + } catch (error) { + console.error('AI parse error:', error); + } finally { + setLoading(false); + } + }; + + const handleKeyPress = (e: React.KeyboardEvent) => { + if (e.key === 'Enter' && !e.shiftKey) { + e.preventDefault(); + handleSend(); + } + }; + + return ( + <> + {/* Floating button */} + setIsOpen(!isOpen)} + style={{ + position: 'fixed', + bottom: 24, + right: 24, + zIndex: 1000, + background: '#1a1a1a', + boxShadow: '0 4px 12px rgba(0, 0, 0, 0.2)', + }} + > + {isOpen ? : } + + + {/* Chat window */} + + {(styles) => ( + + {/* Header */} + + + + + AI 助手 + + + + + {/* Chat history */} + + {history.length === 0 ? ( + + + + 告诉我你想记住的事情 +
+ + 例如:下周三见客户、每月15号还房贷 + +
+
+ ) : ( + history.map((conv) => ( + + + + 你 + + + + + {conv.message} + + + + + + + AI + + + + + {conv.response} + + + + )) + )} + + {loading && ( + + + + AI 正在思考... + + + )} + +
+ + + {/* Input */} + + setMessage(e.target.value)} + onKeyPress={handleKeyPress} + placeholder="输入你的提醒事项..." + size="sm" + style={{ flex: 1 }} + disabled={loading} + styles={{ + input: { + borderRadius: 2, + borderColor: 'rgba(0, 0, 0, 0.1)', + background: '#faf9f7', + }, + }} + /> + + + + + + )} + + + ); +} diff --git a/src/components/anniversary/AnniversaryCard.tsx b/src/components/anniversary/AnniversaryCard.tsx index 1739d4d..d2b161a 100644 --- a/src/components/anniversary/AnniversaryCard.tsx +++ b/src/components/anniversary/AnniversaryCard.tsx @@ -1,5 +1,4 @@ -import { Card, Text, Badge, Group, Stack, ThemeIcon } from '@mantine/core'; -import { IconHeart, IconRepeat, IconCalendar } from '@tabler/icons-react'; +import { Paper, Text, Group, Stack } from '@mantine/core'; import type { Event } from '../../types'; import { calculateCountdown, formatCountdown } from '../../utils/countdown'; import { getHolidayById } from '../../constants/holidays'; @@ -17,37 +16,40 @@ export function AnniversaryCard({ event, onClick }: AnniversaryCardProps) { const holiday = event.is_holiday ? getHolidayById(event.title) || event.is_holiday : false; return ( - (e.currentTarget.style.transform = 'translateY(-2px)')} + style={{ + cursor: 'pointer', + transition: 'transform 0.2s', + background: 'rgba(0, 0, 0, 0.02)', + border: '1px solid rgba(0, 0, 0, 0.04)', + }} + onMouseEnter={(e) => (e.currentTarget.style.transform = 'translateY(-1px)')} onMouseLeave={(e) => (e.currentTarget.style.transform = 'translateY(0)')} > - - - {event.title} - + {event.title} - {/* Countdown badge */} - } + {/* Countdown */} + {formattedCountdown} - + {/* Date display */} - + {countdown.isPast ? '已过' : `${countdown.nextDate.getMonth() + 1}月${countdown.nextDate.getDate()}日`} @@ -58,22 +60,17 @@ export function AnniversaryCard({ event, onClick }: AnniversaryCardProps) { {repeatType !== 'none' && ( - } - > + {repeatType === 'yearly' ? '每年' : '每月'} - + )} {(event.is_holiday || holiday) && ( - + 节假日 - + )} - + ); } diff --git a/src/components/anniversary/AnniversaryList.tsx b/src/components/anniversary/AnniversaryList.tsx index 9b9e924..ec8c6af 100644 --- a/src/components/anniversary/AnniversaryList.tsx +++ b/src/components/anniversary/AnniversaryList.tsx @@ -1,11 +1,10 @@ import { useMemo } from 'react'; -import { Stack, Text, Paper, Group, Button, Badge, ThemeIcon, Card } from '@mantine/core'; -import { IconPlus, IconHeart, IconCalendar } from '@tabler/icons-react'; +import { Stack, Text, Paper, Group, Button } from '@mantine/core'; +import { IconPlus } from '@tabler/icons-react'; import { AnniversaryCard } from './AnniversaryCard'; -import { getHolidaysForYear, getUpcomingHolidays } from '../../constants/holidays'; +import { getHolidaysForYear } from '../../constants/holidays'; import { calculateCountdown, formatCountdown } from '../../utils/countdown'; import type { Event } from '../../types'; -import { Lunar, Solar } from 'lunar-javascript'; interface AnniversaryListProps { events: Event[]; @@ -85,16 +84,21 @@ export function AnniversaryList({ events, onEventClick, onAddClick }: Anniversar // 空状态 if (allAnniversaries.total === 0) { return ( - + - + 暂无纪念日 @@ -104,21 +108,25 @@ export function AnniversaryList({ events, onEventClick, onAddClick }: Anniversar } return ( - + - + 纪念日 - + {anniversaries.length} - + @@ -128,37 +136,37 @@ export function AnniversaryList({ events, onEventClick, onAddClick }: Anniversar {/* 内置节假日 */} {allAnniversaries.builtIn.length > 0 && ( <> - + 即将到来 {allAnniversaries.builtIn.map((holiday) => { const countdown = calculateCountdown(holiday.date, holiday.repeat_type, holiday.is_lunar); return ( - onEventClick(holiday as unknown as Event)} > - - - - - {holiday.title} - + {holiday.title} - {formatCountdown(countdown)} - + - + ); })} @@ -168,7 +176,7 @@ export function AnniversaryList({ events, onEventClick, onAddClick }: Anniversar {allAnniversaries.user.length > 0 && ( <> {allAnniversaries.builtIn.length > 0 && ( - + 我的纪念日 )} diff --git a/src/components/note/NoteEditor.tsx b/src/components/note/NoteEditor.tsx index b78b3e2..f093c39 100644 --- a/src/components/note/NoteEditor.tsx +++ b/src/components/note/NoteEditor.tsx @@ -1,12 +1,26 @@ import { useState, useEffect, useCallback } from 'react'; -import { Paper, Textarea, Group, Text, Stack } from '@mantine/core'; +import { + Paper, + Textarea, + Group, + Text, + Stack, + Button, + Box, +} from '@mantine/core'; import { useDebouncedValue } from '@mantine/hooks'; +import ReactMarkdown from 'react-markdown'; +import remarkGfm from 'remark-gfm'; +import rehypeSanitize from 'rehype-sanitize'; +import { IconDeviceFloppy } from '@tabler/icons-react'; import { useAppStore } from '../../stores'; interface NoteEditorProps { onSave?: () => void; } +type ViewMode = 'edit' | 'preview'; + export function NoteEditor({ onSave }: NoteEditorProps) { const notes = useAppStore((state) => state.notes); const updateNotesContent = useAppStore((state) => state.updateNotesContent); @@ -16,6 +30,7 @@ export function NoteEditor({ onSave }: NoteEditorProps) { const [content, setContent] = useState(''); const [saving, setSaving] = useState(false); const [lastSaved, setLastSaved] = useState(null); + const [viewMode] = useState('edit'); // Initialize content from notes useEffect(() => { @@ -29,11 +44,11 @@ export function NoteEditor({ onSave }: NoteEditorProps) { fetchNotes(); }, [fetchNotes]); - // Auto-save with debounce - const [debouncedContent] = useDebouncedValue(content, 1000); + // Auto-save with 3 second debounce + const [debouncedContent] = useDebouncedValue(content, 3000); useEffect(() => { - if (debouncedContent !== undefined && notes) { + if (debouncedContent !== undefined && notes && debouncedContent !== content) { handleSave(debouncedContent); } }, [debouncedContent]); @@ -47,13 +62,14 @@ export function NoteEditor({ onSave }: NoteEditorProps) { updateNotesContent(value); await saveNotes(value); setLastSaved(new Date()); + onSave?.(); } catch (error) { console.error('Failed to save note:', error); } finally { setSaving(false); } }, - [notes, updateNotesContent, saveNotes] + [notes, updateNotesContent, saveNotes, onSave] ); const formatLastSaved = () => { @@ -65,34 +81,140 @@ export function NoteEditor({ onSave }: NoteEditorProps) { return lastSaved.toLocaleTimeString('zh-CN'); }; + const handleManualSave = () => { + if (content && notes) { + handleSave(content); + } + }; + return ( - - - - - 便签 - - - {saving ? '保存中...' : formatLastSaved()} - + + + {/* Header */} + + + + 便签 + + + + + + {saving ? '保存中...' : formatLastSaved()} + + -