diff --git a/package-lock.json b/package-lock.json index 2f66b2d6..86ef4c3f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,7 +36,8 @@ "lint-staged": "^16.2.7", "prettier": "3.7.4", "typescript": "~5.9.3", - "vite": "^7.2.4" + "vite": "^7.2.4", + "vite-plugin-svgr": "^4.5.0" } }, "node_modules/@babel/code-frame": { @@ -1389,6 +1390,42 @@ "dev": true, "license": "MIT" }, + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.54.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.54.0.tgz", @@ -1675,6 +1712,258 @@ "win32" ] }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/core/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.21.3", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, "node_modules/@swc/core": { "version": "1.15.7", "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.7.tgz", @@ -2991,6 +3280,19 @@ "node": ">=6" } }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001761", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001761.tgz", @@ -3463,6 +3765,17 @@ "node": ">=6.0.0" } }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/dot-prop": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", @@ -3511,6 +3824,19 @@ "node": ">=10.13.0" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", @@ -4128,6 +4454,13 @@ "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -5901,6 +6234,16 @@ "loose-envify": "cli.js" } }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -6041,6 +6384,17 @@ "dev": true, "license": "MIT" }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, "node_modules/node-releases": { "version": "2.0.27", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", @@ -6336,6 +6690,16 @@ "dev": true, "license": "MIT" }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -7000,6 +7364,17 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -7239,6 +7614,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "dev": true, + "license": "MIT" + }, "node_modules/tailwindcss": { "version": "4.1.18", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", @@ -7366,6 +7748,13 @@ "typescript": ">=4.8.4" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "devOptional": true, + "license": "0BSD" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -7638,6 +8027,21 @@ } } }, + "node_modules/vite-plugin-svgr": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-4.5.0.tgz", + "integrity": "sha512-W+uoSpmVkSmNOGPSsDCWVW/DDAyv+9fap9AZXBvWiQqrboJ08j2vh0tFxTD/LjwqwAd3yYSVJgm54S/1GhbdnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.2.0", + "@svgr/core": "^8.1.0", + "@svgr/plugin-jsx": "^8.1.0" + }, + "peerDependencies": { + "vite": ">=2.6.0" + } + }, "node_modules/vite/node_modules/fdir": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", diff --git a/package.json b/package.json index b81f7ea8..647ab6ce 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "lint-staged": "^16.2.7", "prettier": "3.7.4", "typescript": "~5.9.3", - "vite": "^7.2.4" + "vite": "^7.2.4", + "vite-plugin-svgr": "^4.5.0" } } diff --git a/src/assets/icons/Icon.svg b/src/assets/icons/Icon.svg new file mode 100644 index 00000000..f1739210 --- /dev/null +++ b/src/assets/icons/Icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/icon-add.svg b/src/assets/icons/icon-add.svg new file mode 100644 index 00000000..08f9d70b --- /dev/null +++ b/src/assets/icons/icon-add.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/smallArrowIcon.svg b/src/assets/icons/icon-arrow-down.svg similarity index 53% rename from src/assets/icons/smallArrowIcon.svg rename to src/assets/icons/icon-arrow-down.svg index e8e4bf8e..2db0fd09 100644 --- a/src/assets/icons/smallArrowIcon.svg +++ b/src/assets/icons/icon-arrow-down.svg @@ -1,3 +1,3 @@ - + diff --git a/src/assets/icons/icon-arrow-left.svg b/src/assets/icons/icon-arrow-left.svg new file mode 100644 index 00000000..5a59090f --- /dev/null +++ b/src/assets/icons/icon-arrow-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/icon-arrow-right.svg b/src/assets/icons/icon-arrow-right.svg new file mode 100644 index 00000000..70f67cbe --- /dev/null +++ b/src/assets/icons/icon-arrow-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/icon-arrow-up.svg b/src/assets/icons/icon-arrow-up.svg new file mode 100644 index 00000000..5f22f738 --- /dev/null +++ b/src/assets/icons/icon-arrow-up.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/icon-close.svg b/src/assets/icons/icon-close.svg new file mode 100644 index 00000000..2f90b7e4 --- /dev/null +++ b/src/assets/icons/icon-close.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/icon-copy.svg b/src/assets/icons/icon-copy.svg new file mode 100644 index 00000000..13067e16 --- /dev/null +++ b/src/assets/icons/icon-copy.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/icons/icon-document.svg b/src/assets/icons/icon-document.svg new file mode 100644 index 00000000..43747b51 --- /dev/null +++ b/src/assets/icons/icon-document.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/icon-fullscreen.svg b/src/assets/icons/icon-fullscreen.svg new file mode 100644 index 00000000..488cb8f0 --- /dev/null +++ b/src/assets/icons/icon-fullscreen.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/icon-info.svg b/src/assets/icons/icon-info.svg new file mode 100644 index 00000000..f849c325 --- /dev/null +++ b/src/assets/icons/icon-info.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/icons/icon-link.svg b/src/assets/icons/icon-link.svg new file mode 100644 index 00000000..c8a9913e --- /dev/null +++ b/src/assets/icons/icon-link.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/icons/icon-logo.svg b/src/assets/icons/icon-logo.svg new file mode 100644 index 00000000..0cfd3f33 --- /dev/null +++ b/src/assets/icons/icon-logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/icon-more.svg b/src/assets/icons/icon-more.svg new file mode 100644 index 00000000..6d278995 --- /dev/null +++ b/src/assets/icons/icon-more.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/icon-pause.svg b/src/assets/icons/icon-pause.svg new file mode 100644 index 00000000..5346ba78 --- /dev/null +++ b/src/assets/icons/icon-pause.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/icon-play.svg b/src/assets/icons/icon-play.svg new file mode 100644 index 00000000..245fa7ad --- /dev/null +++ b/src/assets/icons/icon-play.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/icon-recent.svg b/src/assets/icons/icon-recent.svg new file mode 100644 index 00000000..35136d09 --- /dev/null +++ b/src/assets/icons/icon-recent.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/icons/icon-refresh.svg b/src/assets/icons/icon-refresh.svg new file mode 100644 index 00000000..552edad2 --- /dev/null +++ b/src/assets/icons/icon-refresh.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/icon-remove.svg b/src/assets/icons/icon-remove.svg new file mode 100644 index 00000000..ae206159 --- /dev/null +++ b/src/assets/icons/icon-remove.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/icon-reply.svg b/src/assets/icons/icon-reply.svg new file mode 100644 index 00000000..d63bf461 --- /dev/null +++ b/src/assets/icons/icon-reply.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/icon-revert.svg b/src/assets/icons/icon-revert.svg new file mode 100644 index 00000000..b8a74bd9 --- /dev/null +++ b/src/assets/icons/icon-revert.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/icon-share.svg b/src/assets/icons/icon-share.svg new file mode 100644 index 00000000..96a46bd8 --- /dev/null +++ b/src/assets/icons/icon-share.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/icons/icon-smile.svg b/src/assets/icons/icon-smile.svg new file mode 100644 index 00000000..6106f129 --- /dev/null +++ b/src/assets/icons/icon-smile.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/icon-sound-mute.svg b/src/assets/icons/icon-sound-mute.svg new file mode 100644 index 00000000..d582ea60 --- /dev/null +++ b/src/assets/icons/icon-sound-mute.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/icon-sound.svg b/src/assets/icons/icon-sound.svg new file mode 100644 index 00000000..5a229fe2 --- /dev/null +++ b/src/assets/icons/icon-sound.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/icon-stop.svg b/src/assets/icons/icon-stop.svg new file mode 100644 index 00000000..d432f4af --- /dev/null +++ b/src/assets/icons/icon-stop.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/icon-video.svg b/src/assets/icons/icon-video.svg new file mode 100644 index 00000000..1478ac13 --- /dev/null +++ b/src/assets/icons/icon-video.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/refreshIcon.svg b/src/assets/icons/refreshIcon.svg deleted file mode 100644 index a5f8d31a..00000000 --- a/src/assets/icons/refreshIcon.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/assets/icons/replyIcon.svg b/src/assets/icons/replyIcon.svg deleted file mode 100644 index 7f5ec49c..00000000 --- a/src/assets/icons/replyIcon.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/assets/icons/treshcanIcon.svg b/src/assets/icons/treshcanIcon.svg deleted file mode 100644 index e38ed0ac..00000000 --- a/src/assets/icons/treshcanIcon.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/components/ScriptBox.tsx b/src/components/ScriptBox.tsx deleted file mode 100644 index bf304448..00000000 --- a/src/components/ScriptBox.tsx +++ /dev/null @@ -1,457 +0,0 @@ -import { useState } from 'react'; - -import refreshIcon from '../assets/icons/refreshIcon.svg'; -import replyIcon from '../assets/icons/replyIcon.svg'; -import smallArrowIcon from '../assets/icons/smallArrowIcon.svg'; -import treshcanIcon from '../assets/icons/treshcanIcon.svg'; -import { useToggle } from '../hooks/useToggle'; - -const ScriptBox = () => { - // 0. 슬라이드 이름(이름 변경) 버튼 - const slideNameChange = useToggle(false); - // 0-1. 현재 슬라이드 이름 - const [slideTitle, setSlideTitle] = useState('슬라이드 1'); - // 0-2. 타이틀 저장 버튼(서버 요청) - // const handleSaveSlideTitle = () => { - // - // }; - - // 1. 이모지버튼 - const [isEmogiClick, setEmogiClick] = useState(false); - - const handleEmogiClick = () => { - setEmogiClick((prev) => !prev); - }; - - // 2. 변경기록 버튼 - const scriptHistory = useToggle(false); - // 3. 의견 버튼 - const opinion = useToggle(false); - // 3-1. 답변 (나중에 피드백id랑 매칭해야됨) - // 어떤 댓글에 답글 입력창이 열려있는지 - const [activeReplyIdx, setActiveReplyIdx] = useState(null); - - // 답글 입력값(일단 1개만) - const [replyText, setReplyText] = useState(''); - - // 4. 대본섹션 닫기 토글 - const scriptBoxDock = useToggle(false); - return ( - <> -
- {/* 변경: 상단바 내부 레이아웃(좌/우 정렬) */} - -
-
- - - {/* 슬라이드 이름변경 popover */} - {slideNameChange.value && ( - <> - {/* 바깥 클릭 시 닫기 */} -
- -
- {/* 슬라이드 제목 변경 입력창 */} - setSlideTitle(e.target.value)} - className=" - flex-1 h-9 px-3 - rounded-md - border border-zinc-200 - text-sm text-zinc-700 - outline-none - focus:border-indigo-500 - " - /> - - {/* 저장 버튼: 핸들러만 연결(현재는 아무 동작 X) */} - -
- - )} -
- - {/* 우측 컨트롤 영역 */} -
- {/* 이모지 카운트 영역 */} -
-
-
👍
-
99+
-
-
-
😡
-
12
-
-
- - {/* 변경: 이모지 버튼을 오른쪽 컨트롤 쪽에 자연스럽게 배치 + popover 기준점 유지 */} -
- - - {isEmogiClick && ( // 받은 이모티콘 서버에서 뿌려줌 -
-
-
-
😏
-
15
-
-
-
❤️
-
28
-
-
-
😎️
-
5
-
-
-
👀
-
182
-
-
-
🤪
-
3
-
-
-
-
-
💡
-
11
-
-
-
🙈️
-
488
-
-
-
💕
-
2
-
-
-
😂
-
46
-
-
-
🤓
-
36
-
-
-
- )} -
- - {/* 변경: 변경기록/의견 버튼 그룹 */} -
-
- - - {scriptHistory.value && ( - <> -
- -
-
-
- 대본 변경 기록 -
-
- -
-
-
-
- 현재 -
-
- (현재 대본 내용이 들어올 자리) -
-
-
- - {[0, 1, 2, 3].map((idx) => ( -
-
-
- (시간 표시 자리) -
- - -
- -
- (이전 대본 내용 자리 #{idx + 1}) -
-
- ))} -
-
- - )} -
- -
- - - {/* 의견 pop over */} - {opinion.value && ( - <> -
- - {/* popover 위치 = 버튼 right edge에 붙이고 왼쪽으로 펼쳐지게 */} -
-
-
의견
-
- -
- {[0, 1, 2, 3].map((idx) => { - const isMine = idx < 2; - const hasReply = idx === 2; - - return ( -
-
-
-
- -
-
-
-
-
- {isMine ? '익명 사용자' : '김철수'} -
-
- {idx === 0 ? '방금 전' : '1시간 전'} -
-
- - {isMine && ( - - )} -
- -
- 이 부분 설명이 명확해요! -
-
- -
- {/* setActiveReplyIdx: 같은 댓글 다시 누르면 닫기(toggle) - setReplyText: 새로 열 때 입력 초기화(원하면 제거) */} - - - {/* 답글 버튼 밑에 inputBox렌더링 */} - {activeReplyIdx === idx && ( -
- setReplyText(e.target.value)} - placeholder="답글을 입력하세요" - className="flex-1 h-10 px-3 rounded-lg border border-zinc-200 text-sm outline-none focus:border-indigo-500" - /> - {/* 서버 붙기 전: 아무 것도 안 하고 닫기만 */} - -
- )} -
-
-
- ); - })} -
-
- - )} -
-
- - {/* 전체 Script Box 내려갔다 올라오게 */} - -
-
- - {/* "대본 입력 영역" textarea */} -
-