Refs #363 add routing structure
parent
d9bd70b7e0
commit
e8e5d8eb5d
|
@ -25,6 +25,7 @@
|
|||
"src/assets"
|
||||
],
|
||||
"styles": [
|
||||
"src/custom-theme.scss",
|
||||
"src/styles.css"
|
||||
],
|
||||
"scripts": [],
|
||||
|
|
|
@ -9,15 +9,18 @@
|
|||
"version": "0.0.0",
|
||||
"dependencies": {
|
||||
"@angular/animations": "^17.3.0",
|
||||
"@angular/cdk": "^17.3.9",
|
||||
"@angular/common": "^17.3.0",
|
||||
"@angular/compiler": "^17.3.0",
|
||||
"@angular/core": "^17.3.0",
|
||||
"@angular/forms": "^17.3.0",
|
||||
"@angular/material": "^17.3.9",
|
||||
"@angular/platform-browser": "^17.3.0",
|
||||
"@angular/platform-browser-dynamic": "^17.3.0",
|
||||
"@angular/platform-server": "^17.3.0",
|
||||
"@angular/router": "^17.3.0",
|
||||
"@angular/ssr": "^17.3.7",
|
||||
"bootstrap": "^5.3.3",
|
||||
"express": "^4.18.2",
|
||||
"rxjs": "~7.8.0",
|
||||
"tslib": "^2.3.0",
|
||||
|
@ -274,6 +277,22 @@
|
|||
"@angular/core": "17.3.9"
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/cdk": {
|
||||
"version": "17.3.9",
|
||||
"resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-17.3.9.tgz",
|
||||
"integrity": "sha512-N/7Is+FkIIql5UEL/I+PV6THw+yXNCCGGpwimf/yaNgT9y1fHAmBWhDY0oQqFjCuD+kXl9gQL0ONfsl5Nlnk+w==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"parse5": "^7.1.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/common": "^17.0.0 || ^18.0.0",
|
||||
"@angular/core": "^17.0.0 || ^18.0.0",
|
||||
"rxjs": "^6.5.3 || ^7.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/cli": {
|
||||
"version": "17.3.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.3.7.tgz",
|
||||
|
@ -447,6 +466,70 @@
|
|||
"rxjs": "^6.5.3 || ^7.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/material": {
|
||||
"version": "17.3.9",
|
||||
"resolved": "https://registry.npmjs.org/@angular/material/-/material-17.3.9.tgz",
|
||||
"integrity": "sha512-iNLXGfTsXYQ7lX9UkU4ifb6+lVKjDFQJkWE8HmNWC3C2KXC9k15UefPKy4/sZUVzLE/yOBHPfNDwdhaJGlcu+g==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/auto-init": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/banner": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/button": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/card": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/checkbox": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/chips": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/circular-progress": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/data-table": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/density": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dialog": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/drawer": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/fab": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/floating-label": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/form-field": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/icon-button": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/image-list": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/layout-grid": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/line-ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/linear-progress": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/list": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/menu": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/menu-surface": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/notched-outline": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/radio": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/segmented-button": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/select": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/shape": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/slider": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/snackbar": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/switch": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tab": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tab-bar": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tab-indicator": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tab-scroller": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/textfield": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tooltip": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/top-app-bar": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/touch-target": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/animations": "^17.0.0 || ^18.0.0",
|
||||
"@angular/cdk": "17.3.9",
|
||||
"@angular/common": "^17.0.0 || ^18.0.0",
|
||||
"@angular/core": "^17.0.0 || ^18.0.0",
|
||||
"@angular/forms": "^17.0.0 || ^18.0.0",
|
||||
"@angular/platform-browser": "^17.0.0 || ^18.0.0",
|
||||
"rxjs": "^6.5.3 || ^7.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/platform-browser": {
|
||||
"version": "17.3.9",
|
||||
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.3.9.tgz",
|
||||
|
@ -2914,6 +2997,758 @@
|
|||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/animation": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/animation/-/animation-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-1GSJaPKef+7HRuV+HusVZHps64cmZuOItDbt40tjJVaikcaZvwmHlcTxRIqzcRoCdt5ZKHh3NoO7GB9Khg4Jnw==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/auto-init": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-t7ZGpRJ3ec0QDUO0nJu/SMgLW7qcuG2KqIsEYD1Ej8qhI2xpdR2ydSDQOkVEitXmKoGol1oq4nYSBjTlB65GqA==",
|
||||
"dependencies": {
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/banner": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/banner/-/banner-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-g9wBUZzYBizyBcBQXTIafnRUUPi7efU9gPJfzeGgkynXiccP/vh5XMmH+PBxl5v+4MlP/d4cZ2NUYoAN7UTqSA==",
|
||||
"dependencies": {
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/button": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/shape": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/base": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/base/-/base-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-I9KQOKXpLfJkP8MqZyr8wZIzdPHrwPjFvGd9zSK91/vPyE4hzHRJc/0njsh9g8Lm9PRYLbifXX+719uTbHxx+A==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/button": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/button/-/button-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-BHB7iyHgRVH+JF16+iscR+Qaic+p7LU1FOLgP8KucRlpF9tTwIxQA6mJwGRi5gUtcG+vyCmzVS+hIQ6DqT/7BA==",
|
||||
"dependencies": {
|
||||
"@material/density": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/focus-ring": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/shape": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/touch-target": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/card": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/card/-/card-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-kt7y9/IWOtJTr3Z/AoWJT3ZLN7CLlzXhx2udCLP9ootZU2bfGK0lzNwmo80bv/pJfrY9ihQKCtuGTtNxUy+vIw==",
|
||||
"dependencies": {
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/shape": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/checkbox": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-rURcrL5O1u6hzWR+dNgiQ/n89vk6tdmdP3mZgnxJx61q4I/k1yijKqNJSLrkXH7Rto3bM5NRKMOlgvMvVd7UMQ==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/density": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/focus-ring": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/touch-target": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/chips": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/chips/-/chips-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-AYAivV3GSk/T/nRIpH27sOHFPaSMrE3L0WYbnb5Wa93FgY8a0fbsFYtSH2QmtwnzXveg+B1zGTt7/xIIcynKdQ==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/checkbox": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/density": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/focus-ring": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/shape": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/touch-target": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"safevalues": "^0.3.4",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/circular-progress": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-DJrqCKb+LuGtjNvKl8XigvyK02y36GRkfhMUYTcJEi3PrOE00bwXtyj7ilhzEVshQiXg6AHGWXtf5UqwNrx3Ow==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/progress-indicator": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/data-table": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-/2WZsuBIq9z9RWYF5Jo6b7P6u0fwit+29/mN7rmAZ6akqUR54nXyNfoSNiyydMkzPlZZsep5KrSHododDhBZbA==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/checkbox": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/density": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/icon-button": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/linear-progress": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/list": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/menu": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/select": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/shape": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/touch-target": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/density": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/density/-/density-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-o9EXmGKVpiQ6mHhyV3oDDzc78Ow3E7v8dlaOhgaDSXgmqaE8v5sIlLNa/LKSyUga83/fpGk3QViSGXotpQx0jA==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/dialog": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-u0XpTlv1JqWC/bQ3DavJ1JguofTelLT2wloj59l3/1b60jv42JQ6Am7jU3I8/SIUB1MKaW7dYocXjDWtWJakLA==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/button": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/icon-button": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/shape": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/touch-target": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/dom": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/dom/-/dom-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-mQ1HT186GPQSkRg5S18i70typ5ZytfjL09R0gJ2Qg5/G+MLCGi7TAjZZSH65tuD/QGOjel4rDdWOTmYbPYV6HA==",
|
||||
"dependencies": {
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/drawer": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-qyO0W0KBftfH8dlLR0gVAgv7ZHNvU8ae11Ao6zJif/YxcvK4+gph1z8AO4H410YmC2kZiwpSKyxM1iQCCzbb4g==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/list": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/shape": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/elevation": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-tV6s4/pUBECedaI36Yj18KmRCk1vfue/JP/5yYRlFNnLMRVISePbZaKkn/BHXVf+26I3W879+XqIGlDVdmOoMA==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/fab": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/fab/-/fab-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-4h76QrzfZTcPdd+awDPZ4Q0YdSqsXQnS540TPtyXUJ/5G99V6VwGpjMPIxAsW0y+pmI9UkLL/srrMaJec+7r4Q==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/focus-ring": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/shape": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/touch-target": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/feature-targeting": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-SAjtxYh6YlKZriU83diDEQ7jNSP2MnxKsER0TvFeyG1vX/DWsUyYDOIJTOEa9K1N+fgJEBkNK8hY55QhQaspew==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/floating-label": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-0KMo5ijjYaEHPiZ2pCVIcbaTS2LycvH9zEhEMKwPPGssBCX7iz5ffYQFk7e5yrQand1r3jnQQgYfHAwtykArnQ==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/focus-ring": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/focus-ring/-/focus-ring-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-Jmg1nltq4J6S6A10EGMZnvufrvU3YTi+8R8ZD9lkSbun0Fm2TVdICQt/Auyi6An9zP66oQN6c31eqO6KfIPsDg==",
|
||||
"dependencies": {
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/form-field": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-fEPWgDQEPJ6WF7hNnIStxucHR9LE4DoDSMqCsGWS2Yu+NLZYLuCEecgR0UqQsl1EQdNRaFh8VH93KuxGd2hiPg==",
|
||||
"dependencies": {
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/icon-button": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-DcK7IL4ICY/DW+48YQZZs9g0U1kRaW0Wb0BxhvppDMYziHo/CTpFdle4gjyuTyRxPOdHQz5a97ru48Z9O4muTw==",
|
||||
"dependencies": {
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/density": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/focus-ring": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/touch-target": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/image-list": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-voMjG2p80XbjL1B2lmF65zO5gEgJOVKClLdqh4wbYzYfwY/SR9c8eLvlYG7DLdFaFBl/7gGxD8TvvZ329HUFPw==",
|
||||
"dependencies": {
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/shape": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/layout-grid": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-veDABLxMn2RmvfnUO2RUmC1OFfWr4cU+MrxKPoDD2hl3l3eDYv5fxws6r5T1JoSyXoaN+oEZpheS0+M9Ure8Pg==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/line-ripple": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-f60hVJhIU6I3/17Tqqzch1emUKEcfVVgHVqADbU14JD+oEIz429ZX9ksZ3VChoU3+eejFl+jVdZMLE/LrAuwpg==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/linear-progress": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-pRDEwPQielDiC9Sc5XhCXrGxP8wWOnAO8sQlMebfBYHYqy5hhiIzibezS8CSaW4MFQFyXmCmpmqWlbqGYRmiyg==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/progress-indicator": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/list": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/list/-/list-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-Is0NV91sJlXF5pOebYAtWLF4wU2MJDbYqztML/zQNENkQxDOvEXu3nWNb3YScMIYJJXvARO0Liur5K4yPagS1Q==",
|
||||
"dependencies": {
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/density": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/shape": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/menu": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/menu/-/menu-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-D11QU1dXqLbh5X1zKlEhS3QWh0b5BPNXlafc5MXfkdJHhOiieb7LC9hMJhbrHtj24FadJ7evaFW/T2ugJbJNnQ==",
|
||||
"dependencies": {
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/list": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/menu-surface": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/shape": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/menu-surface": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-7RZHvw0gbwppaAJ/Oh5SWmfAKJ62aw1IMB3+3MRwsb5PLoV666wInYa+zJfE4i7qBeOn904xqT2Nko5hY0ssrg==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/shape": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/notched-outline": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-Yg2usuKB2DKlKIBISbie9BFsOVuffF71xjbxPbybvqemxqUBd+bD5/t6H1fLE+F8/NCu5JMigho4ewUU+0RCiw==",
|
||||
"dependencies": {
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/floating-label": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/shape": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/progress-indicator": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-UPbDjE5CqT+SqTs0mNFG6uFEw7wBlgYmh+noSkQ6ty/EURm8lF125dmi4dv4kW0+octonMXqkGtAoZwLIHKf/w==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/radio": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/radio/-/radio-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-wR1X0Sr0KmQLu6+YOFKAI84G3L6psqd7Kys5kfb8WKBM36zxO5HQXC5nJm/Y0rdn22ixzsIz2GBo0MNU4V4k1A==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/density": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/focus-ring": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/touch-target": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/ripple": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-JqOsWM1f4aGdotP0rh1vZlPZTg6lZgh39FIYHFMfOwfhR+LAikUJ+37ciqZuewgzXB6iiRO6a8aUH6HR5SJYPg==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/rtl": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-UVf14qAtmPiaaZjuJtmN36HETyoKWmsZM/qn1L5ciR2URb8O035dFWnz4ZWFMmAYBno/L7JiZaCkPurv2ZNrGA==",
|
||||
"dependencies": {
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/segmented-button": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-LCnVRUSAhELTKI/9hSvyvIvQIpPpqF29BV+O9yM4WoNNmNWqTulvuiv7grHZl6Z+kJuxSg4BGbsPxxb9dXozPg==",
|
||||
"dependencies": {
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/touch-target": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/select": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/select/-/select-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-WioZtQEXRpglum0cMSzSqocnhsGRr+ZIhvKb3FlaNrTaK8H3Y4QA7rVjv3emRtrLOOjaT6/RiIaUMTo9AGzWQQ==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/density": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/floating-label": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/line-ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/list": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/menu": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/menu-surface": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/notched-outline": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/shape": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/shape": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/shape/-/shape-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-8z8l1W3+cymObunJoRhwFPKZ+FyECfJ4MJykNiaZq7XJFZkV6xNmqAVrrbQj93FtLsECn9g4PjjIomguVn/OEw==",
|
||||
"dependencies": {
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/slider": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/slider/-/slider-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-QU/WSaSWlLKQRqOhJrPgm29wqvvzRusMqwAcrCh1JTrCl+xwJ43q5WLDfjYhubeKtrEEgGu9tekkAiYfMG7EBw==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/snackbar": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-sm7EbVKddaXpT/aXAYBdPoN0k8yeg9+dprgBUkrdqGzWJAeCkxb4fv2B3He88YiCtvkTz2KLY4CThPQBSEsMFQ==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/button": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/icon-button": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/shape": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/switch": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/switch/-/switch-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-lEDJfRvkVyyeHWIBfoxYjJVl+WlEAE2kZ/+6OqB1FW0OV8ftTODZGhHRSzjVBA1/p4FPuhAtKtoK9jTpa4AZjA==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/density": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/focus-ring": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/shape": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
|
||||
"safevalues": "^0.3.4",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/tab": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/tab/-/tab-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-E1xGACImyCLurhnizyOTCgOiVezce4HlBFAI6YhJo/AyVwjN2Dtas4ZLQMvvWWqpyhITNkeYdOchwCC1mrz3AQ==",
|
||||
"dependencies": {
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/focus-ring": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tab-indicator": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/tab-bar": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-p1Asb2NzrcECvAQU3b2SYrpyJGyJLQWR+nXTYzDKE8WOpLIRCXap2audNqD7fvN/A20UJ1J8U01ptrvCkwJ4eA==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/density": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tab": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tab-indicator": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tab-scroller": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/tab-indicator": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-h9Td3MPqbs33spcPS7ecByRHraYgU4tNCZpZzZXw31RypjKvISDv/PS5wcA4RmWqNGih78T7xg4QIGsZg4Pk4w==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/tab-scroller": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-LFeYNjQpdXecwECd8UaqHYbhscDCwhGln5Yh+3ctvcEgvmDPNjhKn/DL3sWprWvG8NAhP6sHMrsGhQFVdCWtTg==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tab": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/textfield": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-AExmFvgE5nNF0UA4l2cSzPghtxSUQeeoyRjFLHLy+oAaE4eKZFrSy0zEpqPeWPQpEMDZk+6Y+6T3cOFYBeSvsw==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/density": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/floating-label": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/line-ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/notched-outline": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/shape": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/theme": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/theme/-/theme-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-hs45hJoE9yVnoVOcsN1jklyOa51U4lzWsEnQEuJTPOk2+0HqCQ0yv/q0InpSnm2i69fNSyZC60+8HADZGF8ugQ==",
|
||||
"dependencies": {
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/tokens": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-r9TDoicmcT7FhUXC4eYMFnt9TZsz0G8T3wXvkKncLppYvZ517gPyD/1+yhuGfGOxAzxTrM66S/oEc1fFE2q4hw==",
|
||||
"dependencies": {
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/tooltip": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/tooltip/-/tooltip-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-8qNk3pmPLTnam3XYC1sZuplQXW9xLn4Z4MI3D+U17Q7pfNZfoOugGr+d2cLA9yWAEjVJYB0mj8Yu86+udo4N9w==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/button": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/dom": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/shape": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"safevalues": "^0.3.4",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/top-app-bar": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-SARR5/ClYT4CLe9qAXakbr0i0cMY0V3V4pe3ElIJPfL2Z2c4wGR1mTR8m2LxU1MfGKK8aRoUdtfKaxWejp+eNA==",
|
||||
"dependencies": {
|
||||
"@material/animation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/shape": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/typography": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/touch-target": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-BJo/wFKHPYLGsRaIpd7vsQwKr02LtO2e89Psv0on/p0OephlNIgeB9dD9W+bQmaeZsZ6liKSKRl6wJWDiK71PA==",
|
||||
"dependencies": {
|
||||
"@material/base": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@material/typography": {
|
||||
"version": "15.0.0-canary.7f224ddd4.0",
|
||||
"resolved": "https://registry.npmjs.org/@material/typography/-/typography-15.0.0-canary.7f224ddd4.0.tgz",
|
||||
"integrity": "sha512-kBaZeCGD50iq1DeRRH5OM5Jl7Gdk+/NOfKArkY4ksBZvJiStJ7ACAhpvb8MEGm4s3jvDInQFLsDq3hL+SA79sQ==",
|
||||
"dependencies": {
|
||||
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
|
||||
"@material/theme": "15.0.0-canary.7f224ddd4.0",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ngtools/webpack": {
|
||||
"version": "17.3.7",
|
||||
"resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.3.7.tgz",
|
||||
|
@ -3256,6 +4091,16 @@
|
|||
"node": ">=14"
|
||||
}
|
||||
},
|
||||
"node_modules/@popperjs/core": {
|
||||
"version": "2.11.8",
|
||||
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
|
||||
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
|
||||
"peer": true,
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/popperjs"
|
||||
}
|
||||
},
|
||||
"node_modules/@rollup/rollup-android-arm-eabi": {
|
||||
"version": "4.17.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz",
|
||||
|
@ -4520,6 +5365,24 @@
|
|||
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
|
||||
"integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
|
||||
},
|
||||
"node_modules/bootstrap": {
|
||||
"version": "5.3.3",
|
||||
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz",
|
||||
"integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/twbs"
|
||||
},
|
||||
{
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/bootstrap"
|
||||
}
|
||||
],
|
||||
"peerDependencies": {
|
||||
"@popperjs/core": "^2.11.8"
|
||||
}
|
||||
},
|
||||
"node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
|
@ -9189,7 +10052,7 @@
|
|||
"version": "7.1.2",
|
||||
"resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
|
||||
"integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
|
||||
"dev": true,
|
||||
"devOptional": true,
|
||||
"dependencies": {
|
||||
"entities": "^4.4.0"
|
||||
},
|
||||
|
@ -10137,6 +11000,11 @@
|
|||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||
},
|
||||
"node_modules/safevalues": {
|
||||
"version": "0.3.4",
|
||||
"resolved": "https://registry.npmjs.org/safevalues/-/safevalues-0.3.4.tgz",
|
||||
"integrity": "sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw=="
|
||||
},
|
||||
"node_modules/sass": {
|
||||
"version": "1.71.1",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz",
|
||||
|
|
|
@ -12,15 +12,18 @@
|
|||
"private": true,
|
||||
"dependencies": {
|
||||
"@angular/animations": "^17.3.0",
|
||||
"@angular/cdk": "^17.3.9",
|
||||
"@angular/common": "^17.3.0",
|
||||
"@angular/compiler": "^17.3.0",
|
||||
"@angular/core": "^17.3.0",
|
||||
"@angular/forms": "^17.3.0",
|
||||
"@angular/material": "^17.3.9",
|
||||
"@angular/platform-browser": "^17.3.0",
|
||||
"@angular/platform-browser-dynamic": "^17.3.0",
|
||||
"@angular/platform-server": "^17.3.0",
|
||||
"@angular/router": "^17.3.0",
|
||||
"@angular/ssr": "^17.3.7",
|
||||
"bootstrap": "^5.3.3",
|
||||
"express": "^4.18.2",
|
||||
"rxjs": "~7.8.0",
|
||||
"tslib": "^2.3.0",
|
||||
|
|
|
@ -1,7 +1 @@
|
|||
<main class="main">
|
||||
<div class="content">
|
||||
<h3>ogWebconsole base project is running!</h3>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<router-outlet />
|
||||
<router-outlet />
|
|
@ -1,10 +1,15 @@
|
|||
import { Component } from '@angular/core';
|
||||
import { RouterOutlet } from '@angular/router';
|
||||
import { SidebarComponent } from './components/layout/sidebar/sidebar.component';
|
||||
import { FooterComponent } from './components/layout/footer/footer.component';
|
||||
import { HeaderComponent } from './components/layout/header/header.component';
|
||||
import { FormsModule } from '@angular/forms';
|
||||
import { HttpClientModule } from '@angular/common/http';
|
||||
|
||||
@Component({
|
||||
selector: 'app-root',
|
||||
standalone: true,
|
||||
imports: [RouterOutlet],
|
||||
imports: [RouterOutlet, SidebarComponent, FooterComponent, HeaderComponent, FormsModule, HttpClientModule],
|
||||
templateUrl: './app.component.html',
|
||||
styleUrl: './app.component.css'
|
||||
})
|
||||
|
|
|
@ -3,7 +3,9 @@ import { provideRouter } from '@angular/router';
|
|||
|
||||
import { routes } from './app.routes';
|
||||
import { provideClientHydration } from '@angular/platform-browser';
|
||||
import { provideAnimationsAsync } from '@angular/platform-browser/animations/async';
|
||||
import { provideHttpClient } from '@angular/common/http';
|
||||
|
||||
export const appConfig: ApplicationConfig = {
|
||||
providers: [provideRouter(routes), provideClientHydration()]
|
||||
providers: [provideRouter(routes), provideClientHydration(), provideAnimationsAsync(), provideHttpClient(),]
|
||||
};
|
||||
|
|
|
@ -1,3 +1,30 @@
|
|||
import { Routes } from '@angular/router';
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule, Routes } from '@angular/router';
|
||||
import { MainLayoutComponent } from './components/layout/main-layout/main-layout.component';
|
||||
import { AuthLayoutComponent } from './components/layout/auth-layout/auth-layout.component';
|
||||
import { LoginComponent } from './components/login/login.component';
|
||||
import { DashboardComponent } from './components/dashboard/dashboard.component';
|
||||
import { PageNotFoundComponent } from './components/page-not-found/page-not-found.component';
|
||||
import {AuthGuard } from './auth.guard';
|
||||
|
||||
export const routes: Routes = [];
|
||||
export const routes: Routes = [
|
||||
{ path: '', redirectTo: 'auth/login', pathMatch: 'full' },
|
||||
{
|
||||
path: '',
|
||||
component: MainLayoutComponent,
|
||||
pathMatch: 'full', canActivate: [AuthGuard],
|
||||
children: [
|
||||
{ path: 'dashboard', component: DashboardComponent },
|
||||
// otras rutas que usan el MainLayoutComponent
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'auth',
|
||||
component: AuthLayoutComponent,
|
||||
children: [
|
||||
{ path: 'login', component: LoginComponent },
|
||||
// otras rutas de autenticación
|
||||
],
|
||||
},
|
||||
{ path: '**', component: PageNotFoundComponent },
|
||||
];
|
|
@ -0,0 +1,17 @@
|
|||
import { TestBed } from '@angular/core/testing';
|
||||
import { CanActivateFn } from '@angular/router';
|
||||
|
||||
import { authGuard } from './auth.guard';
|
||||
|
||||
describe('authGuard', () => {
|
||||
const executeGuard: CanActivateFn = (...guardParameters) =>
|
||||
TestBed.runInInjectionContext(() => authGuard(...guardParameters));
|
||||
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({});
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(executeGuard).toBeTruthy();
|
||||
});
|
||||
});
|
|
@ -0,0 +1,24 @@
|
|||
import { Injectable } from '@angular/core';
|
||||
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router';
|
||||
import { Observable } from 'rxjs';
|
||||
import { AuthService } from './auth.service';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class AuthGuard implements CanActivate {
|
||||
|
||||
constructor(private authService: AuthService, private router: Router) { }
|
||||
|
||||
canActivate(
|
||||
next: ActivatedRouteSnapshot,
|
||||
state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
|
||||
const token = this.authService.getToken();
|
||||
if (token) {
|
||||
return true;
|
||||
} else {
|
||||
this.router.navigate(['/login']);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { AuthService } from './auth.service';
|
||||
|
||||
describe('AuthService', () => {
|
||||
let service: AuthService;
|
||||
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({});
|
||||
service = TestBed.inject(AuthService);
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(service).toBeTruthy();
|
||||
});
|
||||
});
|
|
@ -0,0 +1,33 @@
|
|||
import { Injectable } from '@angular/core';
|
||||
import { HttpClient } from '@angular/common/http';
|
||||
import { Observable } from 'rxjs';
|
||||
import { tap } from 'rxjs/operators';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class AuthService {
|
||||
private apiUrl = 'http://127.0.0.1:8080/auth/login'; // Reemplaza con la URL de tu API
|
||||
|
||||
constructor(private http: HttpClient) { }
|
||||
|
||||
login(username: string, password: string): Observable<any> {
|
||||
return this.http.post<any>(this.apiUrl, { username, password }).pipe(
|
||||
tap(response => {
|
||||
if (response.token) {
|
||||
localStorage.setItem('token', response.token);
|
||||
localStorage.setItem('refresh_token', response.refresh_token);
|
||||
}
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
logout(): void {
|
||||
localStorage.removeItem('token');
|
||||
localStorage.removeItem('refresh_token');
|
||||
}
|
||||
|
||||
getToken(): string | null {
|
||||
return localStorage.getItem('token');
|
||||
}
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
<p>dashboard works!</p>
|
|
@ -0,0 +1,23 @@
|
|||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { DashboardComponent } from './dashboard.component';
|
||||
|
||||
describe('DashboardComponent', () => {
|
||||
let component: DashboardComponent;
|
||||
let fixture: ComponentFixture<DashboardComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [DashboardComponent]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(DashboardComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
|
@ -0,0 +1,12 @@
|
|||
import { Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-dashboard',
|
||||
standalone: true,
|
||||
imports: [],
|
||||
templateUrl: './dashboard.component.html',
|
||||
styleUrl: './dashboard.component.css'
|
||||
})
|
||||
export class DashboardComponent {
|
||||
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
<div class="auth-wrapper">
|
||||
<div class="auth-content">
|
||||
<router-outlet></router-outlet>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { AuthLayoutComponent } from './auth-layout.component';
|
||||
|
||||
describe('AuthLayoutComponent', () => {
|
||||
let component: AuthLayoutComponent;
|
||||
let fixture: ComponentFixture<AuthLayoutComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [AuthLayoutComponent]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(AuthLayoutComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
|
@ -0,0 +1,14 @@
|
|||
import { HttpClientModule } from '@angular/common/http';
|
||||
import { Component } from '@angular/core';
|
||||
import { RouterOutlet } from '@angular/router';
|
||||
|
||||
@Component({
|
||||
selector: 'app-auth-layout',
|
||||
standalone: true,
|
||||
imports: [RouterOutlet, HttpClientModule],
|
||||
templateUrl: './auth-layout.component.html',
|
||||
styleUrl: './auth-layout.component.css'
|
||||
})
|
||||
export class AuthLayoutComponent {
|
||||
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
:host{
|
||||
display: block;
|
||||
background-color: blueviolet;
|
||||
grid-area: footer;
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
<p>footer works!</p>
|
|
@ -0,0 +1,23 @@
|
|||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { FooterComponent } from './footer.component';
|
||||
|
||||
describe('FooterComponent', () => {
|
||||
let component: FooterComponent;
|
||||
let fixture: ComponentFixture<FooterComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [FooterComponent]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(FooterComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
|
@ -0,0 +1,12 @@
|
|||
import { Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-footer',
|
||||
standalone: true,
|
||||
imports: [],
|
||||
templateUrl: './footer.component.html',
|
||||
styleUrl: './footer.component.css'
|
||||
})
|
||||
export class FooterComponent {
|
||||
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
:host{
|
||||
display: block;
|
||||
background-color: red;
|
||||
grid-area: header;
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
<p>header works!</p>
|
|
@ -0,0 +1,23 @@
|
|||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { HeaderComponent } from './header.component';
|
||||
|
||||
describe('HeaderComponent', () => {
|
||||
let component: HeaderComponent;
|
||||
let fixture: ComponentFixture<HeaderComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [HeaderComponent]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(HeaderComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
|
@ -0,0 +1,12 @@
|
|||
import { Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-header',
|
||||
standalone: true,
|
||||
imports: [],
|
||||
templateUrl: './header.component.html',
|
||||
styleUrl: './header.component.css'
|
||||
})
|
||||
export class HeaderComponent {
|
||||
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
:host{
|
||||
width: 100%;
|
||||
display: grid;
|
||||
grid-template-areas:
|
||||
"sidebar header"
|
||||
"sidebar content"
|
||||
"sidebar footer";
|
||||
grid-template-columns: 120px 1fr;
|
||||
height: 100%;
|
||||
}
|
||||
.content-wrapper{
|
||||
display: block;
|
||||
background-color: gold;
|
||||
grid-area: content;
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
<app-sidebar></app-sidebar>
|
||||
<app-header></app-header>
|
||||
<app-footer></app-footer>
|
||||
<div class="content-wrapper">
|
||||
<div class="content">
|
||||
<router-outlet />
|
||||
</div>
|
|
@ -0,0 +1,23 @@
|
|||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { MainLayoutComponent } from './main-layout.component';
|
||||
|
||||
describe('MainLayoutComponent', () => {
|
||||
let component: MainLayoutComponent;
|
||||
let fixture: ComponentFixture<MainLayoutComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [MainLayoutComponent]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(MainLayoutComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
|
@ -0,0 +1,16 @@
|
|||
import { Component } from '@angular/core';
|
||||
import { SidebarComponent } from '../sidebar/sidebar.component';
|
||||
import { FooterComponent } from '../footer/footer.component';
|
||||
import { HeaderComponent } from '../header/header.component';
|
||||
import { RouterOutlet } from '@angular/router';
|
||||
|
||||
@Component({
|
||||
selector: 'app-main-layout',
|
||||
standalone: true,
|
||||
imports: [SidebarComponent, FooterComponent, HeaderComponent, RouterOutlet],
|
||||
templateUrl: './main-layout.component.html',
|
||||
styleUrl: './main-layout.component.css'
|
||||
})
|
||||
export class MainLayoutComponent {
|
||||
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
:host{
|
||||
display: block;
|
||||
background-color: rgb(0, 128, 255);
|
||||
grid-area: sidebar;
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
<p>sidebar works!</p>
|
|
@ -0,0 +1,23 @@
|
|||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { SidebarComponent } from './sidebar.component';
|
||||
|
||||
describe('SidebarComponent', () => {
|
||||
let component: SidebarComponent;
|
||||
let fixture: ComponentFixture<SidebarComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [SidebarComponent]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(SidebarComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
|
@ -0,0 +1,12 @@
|
|||
import { Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-sidebar',
|
||||
standalone: true,
|
||||
imports: [],
|
||||
templateUrl: './sidebar.component.html',
|
||||
styleUrl: './sidebar.component.css'
|
||||
})
|
||||
export class SidebarComponent {
|
||||
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
<div>
|
||||
<h2>Login</h2>
|
||||
<form (ngSubmit)="login()">
|
||||
<div>
|
||||
<label for="username">Username:</label>
|
||||
<input (ngModel)="username" type="text" id="username" name="username" required>
|
||||
</div>
|
||||
<div>
|
||||
<label for="password">Password:</label>
|
||||
<input (ngModel)="password" type="password" id="password" name="password" required>
|
||||
</div>
|
||||
<button type="submit">Login</button>
|
||||
</form>
|
||||
</div>
|
|
@ -0,0 +1,23 @@
|
|||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { LoginComponent } from './login.component';
|
||||
|
||||
describe('LoginComponent', () => {
|
||||
let component: LoginComponent;
|
||||
let fixture: ComponentFixture<LoginComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [LoginComponent]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(LoginComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
|
@ -0,0 +1,28 @@
|
|||
import { Component } from '@angular/core';
|
||||
import { AuthService } from '../../auth.service';
|
||||
import { Router } from '@angular/router';
|
||||
|
||||
|
||||
@Component({
|
||||
selector: 'app-login',
|
||||
templateUrl: './login.component.html',
|
||||
styleUrls: ['./login.component.css'],
|
||||
})
|
||||
export class LoginComponent {
|
||||
username: string = '';
|
||||
password: string = '';
|
||||
|
||||
constructor(private authService: AuthService, private router: Router) { }
|
||||
|
||||
login(): void {
|
||||
this.authService.login(this.username, this.password).subscribe(
|
||||
response => {
|
||||
console.log('Login successful');
|
||||
this.router.navigate(['/']);
|
||||
},
|
||||
error => {
|
||||
console.error('Login failed', error);
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
<p>page-not-found works!</p>
|
|
@ -0,0 +1,23 @@
|
|||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { PageNotFoundComponent } from './page-not-found.component';
|
||||
|
||||
describe('PageNotFoundComponent', () => {
|
||||
let component: PageNotFoundComponent;
|
||||
let fixture: ComponentFixture<PageNotFoundComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [PageNotFoundComponent]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(PageNotFoundComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
|
@ -0,0 +1,12 @@
|
|||
import { Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-page-not-found',
|
||||
standalone: true,
|
||||
imports: [],
|
||||
templateUrl: './page-not-found.component.html',
|
||||
styleUrl: './page-not-found.component.css'
|
||||
})
|
||||
export class PageNotFoundComponent {
|
||||
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
|
||||
// Custom Theming for Angular Material
|
||||
// For more information: https://material.angular.io/guide/theming
|
||||
@use '@angular/material' as mat;
|
||||
// Plus imports for other components in your app.
|
||||
|
||||
// Include the common styles for Angular Material. We include this here so that you only
|
||||
// have to load a single css file for Angular Material in your app.
|
||||
// Be sure that you only ever include this mixin once!
|
||||
@include mat.core();
|
||||
|
||||
// Define the palettes for your theme using the Material Design palettes available in palette.scss
|
||||
// (imported above). For each palette, you can optionally specify a default, lighter, and darker
|
||||
// hue. Available color palettes: https://material.io/design/color/
|
||||
$ogWebconsole-primary: mat.define-palette(mat.$indigo-palette);
|
||||
$ogWebconsole-accent: mat.define-palette(mat.$pink-palette, A200, A100, A400);
|
||||
|
||||
// The warn palette is optional (defaults to red).
|
||||
$ogWebconsole-warn: mat.define-palette(mat.$red-palette);
|
||||
|
||||
// Create the theme object. A theme consists of configurations for individual
|
||||
// theming systems such as "color" or "typography".
|
||||
$ogWebconsole-theme: mat.define-light-theme((
|
||||
color: (
|
||||
primary: $ogWebconsole-primary,
|
||||
accent: $ogWebconsole-accent,
|
||||
warn: $ogWebconsole-warn,
|
||||
),
|
||||
typography: mat.define-typography-config(),
|
||||
density: 0
|
||||
));
|
||||
|
||||
// Include theme styles for core and each component used in your app.
|
||||
// Alternatively, you can import and @include the theme mixins for each component
|
||||
// that you are using.
|
||||
@include mat.all-component-themes($ogWebconsole-theme);
|
||||
|
|
@ -6,8 +6,10 @@
|
|||
<base href="/">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" type="image/x-icon" href="favicon.ico">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<body class="mat-typography">
|
||||
<app-root></app-root>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1 +1,7 @@
|
|||
/* You can add global styles to this file, and also import other style files */
|
||||
|
||||
html, body { height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: 'Roboto', sans-serif;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue