diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..417c6ce
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+node_modules/
+.vscode/
\ No newline at end of file
diff --git a/daniel-valeriote/.gitignore b/daniel-valeriote/.gitignore
new file mode 100644
index 0000000..a547bf3
--- /dev/null
+++ b/daniel-valeriote/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/daniel-valeriote/README.md b/daniel-valeriote/README.md
new file mode 100644
index 0000000..4ffa7fc
--- /dev/null
+++ b/daniel-valeriote/README.md
@@ -0,0 +1,17 @@
+# Desafio 3 - Ide@l
+
+### Project setup
+
+`npm install`
+
+### Run project's development mode
+
+`npm run dev`
+
+### Build for production
+
+`npm run build`
+
+------
+
+Basic project structure created with **Vite**.
diff --git a/daniel-valeriote/index.html b/daniel-valeriote/index.html
new file mode 100644
index 0000000..7259eaa
--- /dev/null
+++ b/daniel-valeriote/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Desafio 3 - Ide@l
+
+
+
+
+
+
\ No newline at end of file
diff --git a/daniel-valeriote/package-lock.json b/daniel-valeriote/package-lock.json
new file mode 100644
index 0000000..de7dff5
--- /dev/null
+++ b/daniel-valeriote/package-lock.json
@@ -0,0 +1,1272 @@
+{
+ "name": "daniel-valeriote",
+ "version": "0.0.0",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "daniel-valeriote",
+ "version": "0.0.0",
+ "dependencies": {
+ "pinia": "^2.0.14",
+ "vue": "^3.2.25",
+ "vue-material-design-icons": "^5.0.0",
+ "vue-router": "^4.0.15",
+ "vue-star-rating": "^2.1.0"
+ },
+ "devDependencies": {
+ "@vitejs/plugin-vue": "^2.3.3",
+ "vite": "^2.9.9"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.0.tgz",
+ "integrity": "sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg==",
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.3.tgz",
+ "integrity": "sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^2.5.10",
+ "vue": "^3.2.25"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.35.tgz",
+ "integrity": "sha512-1Mtmh8ceVUoUsn/PME5oM+Dus648rCeV/fBaZ4ERLFbTHBJXj6QmDPrSn9mfEyPDXE0RYIwyJNn884NdWK+Yiw==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/shared": "3.2.35",
+ "estree-walker": "^2.0.2",
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.35.tgz",
+ "integrity": "sha512-I4bXB9MkRSTJ3gVXRQ4iaYJgABZGew+K/CCBoAh9fdLaeY7A7uUlS5nWGOlICSVfOH0/xk4QlcXeGZYCJkEleA==",
+ "dependencies": {
+ "@vue/compiler-core": "3.2.35",
+ "@vue/shared": "3.2.35"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.35.tgz",
+ "integrity": "sha512-2wKQtnuHfwBFc7uV2Cmtms3Cc7u/u6kKJI3F+i0A+9xnuahK39cCMNJKHzI9x93Xai+uft64fDc5JSh8zDQBQA==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.35",
+ "@vue/compiler-dom": "3.2.35",
+ "@vue/compiler-ssr": "3.2.35",
+ "@vue/reactivity-transform": "3.2.35",
+ "@vue/shared": "3.2.35",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7",
+ "postcss": "^8.1.10",
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.35.tgz",
+ "integrity": "sha512-dJyqB8fZbvVQEnWl5VGxkWHTqx0ERnZXXqInFzyOX8FpTEidmQbUSmDrXidea7bZTdeg6ly94kZFGPYXT29mgQ==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.35",
+ "@vue/shared": "3.2.35"
+ }
+ },
+ "node_modules/@vue/devtools-api": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.1.4.tgz",
+ "integrity": "sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ=="
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.35.tgz",
+ "integrity": "sha512-6j9N9R1SwHVcJas4YqAzwdRS/cgmj3Z9aUert5Mv1jk5B9H9ivN/zot/fgMUbseWXigkkmX60OsfRbz49o8kCw==",
+ "dependencies": {
+ "@vue/shared": "3.2.35"
+ }
+ },
+ "node_modules/@vue/reactivity-transform": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.35.tgz",
+ "integrity": "sha512-VjdQU4nIrgsh1iPqAdYZufWgFqdH9fIl6ttO2PCFlLsrQl7b8BcuawM6moSBLF8damBzSNcqvbvQDBhsI3fyVQ==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.35",
+ "@vue/shared": "3.2.35",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7"
+ }
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.35.tgz",
+ "integrity": "sha512-P8AeGPRGyIiYdOdvLc/7KR8VSdbUGG8Jxdx6Xlj5okEjyV9IYxeHRIQIoye85K0lZXBH4zuh1syD1mX+oZ0KqQ==",
+ "dependencies": {
+ "@vue/reactivity": "3.2.35",
+ "@vue/shared": "3.2.35"
+ }
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.35.tgz",
+ "integrity": "sha512-M5xrVJ/b0KqssjPQMdpwLp3KwzG1Tn2w/IrOptVqGY5c9fEBluIbm18AeO4Fr3YxfeyaPWm1rY8POrEso0UE3w==",
+ "dependencies": {
+ "@vue/runtime-core": "3.2.35",
+ "@vue/shared": "3.2.35",
+ "csstype": "^2.6.8"
+ }
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.35.tgz",
+ "integrity": "sha512-ZMF8V+bZ0EIjSB7yzPEmDlxRDOIXj04iqG4Rw/H5rIuBCf0b7rNTleiOldlX5haG++zUq6uiL2AVp/A9uyz+cw==",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.2.35",
+ "@vue/shared": "3.2.35"
+ },
+ "peerDependencies": {
+ "vue": "3.2.35"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.35.tgz",
+ "integrity": "sha512-/sxDqMcy0MsfQ3LQixKYDxIinDYNy1dXTsF2Am0pv0toImWabymFQ8cFmPJnPt+gh5ElKwwn7KzQcDbLHar60A=="
+ },
+ "node_modules/csstype": {
+ "version": "2.6.20",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz",
+ "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
+ },
+ "node_modules/esbuild": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.39.tgz",
+ "integrity": "sha512-2kKujuzvRWYtwvNjYDY444LQIA3TyJhJIX3Yo4+qkFlDDtGlSicWgeHVJqMUP/2sSfH10PGwfsj+O2ro1m10xQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "esbuild-android-64": "0.14.39",
+ "esbuild-android-arm64": "0.14.39",
+ "esbuild-darwin-64": "0.14.39",
+ "esbuild-darwin-arm64": "0.14.39",
+ "esbuild-freebsd-64": "0.14.39",
+ "esbuild-freebsd-arm64": "0.14.39",
+ "esbuild-linux-32": "0.14.39",
+ "esbuild-linux-64": "0.14.39",
+ "esbuild-linux-arm": "0.14.39",
+ "esbuild-linux-arm64": "0.14.39",
+ "esbuild-linux-mips64le": "0.14.39",
+ "esbuild-linux-ppc64le": "0.14.39",
+ "esbuild-linux-riscv64": "0.14.39",
+ "esbuild-linux-s390x": "0.14.39",
+ "esbuild-netbsd-64": "0.14.39",
+ "esbuild-openbsd-64": "0.14.39",
+ "esbuild-sunos-64": "0.14.39",
+ "esbuild-windows-32": "0.14.39",
+ "esbuild-windows-64": "0.14.39",
+ "esbuild-windows-arm64": "0.14.39"
+ }
+ },
+ "node_modules/esbuild-android-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.39.tgz",
+ "integrity": "sha512-EJOu04p9WgZk0UoKTqLId9VnIsotmI/Z98EXrKURGb3LPNunkeffqQIkjS2cAvidh+OK5uVrXaIP229zK6GvhQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-android-arm64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.39.tgz",
+ "integrity": "sha512-+twajJqO7n3MrCz9e+2lVOnFplRsaGRwsq1KL/uOy7xK7QdRSprRQcObGDeDZUZsacD5gUkk6OiHiYp6RzU3CA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-darwin-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.39.tgz",
+ "integrity": "sha512-ImT6eUw3kcGcHoUxEcdBpi6LfTRWaV6+qf32iYYAfwOeV+XaQ/Xp5XQIBiijLeo+LpGci9M0FVec09nUw41a5g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-darwin-arm64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.39.tgz",
+ "integrity": "sha512-/fcQ5UhE05OiT+bW5v7/up1bDsnvaRZPJxXwzXsMRrr7rZqPa85vayrD723oWMT64dhrgWeA3FIneF8yER0XTw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-freebsd-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.39.tgz",
+ "integrity": "sha512-oMNH8lJI4wtgN5oxuFP7BQ22vgB/e3Tl5Woehcd6i2r6F3TszpCnNl8wo2d/KvyQ4zvLvCWAlRciumhQg88+kQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-freebsd-arm64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.39.tgz",
+ "integrity": "sha512-1GHK7kwk57ukY2yI4ILWKJXaxfr+8HcM/r/JKCGCPziIVlL+Wi7RbJ2OzMcTKZ1HpvEqCTBT/J6cO4ZEwW4Ypg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-32": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.39.tgz",
+ "integrity": "sha512-g97Sbb6g4zfRLIxHgW2pc393DjnkTRMeq3N1rmjDUABxpx8SjocK4jLen+/mq55G46eE2TA0MkJ4R3SpKMu7dg==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.39.tgz",
+ "integrity": "sha512-4tcgFDYWdI+UbNMGlua9u1Zhu0N5R6u9tl5WOM8aVnNX143JZoBZLpCuUr5lCKhnD0SCO+5gUyMfupGrHtfggQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-arm": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.39.tgz",
+ "integrity": "sha512-t0Hn1kWVx5UpCzAJkKRfHeYOLyFnXwYynIkK54/h3tbMweGI7dj400D1k0Vvtj2u1P+JTRT9tx3AjtLEMmfVBQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-arm64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.39.tgz",
+ "integrity": "sha512-23pc8MlD2D6Px1mV8GMglZlKgwgNKAO8gsgsLLcXWSs9lQsCYkIlMo/2Ycfo5JrDIbLdwgP8D2vpfH2KcBqrDQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-mips64le": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.39.tgz",
+ "integrity": "sha512-epwlYgVdbmkuRr5n4es3B+yDI0I2e/nxhKejT9H0OLxFAlMkeQZxSpxATpDc9m8NqRci6Kwyb/SfmD1koG2Zuw==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-ppc64le": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.39.tgz",
+ "integrity": "sha512-W/5ezaq+rQiQBThIjLMNjsuhPHg+ApVAdTz2LvcuesZFMsJoQAW2hutoyg47XxpWi7aEjJGrkS26qCJKhRn3QQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-riscv64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.39.tgz",
+ "integrity": "sha512-IS48xeokcCTKeQIOke2O0t9t14HPvwnZcy+5baG13Z1wxs9ZrC5ig5ypEQQh4QMKxURD5TpCLHw2W42CLuVZaA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-s390x": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.39.tgz",
+ "integrity": "sha512-zEfunpqR8sMomqXhNTFEKDs+ik7HC01m3M60MsEjZOqaywHu5e5682fMsqOlZbesEAAaO9aAtRBsU7CHnSZWyA==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-netbsd-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.39.tgz",
+ "integrity": "sha512-Uo2suJBSIlrZCe4E0k75VDIFJWfZy+bOV6ih3T4MVMRJh1lHJ2UyGoaX4bOxomYN3t+IakHPyEoln1+qJ1qYaA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-openbsd-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.39.tgz",
+ "integrity": "sha512-secQU+EpgUPpYjJe3OecoeGKVvRMLeKUxSMGHnK+aK5uQM3n1FPXNJzyz1LHFOo0WOyw+uoCxBYdM4O10oaCAA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-sunos-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.39.tgz",
+ "integrity": "sha512-qHq0t5gePEDm2nqZLb+35p/qkaXVS7oIe32R0ECh2HOdiXXkj/1uQI9IRogGqKkK+QjDG+DhwiUw7QoHur/Rwg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-32": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.39.tgz",
+ "integrity": "sha512-XPjwp2OgtEX0JnOlTgT6E5txbRp6Uw54Isorm3CwOtloJazeIWXuiwK0ONJBVb/CGbiCpS7iP2UahGgd2p1x+Q==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.39.tgz",
+ "integrity": "sha512-E2wm+5FwCcLpKsBHRw28bSYQw0Ikxb7zIMxw3OPAkiaQhLVr3dnVO8DofmbWhhf6b97bWzg37iSZ45ZDpLw7Ow==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-arm64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.39.tgz",
+ "integrity": "sha512-sBZQz5D+Gd0EQ09tZRnz/PpVdLwvp/ufMtJ1iDFYddDaPpZXKqPyaxfYBLs3ueiaksQ26GGa7sci0OqFzNs7KA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "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=="
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
+ "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ },
+ "node_modules/pinia": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.0.14.tgz",
+ "integrity": "sha512-0nPuZR4TetT/WcLN+feMSjWJku3SQU7dBbXC6uw+R6FLQJCsg+/0pzXyD82T1FmAYe0lsx+jnEDQ1BLgkRKlxA==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.1.4",
+ "vue-demi": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.4.0",
+ "typescript": ">=4.4.4",
+ "vue": "^2.6.14 || ^3.2.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ },
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pinia/node_modules/vue-demi": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.12.5.tgz",
+ "integrity": "sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==",
+ "hasInstallScript": true,
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.14",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
+ "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.4",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
+ "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.8.1",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "2.74.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.74.1.tgz",
+ "integrity": "sha512-K2zW7kV8Voua5eGkbnBtWYfMIhYhT9Pel2uhBk2WO5eMee161nPze/XRfvEQPFYz7KgrCCnmh2Wy0AMFLGGmMA==",
+ "dev": true,
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/vite": {
+ "version": "2.9.9",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.9.tgz",
+ "integrity": "sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew==",
+ "dev": true,
+ "dependencies": {
+ "esbuild": "^0.14.27",
+ "postcss": "^8.4.13",
+ "resolve": "^1.22.0",
+ "rollup": "^2.59.0"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": ">=12.2.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ },
+ "peerDependencies": {
+ "less": "*",
+ "sass": "*",
+ "stylus": "*"
+ },
+ "peerDependenciesMeta": {
+ "less": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.35.tgz",
+ "integrity": "sha512-mc/15B0Wjd/4JMMGOcXUQAeXfjyg8MImA2EVZucNdyDPJe1nXhMNbYXOEVPEGfk/mCeyszCzl44dSAhHhQVH8g==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.35",
+ "@vue/compiler-sfc": "3.2.35",
+ "@vue/runtime-dom": "3.2.35",
+ "@vue/server-renderer": "3.2.35",
+ "@vue/shared": "3.2.35"
+ }
+ },
+ "node_modules/vue-material-design-icons": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/vue-material-design-icons/-/vue-material-design-icons-5.0.0.tgz",
+ "integrity": "sha512-lYSJFW/TyQqmg7MvUbEB8ua1mwWy/v8qve7QJuA/UWUAXC4/yVUdAm4pg/sM9+k5n7VLckBv6ucOROuGBsGPDQ=="
+ },
+ "node_modules/vue-router": {
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.0.15.tgz",
+ "integrity": "sha512-xa+pIN9ZqORdIW1MkN2+d9Ui2pCM1b/UMgwYUCZOiFYHAvz/slKKBDha8DLrh5aCG/RibtrpyhKjKOZ85tYyWg==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/vue-star-rating": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/vue-star-rating/-/vue-star-rating-2.1.0.tgz",
+ "integrity": "sha512-LnhuQPi4hkRg7egKls+iqtL1U0RTN2gQkdLsJN7acyynMsSc9epHLzk8McJS+bR0OzfG98zNFq7mxAyuSb/okQ==",
+ "dependencies": {
+ "vue": "^3.0.0"
+ }
+ }
+ },
+ "dependencies": {
+ "@babel/parser": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.0.tgz",
+ "integrity": "sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg=="
+ },
+ "@vitejs/plugin-vue": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.3.tgz",
+ "integrity": "sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==",
+ "dev": true,
+ "requires": {}
+ },
+ "@vue/compiler-core": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.35.tgz",
+ "integrity": "sha512-1Mtmh8ceVUoUsn/PME5oM+Dus648rCeV/fBaZ4ERLFbTHBJXj6QmDPrSn9mfEyPDXE0RYIwyJNn884NdWK+Yiw==",
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/shared": "3.2.35",
+ "estree-walker": "^2.0.2",
+ "source-map": "^0.6.1"
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.35.tgz",
+ "integrity": "sha512-I4bXB9MkRSTJ3gVXRQ4iaYJgABZGew+K/CCBoAh9fdLaeY7A7uUlS5nWGOlICSVfOH0/xk4QlcXeGZYCJkEleA==",
+ "requires": {
+ "@vue/compiler-core": "3.2.35",
+ "@vue/shared": "3.2.35"
+ }
+ },
+ "@vue/compiler-sfc": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.35.tgz",
+ "integrity": "sha512-2wKQtnuHfwBFc7uV2Cmtms3Cc7u/u6kKJI3F+i0A+9xnuahK39cCMNJKHzI9x93Xai+uft64fDc5JSh8zDQBQA==",
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.35",
+ "@vue/compiler-dom": "3.2.35",
+ "@vue/compiler-ssr": "3.2.35",
+ "@vue/reactivity-transform": "3.2.35",
+ "@vue/shared": "3.2.35",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7",
+ "postcss": "^8.1.10",
+ "source-map": "^0.6.1"
+ }
+ },
+ "@vue/compiler-ssr": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.35.tgz",
+ "integrity": "sha512-dJyqB8fZbvVQEnWl5VGxkWHTqx0ERnZXXqInFzyOX8FpTEidmQbUSmDrXidea7bZTdeg6ly94kZFGPYXT29mgQ==",
+ "requires": {
+ "@vue/compiler-dom": "3.2.35",
+ "@vue/shared": "3.2.35"
+ }
+ },
+ "@vue/devtools-api": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.1.4.tgz",
+ "integrity": "sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ=="
+ },
+ "@vue/reactivity": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.35.tgz",
+ "integrity": "sha512-6j9N9R1SwHVcJas4YqAzwdRS/cgmj3Z9aUert5Mv1jk5B9H9ivN/zot/fgMUbseWXigkkmX60OsfRbz49o8kCw==",
+ "requires": {
+ "@vue/shared": "3.2.35"
+ }
+ },
+ "@vue/reactivity-transform": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.35.tgz",
+ "integrity": "sha512-VjdQU4nIrgsh1iPqAdYZufWgFqdH9fIl6ttO2PCFlLsrQl7b8BcuawM6moSBLF8damBzSNcqvbvQDBhsI3fyVQ==",
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.35",
+ "@vue/shared": "3.2.35",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7"
+ }
+ },
+ "@vue/runtime-core": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.35.tgz",
+ "integrity": "sha512-P8AeGPRGyIiYdOdvLc/7KR8VSdbUGG8Jxdx6Xlj5okEjyV9IYxeHRIQIoye85K0lZXBH4zuh1syD1mX+oZ0KqQ==",
+ "requires": {
+ "@vue/reactivity": "3.2.35",
+ "@vue/shared": "3.2.35"
+ }
+ },
+ "@vue/runtime-dom": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.35.tgz",
+ "integrity": "sha512-M5xrVJ/b0KqssjPQMdpwLp3KwzG1Tn2w/IrOptVqGY5c9fEBluIbm18AeO4Fr3YxfeyaPWm1rY8POrEso0UE3w==",
+ "requires": {
+ "@vue/runtime-core": "3.2.35",
+ "@vue/shared": "3.2.35",
+ "csstype": "^2.6.8"
+ }
+ },
+ "@vue/server-renderer": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.35.tgz",
+ "integrity": "sha512-ZMF8V+bZ0EIjSB7yzPEmDlxRDOIXj04iqG4Rw/H5rIuBCf0b7rNTleiOldlX5haG++zUq6uiL2AVp/A9uyz+cw==",
+ "requires": {
+ "@vue/compiler-ssr": "3.2.35",
+ "@vue/shared": "3.2.35"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.35.tgz",
+ "integrity": "sha512-/sxDqMcy0MsfQ3LQixKYDxIinDYNy1dXTsF2Am0pv0toImWabymFQ8cFmPJnPt+gh5ElKwwn7KzQcDbLHar60A=="
+ },
+ "csstype": {
+ "version": "2.6.20",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz",
+ "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
+ },
+ "esbuild": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.39.tgz",
+ "integrity": "sha512-2kKujuzvRWYtwvNjYDY444LQIA3TyJhJIX3Yo4+qkFlDDtGlSicWgeHVJqMUP/2sSfH10PGwfsj+O2ro1m10xQ==",
+ "dev": true,
+ "requires": {
+ "esbuild-android-64": "0.14.39",
+ "esbuild-android-arm64": "0.14.39",
+ "esbuild-darwin-64": "0.14.39",
+ "esbuild-darwin-arm64": "0.14.39",
+ "esbuild-freebsd-64": "0.14.39",
+ "esbuild-freebsd-arm64": "0.14.39",
+ "esbuild-linux-32": "0.14.39",
+ "esbuild-linux-64": "0.14.39",
+ "esbuild-linux-arm": "0.14.39",
+ "esbuild-linux-arm64": "0.14.39",
+ "esbuild-linux-mips64le": "0.14.39",
+ "esbuild-linux-ppc64le": "0.14.39",
+ "esbuild-linux-riscv64": "0.14.39",
+ "esbuild-linux-s390x": "0.14.39",
+ "esbuild-netbsd-64": "0.14.39",
+ "esbuild-openbsd-64": "0.14.39",
+ "esbuild-sunos-64": "0.14.39",
+ "esbuild-windows-32": "0.14.39",
+ "esbuild-windows-64": "0.14.39",
+ "esbuild-windows-arm64": "0.14.39"
+ }
+ },
+ "esbuild-android-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.39.tgz",
+ "integrity": "sha512-EJOu04p9WgZk0UoKTqLId9VnIsotmI/Z98EXrKURGb3LPNunkeffqQIkjS2cAvidh+OK5uVrXaIP229zK6GvhQ==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-android-arm64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.39.tgz",
+ "integrity": "sha512-+twajJqO7n3MrCz9e+2lVOnFplRsaGRwsq1KL/uOy7xK7QdRSprRQcObGDeDZUZsacD5gUkk6OiHiYp6RzU3CA==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-darwin-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.39.tgz",
+ "integrity": "sha512-ImT6eUw3kcGcHoUxEcdBpi6LfTRWaV6+qf32iYYAfwOeV+XaQ/Xp5XQIBiijLeo+LpGci9M0FVec09nUw41a5g==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-darwin-arm64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.39.tgz",
+ "integrity": "sha512-/fcQ5UhE05OiT+bW5v7/up1bDsnvaRZPJxXwzXsMRrr7rZqPa85vayrD723oWMT64dhrgWeA3FIneF8yER0XTw==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-freebsd-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.39.tgz",
+ "integrity": "sha512-oMNH8lJI4wtgN5oxuFP7BQ22vgB/e3Tl5Woehcd6i2r6F3TszpCnNl8wo2d/KvyQ4zvLvCWAlRciumhQg88+kQ==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-freebsd-arm64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.39.tgz",
+ "integrity": "sha512-1GHK7kwk57ukY2yI4ILWKJXaxfr+8HcM/r/JKCGCPziIVlL+Wi7RbJ2OzMcTKZ1HpvEqCTBT/J6cO4ZEwW4Ypg==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-32": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.39.tgz",
+ "integrity": "sha512-g97Sbb6g4zfRLIxHgW2pc393DjnkTRMeq3N1rmjDUABxpx8SjocK4jLen+/mq55G46eE2TA0MkJ4R3SpKMu7dg==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.39.tgz",
+ "integrity": "sha512-4tcgFDYWdI+UbNMGlua9u1Zhu0N5R6u9tl5WOM8aVnNX143JZoBZLpCuUr5lCKhnD0SCO+5gUyMfupGrHtfggQ==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-arm": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.39.tgz",
+ "integrity": "sha512-t0Hn1kWVx5UpCzAJkKRfHeYOLyFnXwYynIkK54/h3tbMweGI7dj400D1k0Vvtj2u1P+JTRT9tx3AjtLEMmfVBQ==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-arm64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.39.tgz",
+ "integrity": "sha512-23pc8MlD2D6Px1mV8GMglZlKgwgNKAO8gsgsLLcXWSs9lQsCYkIlMo/2Ycfo5JrDIbLdwgP8D2vpfH2KcBqrDQ==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-mips64le": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.39.tgz",
+ "integrity": "sha512-epwlYgVdbmkuRr5n4es3B+yDI0I2e/nxhKejT9H0OLxFAlMkeQZxSpxATpDc9m8NqRci6Kwyb/SfmD1koG2Zuw==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-ppc64le": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.39.tgz",
+ "integrity": "sha512-W/5ezaq+rQiQBThIjLMNjsuhPHg+ApVAdTz2LvcuesZFMsJoQAW2hutoyg47XxpWi7aEjJGrkS26qCJKhRn3QQ==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-riscv64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.39.tgz",
+ "integrity": "sha512-IS48xeokcCTKeQIOke2O0t9t14HPvwnZcy+5baG13Z1wxs9ZrC5ig5ypEQQh4QMKxURD5TpCLHw2W42CLuVZaA==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-s390x": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.39.tgz",
+ "integrity": "sha512-zEfunpqR8sMomqXhNTFEKDs+ik7HC01m3M60MsEjZOqaywHu5e5682fMsqOlZbesEAAaO9aAtRBsU7CHnSZWyA==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-netbsd-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.39.tgz",
+ "integrity": "sha512-Uo2suJBSIlrZCe4E0k75VDIFJWfZy+bOV6ih3T4MVMRJh1lHJ2UyGoaX4bOxomYN3t+IakHPyEoln1+qJ1qYaA==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-openbsd-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.39.tgz",
+ "integrity": "sha512-secQU+EpgUPpYjJe3OecoeGKVvRMLeKUxSMGHnK+aK5uQM3n1FPXNJzyz1LHFOo0WOyw+uoCxBYdM4O10oaCAA==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-sunos-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.39.tgz",
+ "integrity": "sha512-qHq0t5gePEDm2nqZLb+35p/qkaXVS7oIe32R0ECh2HOdiXXkj/1uQI9IRogGqKkK+QjDG+DhwiUw7QoHur/Rwg==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-windows-32": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.39.tgz",
+ "integrity": "sha512-XPjwp2OgtEX0JnOlTgT6E5txbRp6Uw54Isorm3CwOtloJazeIWXuiwK0ONJBVb/CGbiCpS7iP2UahGgd2p1x+Q==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-windows-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.39.tgz",
+ "integrity": "sha512-E2wm+5FwCcLpKsBHRw28bSYQw0Ikxb7zIMxw3OPAkiaQhLVr3dnVO8DofmbWhhf6b97bWzg37iSZ45ZDpLw7Ow==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-windows-arm64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.39.tgz",
+ "integrity": "sha512-sBZQz5D+Gd0EQ09tZRnz/PpVdLwvp/ufMtJ1iDFYddDaPpZXKqPyaxfYBLs3ueiaksQ26GGa7sci0OqFzNs7KA==",
+ "dev": true,
+ "optional": true
+ },
+ "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=="
+ },
+ "fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "optional": true
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "is-core-module": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
+ "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "requires": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "nanoid": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
+ },
+ "path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ },
+ "pinia": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.0.14.tgz",
+ "integrity": "sha512-0nPuZR4TetT/WcLN+feMSjWJku3SQU7dBbXC6uw+R6FLQJCsg+/0pzXyD82T1FmAYe0lsx+jnEDQ1BLgkRKlxA==",
+ "requires": {
+ "@vue/devtools-api": "^6.1.4",
+ "vue-demi": "*"
+ },
+ "dependencies": {
+ "vue-demi": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.12.5.tgz",
+ "integrity": "sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==",
+ "requires": {}
+ }
+ }
+ },
+ "postcss": {
+ "version": "8.4.14",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
+ "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
+ "requires": {
+ "nanoid": "^3.3.4",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "resolve": {
+ "version": "1.22.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
+ "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
+ "dev": true,
+ "requires": {
+ "is-core-module": "^2.8.1",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ }
+ },
+ "rollup": {
+ "version": "2.74.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.74.1.tgz",
+ "integrity": "sha512-K2zW7kV8Voua5eGkbnBtWYfMIhYhT9Pel2uhBk2WO5eMee161nPze/XRfvEQPFYz7KgrCCnmh2Wy0AMFLGGmMA==",
+ "dev": true,
+ "requires": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
+ },
+ "sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
+ },
+ "supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true
+ },
+ "vite": {
+ "version": "2.9.9",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.9.tgz",
+ "integrity": "sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew==",
+ "dev": true,
+ "requires": {
+ "esbuild": "^0.14.27",
+ "fsevents": "~2.3.2",
+ "postcss": "^8.4.13",
+ "resolve": "^1.22.0",
+ "rollup": "^2.59.0"
+ }
+ },
+ "vue": {
+ "version": "3.2.35",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.35.tgz",
+ "integrity": "sha512-mc/15B0Wjd/4JMMGOcXUQAeXfjyg8MImA2EVZucNdyDPJe1nXhMNbYXOEVPEGfk/mCeyszCzl44dSAhHhQVH8g==",
+ "requires": {
+ "@vue/compiler-dom": "3.2.35",
+ "@vue/compiler-sfc": "3.2.35",
+ "@vue/runtime-dom": "3.2.35",
+ "@vue/server-renderer": "3.2.35",
+ "@vue/shared": "3.2.35"
+ }
+ },
+ "vue-material-design-icons": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/vue-material-design-icons/-/vue-material-design-icons-5.0.0.tgz",
+ "integrity": "sha512-lYSJFW/TyQqmg7MvUbEB8ua1mwWy/v8qve7QJuA/UWUAXC4/yVUdAm4pg/sM9+k5n7VLckBv6ucOROuGBsGPDQ=="
+ },
+ "vue-router": {
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.0.15.tgz",
+ "integrity": "sha512-xa+pIN9ZqORdIW1MkN2+d9Ui2pCM1b/UMgwYUCZOiFYHAvz/slKKBDha8DLrh5aCG/RibtrpyhKjKOZ85tYyWg==",
+ "requires": {
+ "@vue/devtools-api": "^6.0.0"
+ }
+ },
+ "vue-star-rating": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/vue-star-rating/-/vue-star-rating-2.1.0.tgz",
+ "integrity": "sha512-LnhuQPi4hkRg7egKls+iqtL1U0RTN2gQkdLsJN7acyynMsSc9epHLzk8McJS+bR0OzfG98zNFq7mxAyuSb/okQ==",
+ "requires": {
+ "vue": "^3.0.0"
+ }
+ }
+ }
+}
diff --git a/daniel-valeriote/package.json b/daniel-valeriote/package.json
new file mode 100644
index 0000000..d66b330
--- /dev/null
+++ b/daniel-valeriote/package.json
@@ -0,0 +1,21 @@
+{
+ "name": "daniel-valeriote",
+ "private": true,
+ "version": "0.0.0",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "pinia": "^2.0.14",
+ "vue": "^3.2.25",
+ "vue-material-design-icons": "^5.0.0",
+ "vue-router": "^4.0.15",
+ "vue-star-rating": "^2.1.0"
+ },
+ "devDependencies": {
+ "@vitejs/plugin-vue": "^2.3.3",
+ "vite": "^2.9.9"
+ }
+}
diff --git a/daniel-valeriote/public/favicon.ico b/daniel-valeriote/public/favicon.ico
new file mode 100644
index 0000000..df36fcf
Binary files /dev/null and b/daniel-valeriote/public/favicon.ico differ
diff --git a/daniel-valeriote/src/App.vue b/daniel-valeriote/src/App.vue
new file mode 100644
index 0000000..b8bac30
--- /dev/null
+++ b/daniel-valeriote/src/App.vue
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
diff --git a/daniel-valeriote/src/components/CartProductItem.vue b/daniel-valeriote/src/components/CartProductItem.vue
new file mode 100644
index 0000000..988ad9e
--- /dev/null
+++ b/daniel-valeriote/src/components/CartProductItem.vue
@@ -0,0 +1,125 @@
+
+
+
+
+ {{product.title}}
+
+
{{product.count}}x R$ {{treatedPrice}}
+ Total: R$ {{total}}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/daniel-valeriote/src/components/DetailedProduct.vue b/daniel-valeriote/src/components/DetailedProduct.vue
new file mode 100644
index 0000000..347f941
--- /dev/null
+++ b/daniel-valeriote/src/components/DetailedProduct.vue
@@ -0,0 +1,116 @@
+
+
+
+
{{product.title}}
+
+
+
R${{treadedPrice}}
+
+
+
+
+ ({{product.rating.count}})
+
+
+
Adicionar ao carrinho
+
+
DESCRIÇÃO DO PRODUTO
+
{{product.description}}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/daniel-valeriote/src/components/FeedbackModal.vue b/daniel-valeriote/src/components/FeedbackModal.vue
new file mode 100644
index 0000000..4aa075f
--- /dev/null
+++ b/daniel-valeriote/src/components/FeedbackModal.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/daniel-valeriote/src/components/OrderDropdown.vue b/daniel-valeriote/src/components/OrderDropdown.vue
new file mode 100644
index 0000000..89b7469
--- /dev/null
+++ b/daniel-valeriote/src/components/OrderDropdown.vue
@@ -0,0 +1,76 @@
+
+
+
+ Ordenar por:
+
+
+
+ Menor preço
+ Maior preço
+ Melhor avaliação
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/daniel-valeriote/src/components/ProductItem.vue b/daniel-valeriote/src/components/ProductItem.vue
new file mode 100644
index 0000000..c8761ed
--- /dev/null
+++ b/daniel-valeriote/src/components/ProductItem.vue
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+ {{product.title}}
+
+
+
R${{treatedPrice}}
+
+
+
+
+
+
+
+ Adicionar ao carrinho
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/daniel-valeriote/src/components/ProductsList.vue b/daniel-valeriote/src/components/ProductsList.vue
new file mode 100644
index 0000000..7a418fa
--- /dev/null
+++ b/daniel-valeriote/src/components/ProductsList.vue
@@ -0,0 +1,41 @@
+
+
+ Produto adicionado ao carrinho de compras
+
+
+
+
+
\ No newline at end of file
diff --git a/daniel-valeriote/src/components/ProductsPageTemplate.vue b/daniel-valeriote/src/components/ProductsPageTemplate.vue
new file mode 100644
index 0000000..6e628b8
--- /dev/null
+++ b/daniel-valeriote/src/components/ProductsPageTemplate.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+ Produto adicionado ao carrinho.
+
+
+
\ No newline at end of file
diff --git a/daniel-valeriote/src/components/SearchInput.vue b/daniel-valeriote/src/components/SearchInput.vue
new file mode 100644
index 0000000..6228400
--- /dev/null
+++ b/daniel-valeriote/src/components/SearchInput.vue
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/daniel-valeriote/src/components/TheCartProductsList.vue b/daniel-valeriote/src/components/TheCartProductsList.vue
new file mode 100644
index 0000000..0811f13
--- /dev/null
+++ b/daniel-valeriote/src/components/TheCartProductsList.vue
@@ -0,0 +1,39 @@
+
+
+
+ Total: R${{totalPrice}}
+
+
+
+
+
+ Produto removido do carrinho de compras
+
+
+
+
+
\ No newline at end of file
diff --git a/daniel-valeriote/src/components/TheLoader.vue b/daniel-valeriote/src/components/TheLoader.vue
new file mode 100644
index 0000000..62ec287
--- /dev/null
+++ b/daniel-valeriote/src/components/TheLoader.vue
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/daniel-valeriote/src/components/TheNavbar.vue b/daniel-valeriote/src/components/TheNavbar.vue
new file mode 100644
index 0000000..5e77274
--- /dev/null
+++ b/daniel-valeriote/src/components/TheNavbar.vue
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/daniel-valeriote/src/main.js b/daniel-valeriote/src/main.js
new file mode 100644
index 0000000..72c2d81
--- /dev/null
+++ b/daniel-valeriote/src/main.js
@@ -0,0 +1,9 @@
+import { createApp } from 'vue';
+import App from './App.vue';
+import router from './router';
+import {createPinia} from 'pinia';
+
+createApp(App)
+ .use(router)
+ .use(createPinia())
+ .mount('#app');
\ No newline at end of file
diff --git a/daniel-valeriote/src/router/index.js b/daniel-valeriote/src/router/index.js
new file mode 100644
index 0000000..bb362c3
--- /dev/null
+++ b/daniel-valeriote/src/router/index.js
@@ -0,0 +1,29 @@
+import {createRouter, createWebHistory} from 'vue-router';
+import Home from '../views/Home.vue';
+import NotFound from '../views/NotFound.vue';
+
+import Electronics from '../views/Categories/Electronics.vue';
+import Jewelery from '../views/Categories/Jewelery.vue';
+import MensClothing from '../views/Categories/MensClothing.vue';
+import WomensClothing from '../views/Categories/WomensClothing.vue';
+import Product from '../views/Product.vue';
+import Cart from '../views/Cart.vue';
+const routes = [
+ {path:'/', name:'Home', component: Home, props: {urlPath: 'products'}, meta: {title: 'Início'}},
+
+ {path:'/categories/electronics', name:"Electronics", component: Electronics, props: {urlPath: 'products/category/electronics'}, meta: {title: 'Eletrônicos'}},
+ {path:'/categories/jewelery', name:"Jewelery", component: Jewelery, props: {urlPath: 'products/category/jewelery'}, meta: {title: 'Joalheria'}},
+ {path:"/categories/men's clothing", name:"Men's clothing", component: MensClothing, props: {urlPath: "products/category/men's clothing"}, meta: {title: 'Moda masculina'}},
+ {path:"/categories/women's clothing", name:"Women's clothing", component: WomensClothing, props: {urlPath: "products/category/women's clothing"}, meta: {title: 'Moda feminina'}},
+ {path:"/products/:id", name:"Detailed product page", component: Product, meta: {title: 'Página do produto'}},
+ {path:"/cart", name:"Cart content page", component: Cart, meta: {title: 'Meu Carrinho'}},
+
+ {path:'/:pathMatch(.*)*', name:'NotFound', component: NotFound}
+];
+
+const router = createRouter({
+ history: createWebHistory(),
+ routes
+});
+
+export default router;
\ No newline at end of file
diff --git a/daniel-valeriote/src/store/cart.js b/daniel-valeriote/src/store/cart.js
new file mode 100644
index 0000000..d7d8d81
--- /dev/null
+++ b/daniel-valeriote/src/store/cart.js
@@ -0,0 +1,36 @@
+import { defineStore } from "pinia";
+
+export const useCartStore = defineStore('cart', {
+ state() {
+ return { products: [] }
+ },
+ actions: {
+ addProduct(product) {
+ if(!product) return;
+ let isInCart = this.products.some(p => {
+ if(p.id != product.id) return false;
+ p.count++;
+ return true;
+ })
+ if(!isInCart) this.products.push({...product, count: 1}) ;
+ },
+ removeProduct(id) {
+ this.products.forEach((p, idx) => {
+ if(p.id == id) this.products.splice(idx, 1);
+ });
+ },
+ increaseProductCount(id) {
+ this.products.forEach(p => {
+ if(p.id != id) return;
+ p.count++
+ });
+ },
+ decreaseProductCount(id) {
+ this.products.forEach(p => {
+ if(p.id != id) return;
+ if(p.count == 1) return;
+ p.count--;
+ });
+ },
+ }
+})
\ No newline at end of file
diff --git a/daniel-valeriote/src/utils/fetchProducts.js b/daniel-valeriote/src/utils/fetchProducts.js
new file mode 100644
index 0000000..b537ce9
--- /dev/null
+++ b/daniel-valeriote/src/utils/fetchProducts.js
@@ -0,0 +1,6 @@
+const fetchProducts = async(url) => {
+ const resolve = await fetch(url);
+ const result = await resolve.json()
+ return result
+}
+export default fetchProducts;
\ No newline at end of file
diff --git a/daniel-valeriote/src/utils/filterProducts.js b/daniel-valeriote/src/utils/filterProducts.js
new file mode 100644
index 0000000..b7dde96
--- /dev/null
+++ b/daniel-valeriote/src/utils/filterProducts.js
@@ -0,0 +1,8 @@
+const filterProducts = (searchText, productsList) => {
+ if(!productsList) return [];
+ if(!searchText) return productsList;
+ searchText.trim();
+ return productsList.filter(p => p.title.toLowerCase().includes(searchText));
+}
+
+export default filterProducts
\ No newline at end of file
diff --git a/daniel-valeriote/src/utils/openModal.js b/daniel-valeriote/src/utils/openModal.js
new file mode 100644
index 0000000..e7c39d5
--- /dev/null
+++ b/daniel-valeriote/src/utils/openModal.js
@@ -0,0 +1,4 @@
+export default function openModal (modalRef, duration) {
+ modalRef.value = true;
+ if(duration && typeof(duration) === "number") setTimeout(() => isModalOpen.value = false, duration);
+}
\ No newline at end of file
diff --git a/daniel-valeriote/src/views/Cart.vue b/daniel-valeriote/src/views/Cart.vue
new file mode 100644
index 0000000..5d6562c
--- /dev/null
+++ b/daniel-valeriote/src/views/Cart.vue
@@ -0,0 +1,34 @@
+
+
+
Meu Carrinho
+
+ O carrinho está vazio.
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/daniel-valeriote/src/views/Categories/Electronics.vue b/daniel-valeriote/src/views/Categories/Electronics.vue
new file mode 100644
index 0000000..ae174b4
--- /dev/null
+++ b/daniel-valeriote/src/views/Categories/Electronics.vue
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/daniel-valeriote/src/views/Categories/Jewelery.vue b/daniel-valeriote/src/views/Categories/Jewelery.vue
new file mode 100644
index 0000000..ae174b4
--- /dev/null
+++ b/daniel-valeriote/src/views/Categories/Jewelery.vue
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/daniel-valeriote/src/views/Categories/MensClothing.vue b/daniel-valeriote/src/views/Categories/MensClothing.vue
new file mode 100644
index 0000000..ae174b4
--- /dev/null
+++ b/daniel-valeriote/src/views/Categories/MensClothing.vue
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/daniel-valeriote/src/views/Categories/WomensClothing.vue b/daniel-valeriote/src/views/Categories/WomensClothing.vue
new file mode 100644
index 0000000..ae174b4
--- /dev/null
+++ b/daniel-valeriote/src/views/Categories/WomensClothing.vue
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/daniel-valeriote/src/views/Home.vue b/daniel-valeriote/src/views/Home.vue
new file mode 100644
index 0000000..c916925
--- /dev/null
+++ b/daniel-valeriote/src/views/Home.vue
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/daniel-valeriote/src/views/NotFound.vue b/daniel-valeriote/src/views/NotFound.vue
new file mode 100644
index 0000000..278f670
--- /dev/null
+++ b/daniel-valeriote/src/views/NotFound.vue
@@ -0,0 +1,42 @@
+
+
+
404
+ {{customMessage || 'Página não encontrada.'}}
+
+ Volte para o início
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/daniel-valeriote/src/views/Product.vue b/daniel-valeriote/src/views/Product.vue
new file mode 100644
index 0000000..29f6b32
--- /dev/null
+++ b/daniel-valeriote/src/views/Product.vue
@@ -0,0 +1,56 @@
+
+
+
+
+ Produto adicionado ao carrinho de compras
+
+
+
+
+
\ No newline at end of file
diff --git a/daniel-valeriote/vite.config.js b/daniel-valeriote/vite.config.js
new file mode 100644
index 0000000..315212d
--- /dev/null
+++ b/daniel-valeriote/vite.config.js
@@ -0,0 +1,7 @@
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [vue()]
+})