diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js index 060e21e..d00c768 100644 --- a/frontend/eslint.config.js +++ b/frontend/eslint.config.js @@ -11,7 +11,8 @@ export default tseslint.config( { files: ['**/*.vue'], languageOptions: { parserOptions: { parser: tseslint.parser } }, - rules: { 'vue/multi-word-component-names': 'off' }, + // TypeScript checks identifiers and DOM globals in Vue's script setup. + rules: { 'vue/multi-word-component-names': 'off', 'no-undef': 'off' }, }, { files: ['vite.config.ts'], diff --git a/frontend/package.json b/frontend/package.json index 6efa910..59b7459 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -19,7 +19,10 @@ "check:api": "pnpm generate:api --check" }, "dependencies": { + "@element-plus/icons-vue": "2.3.2", + "@misskey-dev/tagcanvas-es": "0.1.2", "element-plus": "^2.9.0", + "monaco-editor": "0.57.0", "openapi-fetch": "^0.14.0", "pinia": "^3.0.0", "vue": "^3.5.0", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 59fbebd..8616279 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -8,9 +8,18 @@ importers: .: dependencies: + '@element-plus/icons-vue': + specifier: 2.3.2 + version: 2.3.2(vue@3.5.43(typescript@5.9.3)) + '@misskey-dev/tagcanvas-es': + specifier: 0.1.2 + version: 0.1.2 element-plus: specifier: ^2.9.0 version: 2.14.7(vue@3.5.43(typescript@5.9.3)) + monaco-editor: + specifier: 0.57.0 + version: 0.57.0 openapi-fetch: specifier: ^0.14.0 version: 0.14.1 @@ -335,6 +344,9 @@ packages: '@keyv/serialize@1.1.1': resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} + '@misskey-dev/tagcanvas-es@0.1.2': + resolution: {integrity: sha512-SGqyu30/CCQyIC95Zcmj3k1vYXwfX66/arsxpl1UUulUqvlRpTpuhB7kEAAps1lqXin0rQzXknb31EeveNKsaw==} + '@napi-rs/lzma-linux-x64-gnu@1.5.1': resolution: {integrity: sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==} engines: {node: ^22.20 || ^24.12 || >=25} @@ -514,6 +526,9 @@ packages: '@types/node@24.19.1': resolution: {integrity: sha512-aS3/DG0oM05K0RIXXP+hKjinGG5IgSSVGzswZxW3O0sS3pH4/fycXundUC9XsszgKCk4gHXylTEK6hyFxVxnoQ==} + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} @@ -745,6 +760,9 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dompurify@3.4.15: + resolution: {integrity: sha512-EUBjM+B+lkDE41iE82DDSCfkoPGfXx8IxFxPMjNzm/Uk4xDet77rTN9wqlxlVg71kK7XGuUMv6wUxJUwwv+Xyw==} + element-plus@2.14.7: resolution: {integrity: sha512-lrG7pZyCS+mpCNVpzxxyu5r35+T6V0hzkAeIwn7HA6to772XSTHKuYCZG51OfzlqaxGbNegLxs650zAF1j43gA==} peerDependencies: @@ -959,6 +977,11 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + marked@14.0.0: + resolution: {integrity: sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==} + engines: {node: '>= 18'} + hasBin: true + memoize-one@6.0.0: resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} @@ -973,6 +996,9 @@ packages: mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + monaco-editor@0.57.0: + resolution: {integrity: sha512-5BkI9KGoqrNvBGUe15/QlZq3OooZ8WLg1AxTpaqHRCP3HNpzPPZKE2EDz8M7c+VRmCeUw1Brp4cx/PWm3kI/5A==} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -1446,6 +1472,8 @@ snapshots: '@keyv/serialize@1.1.1': {} + '@misskey-dev/tagcanvas-es@0.1.2': {} + '@napi-rs/lzma-linux-x64-gnu@1.5.1': optional: true @@ -1567,6 +1595,9 @@ snapshots: dependencies: undici-types: 7.24.6 + '@types/trusted-types@2.0.7': + optional: true + '@types/web-bluetooth@0.0.21': {} '@typescript-eslint/eslint-plugin@8.71.0(@typescript-eslint/parser@8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': @@ -1850,6 +1881,10 @@ snapshots: deep-is@0.1.4: {} + dompurify@3.4.15: + optionalDependencies: + '@types/trusted-types': 2.0.7 + element-plus@2.14.7(vue@3.5.43(typescript@5.9.3)): dependencies: '@ctrl/tinycolor': 4.2.1 @@ -2093,6 +2128,8 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.6.0 + marked@14.0.0: {} + memoize-one@6.0.0: {} minimatch@10.2.6: @@ -2105,6 +2142,11 @@ snapshots: mitt@3.0.1: {} + monaco-editor@0.57.0: + dependencies: + dompurify: 3.4.15 + marked: 14.0.0 + ms@2.1.3: {} muggle-string@0.4.1: {}