├── README.md └── vinovest ├── .browserslistrc ├── .editorconfig ├── .gitignore ├── .vscode ├── extensions.json ├── launch.json └── tasks.json ├── README.md ├── angular.json ├── karma.conf.js ├── package-lock.json ├── package.json ├── src ├── app │ ├── app-routing.module.ts │ ├── app.component.html │ ├── app.component.scss │ ├── app.component.spec.ts │ ├── app.component.ts │ ├── app.module.ts │ ├── components │ │ ├── about-us │ │ │ ├── leveraging │ │ │ │ ├── leveraging.component.html │ │ │ │ ├── leveraging.component.scss │ │ │ │ ├── leveraging.component.spec.ts │ │ │ │ └── leveraging.component.ts │ │ │ ├── member-card │ │ │ │ ├── member-card.component.html │ │ │ │ ├── member-card.component.scss │ │ │ │ ├── member-card.component.spec.ts │ │ │ │ └── member-card.component.ts │ │ │ ├── team │ │ │ │ ├── team.component.html │ │ │ │ ├── team.component.scss │ │ │ │ ├── team.component.spec.ts │ │ │ │ └── team.component.ts │ │ │ └── title │ │ │ │ ├── title.component.html │ │ │ │ ├── title.component.scss │ │ │ │ ├── title.component.spec.ts │ │ │ │ └── title.component.ts │ │ ├── home │ │ │ ├── hero │ │ │ │ ├── hero.component.html │ │ │ │ ├── hero.component.scss │ │ │ │ ├── hero.component.spec.ts │ │ │ │ └── hero.component.ts │ │ │ ├── history-card │ │ │ │ ├── history-card.component.html │ │ │ │ ├── history-card.component.scss │ │ │ │ ├── history-card.component.spec.ts │ │ │ │ └── history-card.component.ts │ │ │ ├── how-it-works │ │ │ │ ├── how-it-works.component.html │ │ │ │ ├── how-it-works.component.scss │ │ │ │ ├── how-it-works.component.spec.ts │ │ │ │ └── how-it-works.component.ts │ │ │ ├── portfolio-image-card │ │ │ │ ├── portfolio-image-card.component.html │ │ │ │ ├── portfolio-image-card.component.scss │ │ │ │ ├── portfolio-image-card.component.spec.ts │ │ │ │ └── portfolio-image-card.component.ts │ │ │ └── portfolio │ │ │ │ ├── portfolio.component.html │ │ │ │ ├── portfolio.component.scss │ │ │ │ ├── portfolio.component.spec.ts │ │ │ │ └── portfolio.component.ts │ │ └── layouts │ │ │ ├── footer │ │ │ ├── footer-list │ │ │ │ ├── footer-list.component.html │ │ │ │ ├── footer-list.component.scss │ │ │ │ ├── footer-list.component.spec.ts │ │ │ │ └── footer-list.component.ts │ │ │ ├── footer.component.html │ │ │ ├── footer.component.scss │ │ │ ├── footer.component.spec.ts │ │ │ ├── footer.component.ts │ │ │ └── wine-invest-card │ │ │ │ ├── wine-invest-card.component.html │ │ │ │ ├── wine-invest-card.component.scss │ │ │ │ ├── wine-invest-card.component.spec.ts │ │ │ │ └── wine-invest-card.component.ts │ │ │ └── header │ │ │ ├── header.component.html │ │ │ ├── header.component.scss │ │ │ ├── header.component.spec.ts │ │ │ └── header.component.ts │ ├── directives │ │ ├── intersect │ │ │ └── intersect-img.directive.ts │ │ └── scrollReveal │ │ │ ├── scroll-reveal.directive.spec.ts │ │ │ └── scroll-reveal.directive.ts │ ├── page │ │ ├── about-us │ │ │ ├── about-us.component.html │ │ │ ├── about-us.component.scss │ │ │ ├── about-us.component.spec.ts │ │ │ ├── about-us.component.ts │ │ │ └── members.ts │ │ └── home │ │ │ ├── home.component.html │ │ │ ├── home.component.scss │ │ │ ├── home.component.spec.ts │ │ │ └── home.component.ts │ ├── shared │ │ └── ui │ │ │ ├── animation-btn │ │ │ ├── animation-btn.component.html │ │ │ ├── animation-btn.component.scss │ │ │ ├── animation-btn.component.spec.ts │ │ │ └── animation-btn.component.ts │ │ │ ├── email-btn │ │ │ ├── email-btn.component.html │ │ │ ├── email-btn.component.scss │ │ │ ├── email-btn.component.spec.ts │ │ │ └── email-btn.component.ts │ │ │ ├── learn-more-btn │ │ │ ├── learn-more-btn.component.html │ │ │ ├── learn-more-btn.component.scss │ │ │ ├── learn-more-btn.component.spec.ts │ │ │ └── learn-more-btn.component.ts │ │ │ └── notransform-btn │ │ │ ├── notransform-btn.component.html │ │ │ ├── notransform-btn.component.scss │ │ │ ├── notransform-btn.component.spec.ts │ │ │ └── notransform-btn.component.ts │ └── static │ │ ├── footer │ │ ├── followIcons.ts │ │ ├── footerList.ts │ │ └── recentArticles.ts │ │ ├── header │ │ ├── mainHeader.ts │ │ └── subHeader.ts │ │ └── home │ │ └── index.ts ├── assets │ ├── .gitkeep │ ├── BBB.png │ ├── appStore.svg │ ├── arrow.svg │ ├── arrowUp.svg │ ├── arrow_2.svg │ ├── businessInsider.svg │ ├── council_members │ │ ├── cj.webp │ │ ├── dlynn.webp │ │ ├── dustin.jpg │ │ ├── jane.jpg │ │ ├── jennifer.webp │ │ └── jonathan.jpg │ ├── end_wine.svg │ ├── facebook.svg │ ├── fonts │ │ ├── FavoritMonoStd-Medium.otf │ │ ├── FavoritStd-Medium.otf │ │ ├── RoslindaleDisplayCondensed-Bold.otf │ │ ├── Vinovest-Medium.otf │ │ └── Vinovest-Mono.otf │ ├── forbes.svg │ ├── googlePlay.svg │ ├── hero.webp │ ├── home │ │ ├── advancedInsights.svg │ │ ├── anthony.png │ │ ├── articleInStocks.jpg │ │ ├── articleInWine.webp │ │ ├── articleIncomplete.webp │ │ ├── balancedInvesting.webp │ │ ├── bonus.jpg │ │ ├── climens2016.webp │ │ ├── curatedPortfolio.svg │ │ ├── david.png │ │ ├── diversityPortfolio.svg │ │ ├── dustinWilson.webp │ │ ├── grandCru.webp │ │ ├── hassleFree.svg │ │ ├── hayk.png │ │ ├── howitworks.webp │ │ ├── janeLopes.jpg │ │ ├── man.svg │ │ ├── mckenna.webp │ │ ├── phone.svg │ │ ├── plus.webp │ │ ├── premium.webp │ │ ├── pricing.svg │ │ ├── reader.svg │ │ ├── returns.svg │ │ ├── starter.webp │ │ ├── totalAccValue.webp │ │ ├── woman.svg │ │ └── woman2.svg │ ├── home_wineImg.webp │ ├── instagram.svg │ ├── leveraging.svg │ ├── linkedin.svg │ ├── logo.svg │ ├── logo_light.svg │ ├── start_wine.svg │ ├── team_members │ │ ├── adam.webp │ │ ├── anthony.jfif │ │ ├── arman.webp │ │ ├── austin.webp │ │ ├── brent.webp │ │ ├── charlie.webp │ │ ├── conrad.webp │ │ ├── elaine.webp │ │ ├── fabrice.webp │ │ ├── hunter.webp │ │ ├── jason.webp │ │ ├── john.webp │ │ ├── juan.webp │ │ ├── karl.webp │ │ ├── kelly.webp │ │ ├── kirsti.webp │ │ ├── laura.webp │ │ ├── lauren.webp │ │ ├── lilian.png │ │ ├── liz.webp │ │ ├── micah.webp │ │ ├── olivier.webp │ │ ├── robyn.webp │ │ └── volodymyr.webp │ ├── techCrunch.svg │ ├── twitter.svg │ ├── wineBackground.webp │ ├── woman.png │ └── yahoo.svg ├── environments │ ├── environment.prod.ts │ └── environment.ts ├── favicon.ico ├── index.html ├── main.ts ├── polyfills.ts ├── styles.scss └── test.ts ├── tsconfig.app.json ├── tsconfig.json └── tsconfig.spec.json /README.md: -------------------------------------------------------------------------------- 1 | # Angular -------------------------------------------------------------------------------- /vinovest/.browserslistrc: -------------------------------------------------------------------------------- 1 | # This file is used by the build system to adjust CSS and JS output to support the specified browsers below. 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | 5 | # For the full list of supported browsers by the Angular framework, please see: 6 | # https://angular.io/guide/browser-support 7 | 8 | # You can see what browsers were selected by your queries by running: 9 | # npx browserslist 10 | 11 | last 1 Chrome version 12 | last 1 Firefox version 13 | last 2 Edge major versions 14 | last 2 Safari major versions 15 | last 2 iOS major versions 16 | Firefox ESR 17 | -------------------------------------------------------------------------------- /vinovest/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.ts] 12 | quote_type = single 13 | 14 | [*.md] 15 | max_line_length = off 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /vinovest/.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | # Only exists if Bazel was run 8 | /bazel-out 9 | 10 | # dependencies 11 | /node_modules 12 | 13 | # profiling files 14 | chrome-profiler-events*.json 15 | 16 | # IDEs and editors 17 | /.idea 18 | .project 19 | .classpath 20 | .c9/ 21 | *.launch 22 | .settings/ 23 | *.sublime-workspace 24 | 25 | # IDE - VSCode 26 | .vscode/* 27 | !.vscode/settings.json 28 | !.vscode/tasks.json 29 | !.vscode/launch.json 30 | !.vscode/extensions.json 31 | .history/* 32 | 33 | # misc 34 | /.angular/cache 35 | /.sass-cache 36 | /connect.lock 37 | /coverage 38 | /libpeerconnection.log 39 | npm-debug.log 40 | yarn-error.log 41 | testem.log 42 | /typings 43 | 44 | # System Files 45 | .DS_Store 46 | Thumbs.db 47 | -------------------------------------------------------------------------------- /vinovest/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 3 | "recommendations": ["angular.ng-template"] 4 | } 5 | -------------------------------------------------------------------------------- /vinovest/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 3 | "version": "0.2.0", 4 | "configurations": [ 5 | { 6 | "name": "ng serve", 7 | "type": "pwa-chrome", 8 | "request": "launch", 9 | "preLaunchTask": "npm: start", 10 | "url": "http://localhost:4200/" 11 | }, 12 | { 13 | "name": "ng test", 14 | "type": "chrome", 15 | "request": "launch", 16 | "preLaunchTask": "npm: test", 17 | "url": "http://localhost:9876/debug.html" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /vinovest/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?LinkId=733558 3 | "version": "2.0.0", 4 | "tasks": [ 5 | { 6 | "type": "npm", 7 | "script": "start", 8 | "isBackground": true, 9 | "problemMatcher": { 10 | "owner": "typescript", 11 | "pattern": "$tsc", 12 | "background": { 13 | "activeOnStart": true, 14 | "beginsPattern": { 15 | "regexp": "(.*?)" 16 | }, 17 | "endsPattern": { 18 | "regexp": "bundle generation complete" 19 | } 20 | } 21 | } 22 | }, 23 | { 24 | "type": "npm", 25 | "script": "test", 26 | "isBackground": true, 27 | "problemMatcher": { 28 | "owner": "typescript", 29 | "pattern": "$tsc", 30 | "background": { 31 | "activeOnStart": true, 32 | "beginsPattern": { 33 | "regexp": "(.*?)" 34 | }, 35 | "endsPattern": { 36 | "regexp": "bundle generation complete" 37 | } 38 | } 39 | } 40 | } 41 | ] 42 | } 43 | -------------------------------------------------------------------------------- /vinovest/README.md: -------------------------------------------------------------------------------- 1 | # Vinovest 2 | 3 | This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.1.2. 4 | 5 | ## Development server 6 | 7 | Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. 8 | 9 | ## Code scaffolding 10 | 11 | Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. 12 | 13 | ## Build 14 | 15 | Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. 16 | 17 | ## Running unit tests 18 | 19 | Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). 20 | 21 | ## Running end-to-end tests 22 | 23 | Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. 24 | 25 | ## Further help 26 | 27 | To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. 28 | -------------------------------------------------------------------------------- /vinovest/angular.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "./node_modules/@angular/cli/lib/config/schema.json", 3 | "version": 1, 4 | "newProjectRoot": "projects", 5 | "projects": { 6 | "vinovest": { 7 | "projectType": "application", 8 | "schematics": { 9 | "@schematics/angular:component": { 10 | "style": "scss" 11 | }, 12 | "@schematics/angular:application": { 13 | "strict": true 14 | } 15 | }, 16 | "root": "", 17 | "sourceRoot": "src", 18 | "prefix": "app", 19 | "architect": { 20 | "build": { 21 | "builder": "@angular-devkit/build-angular:browser", 22 | "options": { 23 | "outputPath": "dist/vinovest", 24 | "index": "src/index.html", 25 | "main": "src/main.ts", 26 | "polyfills": "src/polyfills.ts", 27 | "tsConfig": "tsconfig.app.json", 28 | "inlineStyleLanguage": "scss", 29 | "assets": [ 30 | "src/favicon.ico", 31 | "src/assets" 32 | ], 33 | "styles": [ 34 | "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", 35 | "src/styles.scss", 36 | "./node_modules/aos/dist/aos.css" 37 | ], 38 | "scripts": [ 39 | "./node_modules/aos/dist/aos.js" 40 | ] 41 | }, 42 | "configurations": { 43 | "production": { 44 | "budgets": [ 45 | { 46 | "type": "initial", 47 | "maximumWarning": "500kb", 48 | "maximumError": "1mb" 49 | }, 50 | { 51 | "type": "anyComponentStyle", 52 | "maximumWarning": "2kb", 53 | "maximumError": "4kb" 54 | } 55 | ], 56 | "fileReplacements": [ 57 | { 58 | "replace": "src/environments/environment.ts", 59 | "with": "src/environments/environment.prod.ts" 60 | } 61 | ], 62 | "outputHashing": "all" 63 | }, 64 | "development": { 65 | "buildOptimizer": false, 66 | "optimization": false, 67 | "vendorChunk": true, 68 | "extractLicenses": false, 69 | "sourceMap": true, 70 | "namedChunks": true 71 | } 72 | }, 73 | "defaultConfiguration": "production" 74 | }, 75 | "serve": { 76 | "builder": "@angular-devkit/build-angular:dev-server", 77 | "configurations": { 78 | "production": { 79 | "browserTarget": "vinovest:build:production" 80 | }, 81 | "development": { 82 | "browserTarget": "vinovest:build:development" 83 | } 84 | }, 85 | "defaultConfiguration": "development" 86 | }, 87 | "extract-i18n": { 88 | "builder": "@angular-devkit/build-angular:extract-i18n", 89 | "options": { 90 | "browserTarget": "vinovest:build" 91 | } 92 | }, 93 | "test": { 94 | "builder": "@angular-devkit/build-angular:karma", 95 | "options": { 96 | "main": "src/test.ts", 97 | "polyfills": "src/polyfills.ts", 98 | "tsConfig": "tsconfig.spec.json", 99 | "karmaConfig": "karma.conf.js", 100 | "inlineStyleLanguage": "scss", 101 | "assets": [ 102 | "src/favicon.ico", 103 | "src/assets" 104 | ], 105 | "styles": [ 106 | "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", 107 | "src/styles.scss" 108 | ], 109 | "scripts": [] 110 | } 111 | } 112 | } 113 | } 114 | }, 115 | "defaultProject": "vinovest" 116 | } 117 | -------------------------------------------------------------------------------- /vinovest/karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration file, see link for more information 2 | // https://karma-runner.github.io/1.0/config/configuration-file.html 3 | 4 | module.exports = function (config) { 5 | config.set({ 6 | basePath: '', 7 | frameworks: ['jasmine', '@angular-devkit/build-angular'], 8 | plugins: [ 9 | require('karma-jasmine'), 10 | require('karma-chrome-launcher'), 11 | require('karma-jasmine-html-reporter'), 12 | require('karma-coverage'), 13 | require('@angular-devkit/build-angular/plugins/karma') 14 | ], 15 | client: { 16 | jasmine: { 17 | // you can add configuration options for Jasmine here 18 | // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html 19 | // for example, you can disable the random execution with `random: false` 20 | // or set a specific seed with `seed: 4321` 21 | }, 22 | clearContext: false // leave Jasmine Spec Runner output visible in browser 23 | }, 24 | jasmineHtmlReporter: { 25 | suppressAll: true // removes the duplicated traces 26 | }, 27 | coverageReporter: { 28 | dir: require('path').join(__dirname, './coverage/vinovest'), 29 | subdir: '.', 30 | reporters: [ 31 | { type: 'html' }, 32 | { type: 'text-summary' } 33 | ] 34 | }, 35 | reporters: ['progress', 'kjhtml'], 36 | port: 9876, 37 | colors: true, 38 | logLevel: config.LOG_INFO, 39 | autoWatch: true, 40 | browsers: ['Chrome'], 41 | singleRun: false, 42 | restartOnFileChange: true 43 | }); 44 | }; 45 | -------------------------------------------------------------------------------- /vinovest/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vinovest", 3 | "version": "0.0.0", 4 | "scripts": { 5 | "ng": "ng", 6 | "start": "ng serve", 7 | "build": "ng build", 8 | "watch": "ng build --watch --configuration development", 9 | "test": "ng test" 10 | }, 11 | "private": true, 12 | "dependencies": { 13 | "@angular/animations": "~13.1.0", 14 | "@angular/cdk": "^13.3.9", 15 | "@angular/common": "~13.1.0", 16 | "@angular/compiler": "~13.1.0", 17 | "@angular/core": "~13.1.0", 18 | "@angular/forms": "~13.1.0", 19 | "@angular/material": "^13.3.9", 20 | "@angular/platform-browser": "~13.1.0", 21 | "@angular/platform-browser-dynamic": "~13.1.0", 22 | "@angular/router": "~13.1.0", 23 | "aos": "^2.3.4", 24 | "bootstrap": "^5.2.1", 25 | "lodash": "^4.17.21", 26 | "ngx-countup": "^13.1.0", 27 | "rxjs": "~7.4.0", 28 | "tslib": "^2.3.0", 29 | "zone.js": "~0.11.4" 30 | }, 31 | "devDependencies": { 32 | "@angular-devkit/build-angular": "~13.1.2", 33 | "@angular/cli": "~13.1.2", 34 | "@angular/compiler-cli": "~13.1.0", 35 | "@types/aos": "^3.0.4", 36 | "@types/jasmine": "~3.10.0", 37 | "@types/lodash": "^4.14.185", 38 | "@types/node": "^12.11.1", 39 | "jasmine-core": "~3.10.0", 40 | "karma": "~6.3.0", 41 | "karma-chrome-launcher": "~3.1.0", 42 | "karma-coverage": "~2.1.0", 43 | "karma-jasmine": "~4.0.0", 44 | "karma-jasmine-html-reporter": "~1.7.0", 45 | "typescript": "~4.5.2" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /vinovest/src/app/app-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { RouterModule, Routes } from '@angular/router'; 3 | import { AboutUsComponent } from './page/about-us/about-us.component'; 4 | import { HomeComponent } from './page/home/home.component'; 5 | 6 | const routes: Routes = [ 7 | { 8 | path : '', component : HomeComponent, 9 | }, 10 | { 11 | path : 'about-us', component : AboutUsComponent, 12 | } 13 | 14 | ]; 15 | 16 | @NgModule({ 17 | imports: [RouterModule.forRoot(routes)], 18 | exports: [RouterModule] 19 | }) 20 | export class AppRoutingModule { } 21 | -------------------------------------------------------------------------------- /vinovest/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 |
-------------------------------------------------------------------------------- /vinovest/src/app/app.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/app/app.component.scss -------------------------------------------------------------------------------- /vinovest/src/app/app.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | import { RouterTestingModule } from '@angular/router/testing'; 3 | import { AppComponent } from './app.component'; 4 | 5 | describe('AppComponent', () => { 6 | beforeEach(async () => { 7 | await TestBed.configureTestingModule({ 8 | imports: [ 9 | RouterTestingModule 10 | ], 11 | declarations: [ 12 | AppComponent 13 | ], 14 | }).compileComponents(); 15 | }); 16 | 17 | it('should create the app', () => { 18 | const fixture = TestBed.createComponent(AppComponent); 19 | const app = fixture.componentInstance; 20 | expect(app).toBeTruthy(); 21 | }); 22 | 23 | it(`should have as title 'vinovest'`, () => { 24 | const fixture = TestBed.createComponent(AppComponent); 25 | const app = fixture.componentInstance; 26 | expect(app.title).toEqual('vinovest'); 27 | }); 28 | 29 | it('should render title', () => { 30 | const fixture = TestBed.createComponent(AppComponent); 31 | fixture.detectChanges(); 32 | const compiled = fixture.nativeElement as HTMLElement; 33 | expect(compiled.querySelector('.content span')?.textContent).toContain('vinovest app is running!'); 34 | }); 35 | }); 36 | -------------------------------------------------------------------------------- /vinovest/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.scss'] 7 | }) 8 | export class AppComponent { 9 | title = 'vinovest'; 10 | } 11 | -------------------------------------------------------------------------------- /vinovest/src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { BrowserModule } from '@angular/platform-browser'; 3 | import { CountUpModule } from 'ngx-countup'; 4 | 5 | import { AppRoutingModule } from './app-routing.module'; 6 | import { AppComponent } from './app.component'; 7 | import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; 8 | // import { FlexLayoutModule } from '@angular/flex-layout'; 9 | import { HeaderComponent } from './components/layouts/header/header.component'; 10 | import { FooterComponent } from './components/layouts/footer/footer.component'; 11 | import { AboutUsComponent } from './page/about-us/about-us.component'; 12 | import { TitleComponent } from './components/about-us/title/title.component'; 13 | import { LeveragingComponent } from './components/about-us/leveraging/leveraging.component'; 14 | import { TeamComponent } from './components/about-us/team/team.component'; 15 | 16 | // import angular material ui 17 | import { MemberCardComponent } from './components/about-us/member-card/member-card.component'; 18 | import { NotransformBtnComponent } from './shared/ui/notransform-btn/notransform-btn.component'; 19 | import { AnimationBtnComponent } from './shared/ui/animation-btn/animation-btn.component'; 20 | import { WineInvestCardComponent } from './components/layouts/footer/wine-invest-card/wine-invest-card.component'; 21 | import { FooterListComponent } from './components/layouts/footer/footer-list/footer-list.component'; 22 | import { EmailBtnComponent } from './shared/ui/email-btn/email-btn.component'; 23 | import { HomeComponent } from './page/home/home.component'; 24 | import { HeroComponent } from './components/home/hero/hero.component'; 25 | import { HistoryCardComponent } from './components/home/history-card/history-card.component'; 26 | import { PortfolioComponent } from './components/home/portfolio/portfolio.component'; 27 | import { PortfolioImageCardComponent } from './components/home/portfolio-image-card/portfolio-image-card.component'; 28 | import { LearnMoreBtnComponent } from './shared/ui/learn-more-btn/learn-more-btn.component'; 29 | import { HowItWorksComponent } from './components/home/how-it-works/how-it-works.component'; 30 | import { IntersectImgDirective } from './directives/intersect/intersect-img.directive'; 31 | 32 | /* Material */ 33 | import { MatButtonModule } from '@angular/material/button' 34 | import { MatCardModule } from '@angular/material/card' 35 | import {MatGridListModule} from '@angular/material/grid-list'; 36 | import { ScrollRevealDirective } from './directives/scrollReveal/scroll-reveal.directive'; 37 | 38 | 39 | @NgModule({ 40 | declarations: [ 41 | AppComponent, 42 | HeaderComponent, 43 | FooterComponent, 44 | AboutUsComponent, 45 | TitleComponent, 46 | LeveragingComponent, 47 | TeamComponent, 48 | MemberCardComponent, 49 | NotransformBtnComponent, 50 | AnimationBtnComponent, 51 | WineInvestCardComponent, 52 | FooterListComponent, 53 | EmailBtnComponent, 54 | HomeComponent, 55 | HeroComponent, 56 | HistoryCardComponent, 57 | PortfolioComponent, 58 | PortfolioImageCardComponent, 59 | LearnMoreBtnComponent, 60 | HowItWorksComponent, 61 | IntersectImgDirective, 62 | ScrollRevealDirective, 63 | ], 64 | imports: [ 65 | BrowserModule, 66 | AppRoutingModule, 67 | BrowserAnimationsModule, 68 | MatGridListModule, 69 | CountUpModule, 70 | // FlexLayoutModule, 71 | MatButtonModule, 72 | MatCardModule, 73 | ], 74 | providers: [], 75 | bootstrap: [AppComponent] 76 | }) 77 | export class AppModule { } 78 | -------------------------------------------------------------------------------- /vinovest/src/app/components/about-us/leveraging/leveraging.component.html: -------------------------------------------------------------------------------- 1 |
2 |

{{title}}

3 |

{{content}}

4 | 5 |
-------------------------------------------------------------------------------- /vinovest/src/app/components/about-us/leveraging/leveraging.component.scss: -------------------------------------------------------------------------------- 1 | .leveraging-main { 2 | h2 { 3 | max-width: 720px; 4 | font-family: Roslindaledisplaycondensed, sans-serif; 5 | font-size: 64px; 6 | text-align: center; 7 | margin: 0px auto 50px; 8 | font-weight: 500; 9 | line-height: 137%; 10 | } 11 | p { 12 | max-width: 940px; 13 | font-size: 20px; 14 | line-height: 160%; 15 | margin: 0px auto 105px; 16 | text-align: center; 17 | font-family: Favoritstd, sans-serif; 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /vinovest/src/app/components/about-us/leveraging/leveraging.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { LeveragingComponent } from './leveraging.component'; 4 | 5 | describe('LeveragingComponent', () => { 6 | let component: LeveragingComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ LeveragingComponent ] 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(LeveragingComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /vinovest/src/app/components/about-us/leveraging/leveraging.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit , Input } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-leveraging', 5 | templateUrl: './leveraging.component.html', 6 | styleUrls: ['./leveraging.component.scss'] 7 | }) 8 | export class LeveragingComponent implements OnInit { 9 | 10 | @Input() title :string = ''; 11 | @Input() content :string = ''; 12 | @Input() img :string = ''; 13 | 14 | constructor() { } 15 | 16 | ngOnInit(): void { 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /vinovest/src/app/components/about-us/member-card/member-card.component.html: -------------------------------------------------------------------------------- 1 |
2 | member photo 3 |

{{name}}

4 | {{position}} 5 |

{{desc}}

6 |
7 | 8 | -------------------------------------------------------------------------------- /vinovest/src/app/components/about-us/member-card/member-card.component.scss: -------------------------------------------------------------------------------- 1 | .member-card-main { 2 | width: 100%; 3 | height: 100%; 4 | list-style: none; 5 | position: relative; 6 | padding: 9% 7%; 7 | background-color: rgb(36, 46, 53); 8 | color: rgb(239, 221, 199); 9 | 10 | img { 11 | width: 100%; 12 | margin-bottom: 20px; 13 | height: auto; 14 | } 15 | h3 { 16 | font-family: Roslindaledisplaycondensed, sans-serif; 17 | font-size: 32px; 18 | line-height: 41px; 19 | text-align: center; 20 | white-space: normal; 21 | font-weight: 500; 22 | margin-top: 0px; 23 | margin-bottom: 10px; 24 | } 25 | span { 26 | display: block; 27 | margin-bottom: 16px; 28 | font-family: Favoritmonostd, sans-serif; 29 | font-size: 14px; 30 | line-height: 24px; 31 | font-weight: 400; 32 | text-align: center; 33 | text-transform: uppercase; 34 | } 35 | p { 36 | font-size: 14px; 37 | line-height: 21px; 38 | text-align: center; 39 | font-weight: 400; 40 | margin-bottom: 0px; 41 | font-family: Favoritstd, sans-serif; 42 | max-width: 680px; 43 | } 44 | } -------------------------------------------------------------------------------- /vinovest/src/app/components/about-us/member-card/member-card.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { MemberCardComponent } from './member-card.component'; 4 | 5 | describe('MemberCardComponent', () => { 6 | let component: MemberCardComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ MemberCardComponent ] 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(MemberCardComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /vinovest/src/app/components/about-us/member-card/member-card.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit , Input } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-member-card', 5 | templateUrl: './member-card.component.html', 6 | styleUrls: ['./member-card.component.scss'] 7 | }) 8 | export class MemberCardComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | @Input() img :string = ''; 13 | @Input() name :string = ''; 14 | @Input() position :string = ''; 15 | @Input() desc :string = ''; 16 | 17 | ngOnInit(): void { 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /vinovest/src/app/components/about-us/team/team.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {{questionTitle}} 4 |

{{title}}

5 |

{{content}}

6 |
7 | 25 |
26 |
27 |
28 | 29 |
30 |

31 | Vinovest Council 32 |

33 |
34 |
    35 |
  • 36 | 42 |
  • 43 |
44 |
45 |
46 | 47 | 53 | 54 | 55 |
-------------------------------------------------------------------------------- /vinovest/src/app/components/about-us/team/team.component.scss: -------------------------------------------------------------------------------- 1 | 2 | // reference css 3 | .team-member { 4 | .memberWrapper { 5 | list-style-type: none; 6 | padding: 0px; 7 | display: grid; 8 | grid-auto-columns: 1fr; 9 | gap: 40px 30px; 10 | grid-template-columns: repeat(4, minmax(0px, 1fr)); 11 | grid-template-rows: auto auto; 12 | margin-bottom: 150px; 13 | } 14 | .arrowWrapper { 15 | border: 4px solid rgb(36, 46, 53); 16 | grid-column: 2 / 4; 17 | width: 425px; 18 | padding: 26px 52px 0px 52px; 19 | display: flex; 20 | justify-content: center; 21 | margin: 34px auto 0px; 22 | a { 23 | text-decoration: none; 24 | h3 { 25 | color: rgb(36, 46, 53); 26 | font-size: 32px; 27 | font-weight: 500; 28 | font-family: Roslindaledisplaycondensed, sans-serif; 29 | text-align: center; 30 | margin-bottom: 10px; 31 | line-height: 41px; 32 | } 33 | img { 34 | width: 100%; 35 | margin-bottom: 20px; 36 | } 37 | } 38 | } 39 | } 40 | 41 | // main css 42 | .team-main { 43 | padding-bottom: 100px; 44 | } 45 | .team-member-div { 46 | max-width: 1273px; 47 | padding: 0px; 48 | margin: 170px auto 0px; 49 | display: flex; 50 | flex-direction: column; 51 | align-items: center; 52 | position: relative; 53 | 54 | span { 55 | text-transform: uppercase; 56 | margin-bottom: 24px; 57 | font-size: 18px; 58 | font-family: Favoritmonostd, sans-serif; 59 | } 60 | h2 { 61 | margin: 0px auto 50px ; 62 | font-size: 64px; 63 | text-align: center; 64 | max-width: 1000px; 65 | font-weight: 500; 66 | line-height: 137%; 67 | font-family: Roslindaledisplaycondensed, sans-serif; 68 | } 69 | p { 70 | max-width: 680px; 71 | font-size: 20px; 72 | line-height: 160%; 73 | margin: 0px auto 25px; 74 | text-align: center; 75 | font-family: Favoritstd, sans-serif; 76 | } 77 | 78 | .blue-bg { 79 | position: absolute; 80 | inset: 90px 0px 0px; 81 | background-color: rgb(197, 213, 228); 82 | z-index: -2; 83 | height: 98%; 84 | max-width: 88%; 85 | margin-left: auto; 86 | margin-right: auto; 87 | } 88 | } 89 | 90 | .council-members { 91 | max-width: 1273px; 92 | padding: 0px; 93 | margin: 20px auto 0px; 94 | display: flex; 95 | flex-direction: column; 96 | align-items: center; 97 | 98 | h2 { 99 | font-size: 64px; 100 | font-family: Roslindaledisplaycondensed, sans-serif; 101 | text-align: center; 102 | margin: 0px auto 70px; 103 | max-width: 1000px; 104 | font-weight: 500; 105 | line-height: 137%; 106 | } 107 | } -------------------------------------------------------------------------------- /vinovest/src/app/components/about-us/team/team.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TeamComponent } from './team.component'; 4 | 5 | describe('TeamComponent', () => { 6 | let component: TeamComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ TeamComponent ] 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(TeamComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /vinovest/src/app/components/about-us/team/team.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit , Input } from '@angular/core'; 2 | import { Member } from 'src/app/page/about-us/members'; 3 | 4 | @Component({ 5 | selector: 'app-team', 6 | templateUrl: './team.component.html', 7 | styleUrls: ['./team.component.scss'] 8 | }) 9 | export class TeamComponent implements OnInit { 10 | 11 | constructor() { } 12 | 13 | @Input() questionTitle :string = '' ; 14 | @Input() title :string = '' ; 15 | @Input() content :string = '' ; 16 | @Input() team_members :Member[] = [] ; 17 | @Input() council_members :Member[] = [] ; 18 | 19 | arrow_img :string = '../../../../assets/arrow.svg'; 20 | 21 | askTitle :string = 'Not sure which plan is best for you ?' ; 22 | tailTitle :string = 'Talk to a wine investing expert!' ; 23 | link :string = '/' ; 24 | font :string = 'Roslindaledisplaycondensed, sans-serif'; 25 | 26 | 27 | ngOnInit(): void { 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /vinovest/src/app/components/about-us/title/title.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | {{wineTitle}} 5 |
6 |
7 | {{content}} 8 |
9 | 14 | wine_img 15 |
16 |
-------------------------------------------------------------------------------- /vinovest/src/app/components/about-us/title/title.component.scss: -------------------------------------------------------------------------------- 1 | .title-main { 2 | background-color: rgb(239, 221, 199); 3 | display: flex; 4 | flex-direction: column; 5 | align-items: center; 6 | 7 | .title-content { 8 | margin: 0px auto; 9 | padding: 170px 8.888% 15px; 10 | font-family: vinovestmedium; 11 | max-width: 1440px; 12 | display: flex; 13 | flex-direction: column; 14 | align-items: center; 15 | 16 | .text-title { 17 | font-size: 64px; 18 | color: rgb(36, 46, 53); 19 | font-family: RoslindaleDisplayCondensed; 20 | font-weight: 500; 21 | text-align: center; 22 | line-height: 131.25%; 23 | margin: 0px auto; 24 | } 25 | .text-content { 26 | font-size: 20px; 27 | text-align: center; 28 | line-height: 160%; 29 | margin: 30px auto 60px; 30 | max-width: 596px; 31 | } 32 | .get-started-btn { 33 | min-width: 254px; 34 | height: 71px; 35 | padding: 0px 10px; 36 | background: transparent; 37 | border: 2px solid rgb(36, 46, 53); 38 | position: relative; 39 | margin: 0px auto; 40 | 41 | .get-started-btn-name{ 42 | color: rgb(239, 221, 199); 43 | font-size: 18px; 44 | text-transform: uppercase; 45 | background-color: rgb(36, 46, 53); 46 | position: absolute; 47 | left: 0px; 48 | top: 0px; 49 | width: 100%; 50 | height: 100%; 51 | display: flex; 52 | align-items: center; 53 | justify-content: center; 54 | font-family: Favoritmonostd, sans-serif; 55 | transform: translate3d(-8px, -8px, 0px) scale3d(1, 1, 1) rotateX(0deg) rotateY(0deg) rotateZ(0deg) skew(0deg, 0deg); 56 | transition: all 0.3s ease 0s; 57 | transform-style: preserve-3d; 58 | border: 2px solid rgb(36, 46, 53); 59 | } 60 | } 61 | .get-started-btn:hover .get-started-btn-name { 62 | transform: translate3d(-16px, -16px, 0px) scale3d(1, 1, 1) rotateX(0deg) rotateY(0deg) rotateZ(0deg) skew(0deg, 0deg); 63 | background-color: rgb(239, 221, 199); 64 | color: rgb(36, 46, 53); 65 | transform-style: preserve-3d; 66 | } 67 | img { 68 | height: 900px; 69 | width: 95%; 70 | object-fit: contain; 71 | margin: 0px auto; 72 | } 73 | } 74 | } -------------------------------------------------------------------------------- /vinovest/src/app/components/about-us/title/title.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TitleComponent } from './title.component'; 4 | 5 | describe('TitleComponent', () => { 6 | let component: TitleComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ TitleComponent ] 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(TitleComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /vinovest/src/app/components/about-us/title/title.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit , Input } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-title', 5 | templateUrl: './title.component.html', 6 | styleUrls: ['./title.component.scss'] 7 | }) 8 | export class TitleComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | @Input() wineTitle : string = ''; 13 | @Input() content : string = ''; 14 | @Input() img_path : string = ''; 15 | 16 | ngOnInit(): void { 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /vinovest/src/app/components/home/hero/hero.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 |
6 |
7 |

8 | {{title}} 9 |

10 |
11 | {{content}} 12 |
13 |
    14 |
  • 15 | {{item}} 16 |
  • 17 |
18 | 27 |
28 |
29 | 30 |
31 | {{logo.label}} 32 | 36 |
37 | 38 |
39 | 40 |
41 |
42 |
43 | 44 | 45 |
51 |
55 | 60 |
61 |
62 |
63 | 64 |
65 |
66 |
67 |
-------------------------------------------------------------------------------- /vinovest/src/app/components/home/hero/hero.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { HeroComponent } from './hero.component'; 4 | 5 | describe('HeroComponent', () => { 6 | let component: HeroComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ HeroComponent ] 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(HeroComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /vinovest/src/app/components/home/hero/hero.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit , Input } from '@angular/core'; 2 | import { Logo } from 'src/app/static/home'; 3 | import { WineHistory , WineHistoryType , ArrowUpImg } from 'src/app/static/home'; 4 | 5 | @Component({ 6 | selector: 'app-hero', 7 | templateUrl: './hero.component.html', 8 | styleUrls: ['./hero.component.scss'] 9 | }) 10 | export class HeroComponent implements OnInit { 11 | 12 | @Input() title : string = '' ; 13 | @Input() content : string = '' ; 14 | @Input() list: string[] = []; 15 | @Input() companyLogos : Logo[] = [] ; 16 | 17 | @Input() rightWine_img : string = '' ; 18 | 19 | wineHistories : WineHistoryType[] = WineHistory ; 20 | 21 | countUp : number = WineHistory[0].percentage ; 22 | historyNote : string = WineHistory[0].history ; 23 | arrowUp_img : string = ArrowUpImg ; 24 | 25 | currentHistoryItem : number = -1 ; 26 | pause = false ; 27 | 28 | 29 | constructor( ) { } 30 | 31 | setIntervalFunction() { 32 | const interval = setInterval(() => { 33 | if( this.pause ) { 34 | return ; 35 | } else { 36 | this.currentHistoryItem += 1 ; 37 | } 38 | if( this.currentHistoryItem > 4 ) 39 | this.currentHistoryItem = 0; 40 | }, 5000) 41 | } 42 | 43 | ngOnInit(): void { 44 | const timeOut = setTimeout(() => { 45 | this.currentHistoryItem = 0 ; 46 | this.setIntervalFunction(); 47 | }, 2000) ; 48 | } 49 | 50 | handleMouseOverHistoryCard( id : number ) { 51 | this.pause = true ; 52 | this.currentHistoryItem = id ; 53 | } 54 | handleMouseOutHistoryCard() { 55 | this.pause = false ; 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /vinovest/src/app/components/home/history-card/history-card.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 8 | 9 | % 10 |
11 |
12 | arrowupimg 13 |
14 |
15 |
16 | {{historyNote}} 17 |
18 |
-------------------------------------------------------------------------------- /vinovest/src/app/components/home/history-card/history-card.component.scss: -------------------------------------------------------------------------------- 1 | .history-card-main { 2 | background-color: rgb(36, 46, 53); 3 | color: rgb(239, 221, 199); 4 | padding: 8px 16px 10px; 5 | display: flex; 6 | flex-direction: column; 7 | justify-content: center; 8 | width: fit-content; 9 | min-width: 112px; 10 | 11 | .percentage { 12 | display: flex; 13 | align-items: center; 14 | justify-content: space-between; 15 | // width: 80px; 16 | 17 | span { 18 | font-size: 24px; 19 | font-family: Roslindaledisplaycondensed, sans-serif; 20 | line-height: 167%; 21 | } 22 | .arrow-up-div{ 23 | background-color: rgb(239, 221, 199); 24 | width: 20px; 25 | height: 20px; 26 | border-radius: 50%; 27 | display: flex; 28 | align-items: center; 29 | justify-content: center; 30 | margin-right: 10px; 31 | img { 32 | height: 8px; 33 | } 34 | } 35 | 36 | } 37 | .release-note { 38 | display: flex; 39 | align-items: center; 40 | object-fit: contain; 41 | width: fit-content; 42 | font-size: 10px; 43 | line-height: 200%; 44 | font-family: vinovestmedium; 45 | } 46 | } -------------------------------------------------------------------------------- /vinovest/src/app/components/home/history-card/history-card.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { HistoryCardComponent } from './history-card.component'; 4 | 5 | describe('HistoryCardComponent', () => { 6 | let component: HistoryCardComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ HistoryCardComponent ] 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(HistoryCardComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /vinovest/src/app/components/home/history-card/history-card.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit , Input } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-history-card', 5 | templateUrl: './history-card.component.html', 6 | styleUrls: ['./history-card.component.scss'] 7 | }) 8 | export class HistoryCardComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | @Input() count_up : number = 0; 13 | @Input() historyNote : string = '' ; 14 | @Input() arrowUp_img : string = '' ; 15 | 16 | ngOnInit(): void { 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /vinovest/src/app/components/home/how-it-works/how-it-works.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 11 |
12 | 13 |
14 | how it works 15 |

Invest in minutes

16 |
23 |

24 | {{item.title}} 25 |

26 |

27 | {{item.content}} 28 |

29 |
30 |
31 | 32 | 33 |
-------------------------------------------------------------------------------- /vinovest/src/app/components/home/how-it-works/how-it-works.component.scss: -------------------------------------------------------------------------------- 1 | @keyframes FadeFromBottomWithDelay { 2 | 0% { 3 | opacity: 0; 4 | transform: translateY(50%); 5 | } 6 | 50% { 7 | opacity: 0; 8 | transform: translateY(50%); 9 | } 10 | 100% { 11 | opacity: 1; 12 | transform: translateY(0%); 13 | } 14 | } 15 | .howitworks-main { 16 | max-width: 1440px; 17 | margin-top: 214px; 18 | margin-left: auto; 19 | margin-right: auto; 20 | position: relative; 21 | display: flex; 22 | align-items: flex-start; 23 | 24 | .img-container { 25 | display: flex; 26 | flex-direction: column; 27 | align-items: center; 28 | img { 29 | margin-top: 45px; 30 | } 31 | } 32 | .sticky-div { 33 | position: sticky; 34 | top : 59.0184px; 35 | margin-top: 63px; 36 | padding-top: 70px; 37 | margin-left: -164px; 38 | color: rgb(79, 28, 40); 39 | width: 580px; 40 | 41 | span { 42 | margin-bottom: 16px; 43 | font-family: Favoritmonostd, sans-serif; 44 | font-size: 18px; 45 | line-height: 177.77%; 46 | text-transform: uppercase; 47 | } 48 | h1 { 49 | margin: 0px; 50 | font-family: Roslindaledisplaycondensed, sans-serif; 51 | font-size: 64px; 52 | line-height: 137%; 53 | font-weight: 500; 54 | } 55 | h2 { 56 | margin-top: 20px; 57 | margin-bottom: 10px; 58 | font-family: Roslindaledisplaycondensed, sans-serif;; 59 | font-size: 32px; 60 | font-weight: 500; 61 | line-height: 150%; 62 | } 63 | P { 64 | font-family: Favoritstd, sans-serif; 65 | font-size: 16px; 66 | line-height: 162%; 67 | margin-top: 0px; 68 | margin-top: 0px; 69 | } 70 | .list-div { 71 | color: rgb(79, 28, 40); 72 | margin-top: 20px; 73 | margin-right: 8px; 74 | padding-right: 33px; 75 | padding-left: 33px; 76 | transition: all 0.5s ease 0s; 77 | } 78 | .red-div { 79 | background-color: rgb(79, 28, 40); 80 | color: rgb(197, 213, 228); 81 | padding: 10px 33px 30px; 82 | margin-bottom: 48px; 83 | margin-top: 30px; 84 | margin-right: 8px; 85 | transition: all 0.5s ease 0s; 86 | 87 | } 88 | .runAnimation_1 { 89 | // animation: FadeFromBottomWithDelay 1.5s linear; 90 | animation: 0.5s linear 0s 1 normal none running FadeFromBottomWithDelay; 91 | } 92 | .runAnimation_2 { 93 | // animation: FadeFromBottomWithDelay 1.5s linear; 94 | animation: 1s linear 0s 1 normal none running FadeFromBottomWithDelay; 95 | } 96 | .runAnimation_3 { 97 | // animation: FadeFromBottomWithDelay 1.5s linear; 98 | animation: 1.5s linear 0s 1 normal none running FadeFromBottomWithDelay; 99 | } 100 | .runAnimation_4 { 101 | // animation: FadeFromBottomWithDelay 1.5s linear; 102 | animation: 2s linear 0s 1 normal none running FadeFromBottomWithDelay; 103 | } 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /vinovest/src/app/components/home/how-it-works/how-it-works.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { HowItWorksComponent } from './how-it-works.component'; 4 | 5 | describe('HowItWorksComponent', () => { 6 | let component: HowItWorksComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ HowItWorksComponent ] 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(HowItWorksComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /vinovest/src/app/components/home/how-it-works/how-it-works.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { HowitworksImgs } from 'src/app/static/home'; 3 | import { EachPortfolioItem , PortfolioList } from 'src/app/static/home'; 4 | // import AOS from 'aos'; 5 | 6 | @Component({ 7 | selector: 'app-how-it-works', 8 | templateUrl: './how-it-works.component.html', 9 | styleUrls: ['./how-it-works.component.scss'] 10 | }) 11 | export class HowItWorksComponent implements OnInit { 12 | 13 | constructor() { } 14 | 15 | imgs : string[] = HowitworksImgs ; 16 | portfolioLists : EachPortfolioItem[] = PortfolioList ; 17 | intersectionData : number[] = [] ; 18 | maxIndex : number = 0 ; 19 | 20 | 21 | ngOnInit(): void { 22 | // AOS.init({ once : true }); 23 | // AOS.refresh(); 24 | } 25 | 26 | Intersecting (status: number, index: number) { 27 | 28 | this.intersectionData[index] = status; 29 | 30 | this.maxIndex = this.intersectionData.reduce((iMax, x, i, arr) => (x > arr[iMax] ? i : iMax), 0) 31 | 32 | // console.log( this.intersectionData ); 33 | // console.log( this.maxIndex , 'max Index') 34 | 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /vinovest/src/app/components/home/portfolio-image-card/portfolio-image-card.component.html: -------------------------------------------------------------------------------- 1 |

portfolio-image-card works!

2 | -------------------------------------------------------------------------------- /vinovest/src/app/components/home/portfolio-image-card/portfolio-image-card.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/app/components/home/portfolio-image-card/portfolio-image-card.component.scss -------------------------------------------------------------------------------- /vinovest/src/app/components/home/portfolio-image-card/portfolio-image-card.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { PortfolioImageCardComponent } from './portfolio-image-card.component'; 4 | 5 | describe('PortfolioImageCardComponent', () => { 6 | let component: PortfolioImageCardComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ PortfolioImageCardComponent ] 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(PortfolioImageCardComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /vinovest/src/app/components/home/portfolio-image-card/portfolio-image-card.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-portfolio-image-card', 5 | templateUrl: './portfolio-image-card.component.html', 6 | styleUrls: ['./portfolio-image-card.component.scss'] 7 | }) 8 | export class PortfolioImageCardComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit(): void { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /vinovest/src/app/components/home/portfolio/portfolio.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |

4 | Grow your passion and returns 5 |

6 |

7 | Your investment sommelier 8 |

9 |
10 |
11 | 12 |

13 | {{item.title}} 14 |

15 | 16 | {{item.desc}} 17 | 18 |
19 |
20 |
21 | 22 |
23 | 26 |
27 | 28 |
-------------------------------------------------------------------------------- /vinovest/src/app/components/home/portfolio/portfolio.component.scss: -------------------------------------------------------------------------------- 1 | .portfolio-main { 2 | padding-top: 100px; 3 | padding-bottom: 40px; 4 | padding: 165px 8.888% 120px; 5 | 6 | .content { 7 | font-weight: 500; 8 | color: rgb(36, 46, 53) ; 9 | p { 10 | font-family: Favoritmonostd; 11 | font-size: 18px; 12 | line-height: 177.77%; 13 | text-transform: uppercase; 14 | margin-left: auto; 15 | margin-right: auto; 16 | margin-top: 18px; 17 | margin-bottom: 18px; 18 | width: fit-content; 19 | } 20 | h2 { 21 | font-family: Roslindaledisplaycondensed, sans-serif ; 22 | font-size: 64px; 23 | line-height: 137%; 24 | max-width: 700px; 25 | width: fit-content; 26 | margin-left: auto; 27 | margin-right: auto; 28 | } 29 | .portfolio-container { 30 | margin: 64px auto; 31 | max-width: 895px; 32 | display: grid; 33 | 34 | grid-auto-columns: 1fr; 35 | gap: 21px 125px; 36 | grid-template-columns: 1fr 1fr; 37 | grid-template-rows: auto auto; 38 | .each-portfolio { 39 | max-width: 385px; 40 | min-height: 329px; 41 | display: flex; 42 | align-items: center; 43 | flex-direction: column; 44 | padding: 12px; 45 | margin-bottom: 30px; 46 | img { 47 | max-width: 162px; 48 | height: 122px; 49 | margin-top: 43px; 50 | width: 100%; 51 | margin-bottom: 23px; 52 | } 53 | h2 { 54 | margin-top: 20px; 55 | margin-bottom: 10px; 56 | font-family: Roslindaledisplaycondensed, sans-serif; 57 | font-size: 32px; 58 | } 59 | span { 60 | font-size: 16px; 61 | line-height: 175%; 62 | font-family: Favoritstd, sans-serif; 63 | text-align: center; 64 | text-transform: none; 65 | } 66 | } 67 | } 68 | } 69 | 70 | .learn-more-btn { 71 | text-align: center; 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /vinovest/src/app/components/home/portfolio/portfolio.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { PortfolioComponent } from './portfolio.component'; 4 | 5 | describe('PortfolioComponent', () => { 6 | let component: PortfolioComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ PortfolioComponent ] 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(PortfolioComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /vinovest/src/app/components/home/portfolio/portfolio.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { EachPortfolio , Portfolio } from 'src/app/static/home'; 3 | 4 | @Component({ 5 | selector: 'app-portfolio', 6 | templateUrl: './portfolio.component.html', 7 | styleUrls: ['./portfolio.component.scss'] 8 | }) 9 | export class PortfolioComponent implements OnInit { 10 | 11 | constructor() { } 12 | 13 | portfolios : EachPortfolio[] = Portfolio ; 14 | btnLabel : string = 'learn more'; 15 | 16 | ngOnInit(): void { 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /vinovest/src/app/components/layouts/footer/footer-list/footer-list.component.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vinovest/src/app/components/layouts/footer/footer-list/footer-list.component.scss: -------------------------------------------------------------------------------- 1 | .footer-list-main { 2 | .title { 3 | font-family: Roslindaledisplaycondensed, sans-serif; 4 | font-weight: 500; 5 | font-size: 32px; 6 | line-height: 44px; 7 | margin: 0px; 8 | margin-bottom: 15px; 9 | } 10 | nav { 11 | display: flex; 12 | flex-direction: column; 13 | } 14 | .list { 15 | font-size: 15px; 16 | text-decoration: none; 17 | font-family: VinovestMedium; 18 | font-weight: 500; 19 | line-height: 30px; 20 | text-align: left; 21 | color: inherit; 22 | transition: all 0.3s ease 0s; 23 | cursor: pointer; 24 | margin-bottom: 4px; 25 | } 26 | .list:hover { 27 | opacity: 0.5; 28 | } 29 | } -------------------------------------------------------------------------------- /vinovest/src/app/components/layouts/footer/footer-list/footer-list.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { FooterListComponent } from './footer-list.component'; 4 | 5 | describe('FooterListComponent', () => { 6 | let component: FooterListComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ FooterListComponent ] 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(FooterListComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /vinovest/src/app/components/layouts/footer/footer-list/footer-list.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit , Input } from '@angular/core'; 2 | import { FooterMenuOneItem } from 'src/app/static/footer/footerList'; 3 | 4 | @Component({ 5 | selector: 'app-footer-list', 6 | templateUrl: './footer-list.component.html', 7 | styleUrls: ['./footer-list.component.scss'] 8 | }) 9 | export class FooterListComponent implements OnInit { 10 | 11 | constructor() { } 12 | 13 | @Input() List : FooterMenuOneItem = { 14 | title : '', 15 | list : [] 16 | } ; 17 | 18 | ngOnInit(): void { 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /vinovest/src/app/components/layouts/footer/footer.component.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vinovest/src/app/components/layouts/footer/footer.component.scss: -------------------------------------------------------------------------------- 1 | 2 | .footer-main { 3 | .container { 4 | background-color: #242e35; 5 | color: rgb(250, 232, 209); 6 | padding: 98px 128px; 7 | margin: 0px; 8 | max-width: 100%; 9 | .row { 10 | margin: 0px auto; 11 | max-width: 1440px; 12 | } 13 | .left-footer-side { 14 | padding: 0px; 15 | 16 | .left-footer-up { 17 | display: flex; 18 | flex-direction: column; 19 | border-bottom: 1px solid rgb(250, 232, 209); 20 | border-right: 1px solid rgb(250, 232, 209); 21 | 22 | padding-right: 40px; 23 | padding-bottom: 41px; 24 | padding-top: 40px; 25 | .list-container { 26 | display: flex; 27 | padding-bottom: 53px; 28 | justify-content: space-between; 29 | } 30 | .follow-icons { 31 | display: flex; 32 | padding: 10px 0px; 33 | span { 34 | margin-right: 29px; 35 | font-size: 16px; 36 | font-family: FavoritStd; 37 | font-weight: 500; 38 | line-height: 28px; 39 | } 40 | li { 41 | list-style: none; 42 | margin-right: 20px; 43 | } 44 | } 45 | } 46 | .left-footer-down { 47 | border-right: 1px solid rgb(250, 232, 209); 48 | padding-top: 28px; 49 | padding-bottom: 39px; 50 | } 51 | } 52 | .right-footer-side { 53 | padding: 0px; 54 | .newsletter-title { 55 | font-family: Roslindaledisplaycondensed, sans-serif; 56 | font-size: 32px; 57 | font-weight: 500; 58 | line-height: 44px; 59 | margin: 0px; 60 | margin-bottom: 17px; 61 | } 62 | .right-footer-up { 63 | border-bottom: 1px solid rgb(250, 232, 209); 64 | padding-top: 28px; 65 | padding-bottom: 47px; 66 | padding-left: 66px; 67 | } 68 | .right-footer-down { 69 | padding-top: 30px; 70 | padding-bottom: 47px; 71 | padding-left: 66px; 72 | .newsletter-title { 73 | margin-bottom: 29px; 74 | } 75 | .email-contact { 76 | display: flex; 77 | align-items: center; 78 | margin-bottom: 45px; 79 | .imgWrap { 80 | width: 40px; 81 | margin-right: 26px; 82 | img { 83 | width: 100%; 84 | } 85 | } 86 | .email-links { 87 | display: flex; 88 | flex-direction: column; 89 | a { 90 | color: rgb(250, 232, 209); 91 | font-size: 16px; 92 | text-decoration: none; 93 | font-family: VinovestMedium; 94 | line-height: 30px; 95 | font-weight: 500; 96 | transition: all 0.3s ease 0s; 97 | } 98 | .bottom-link { 99 | color: rgb(126, 223, 131); 100 | } 101 | a:hover { 102 | opacity: 0.5; 103 | } 104 | } 105 | } 106 | .business-bbb { 107 | width: 150px; 108 | overflow: hidden; 109 | } 110 | .stores { 111 | margin-top: 50px; 112 | } 113 | } 114 | } 115 | } 116 | } -------------------------------------------------------------------------------- /vinovest/src/app/components/layouts/footer/footer.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { FooterComponent } from './footer.component'; 4 | 5 | describe('FooterComponent', () => { 6 | let component: FooterComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ FooterComponent ] 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(FooterComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /vinovest/src/app/components/layouts/footer/footer.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { FooterMenuOneItem , FooterMenuItem } from 'src/app/static/footer/footerList'; 3 | import { RecentArticles } from 'src/app/static/footer/recentArticles'; 4 | import { FollowIcons , Icon } from 'src/app/static/footer/followIcons'; 5 | 6 | 7 | @Component({ 8 | selector: 'app-footer', 9 | templateUrl: './footer.component.html', 10 | styleUrls: ['./footer.component.scss'] 11 | }) 12 | export class FooterComponent implements OnInit { 13 | 14 | constructor() { } 15 | 16 | footerMenuItems : FooterMenuOneItem[] = FooterMenuItem ; 17 | recentArticles : FooterMenuOneItem[] = RecentArticles ; 18 | followIcons : Icon[] = FollowIcons ; 19 | 20 | woman_img : string = '../../../../assets/woman.png' ; 21 | BBB_img : string = '../../../../assets/BBB.png' ; 22 | appStore_img : string = '../../../../assets/appStore.svg' ; 23 | googlePlay_img : string = '../../../../assets/googlePlay.svg' ; 24 | 25 | ngOnInit(): void { 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /vinovest/src/app/components/layouts/footer/wine-invest-card/wine-invest-card.component.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vinovest/src/app/components/layouts/footer/wine-invest-card/wine-invest-card.component.scss: -------------------------------------------------------------------------------- 1 | .footer-main { 2 | // display: flex; 3 | // justify-content: center; 4 | position: relative; 5 | .footer-card { 6 | font-weight: 500; 7 | background-color: rgb(239, 221, 199); 8 | border: 4px solid rgb(36, 46, 53); 9 | max-width: 980px; 10 | margin: 0px auto; 11 | padding: 80px 0px; 12 | display: flex; 13 | flex-direction: column; 14 | justify-content: center; 15 | align-items: center; 16 | position: relative; 17 | h2 { 18 | font-family: Roslindaledisplaycondensed, sans-serif ; 19 | font-size: 64px; 20 | line-height: 84px; 21 | text-align: center; 22 | margin: 0px; 23 | color: rgb(36, 46, 53); 24 | } 25 | p { 26 | margin: 0px; 27 | padding: 23px 0px 47px; 28 | font-family: VinovestMedium; 29 | font-size: 20px; 30 | line-height: 30px; 31 | text-align: center; 32 | max-width: 600px; 33 | } 34 | .start-wine-img { 35 | position: absolute; 36 | inset: auto auto 0px 15.23%; 37 | mix-blend-mode: multiply; 38 | } 39 | .end-wine-img { 40 | position: absolute; 41 | inset: auto 15.23% 0px auto; 42 | mix-blend-mode: multiply; 43 | } 44 | } 45 | .footer-background { 46 | position: absolute; 47 | height: 50%; 48 | width: 100%; 49 | top : 50%; 50 | z-index: -1; 51 | background-color: rgb(36, 46, 53); 52 | } 53 | } -------------------------------------------------------------------------------- /vinovest/src/app/components/layouts/footer/wine-invest-card/wine-invest-card.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { WineInvestCardComponent } from './wine-invest-card.component'; 4 | 5 | describe('WineInvestCardComponent', () => { 6 | let component: WineInvestCardComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ WineInvestCardComponent ] 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(WineInvestCardComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /vinovest/src/app/components/layouts/footer/wine-invest-card/wine-invest-card.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit , Input } from '@angular/core'; 2 | 3 | 4 | @Component({ 5 | selector: 'app-wine-invest-card', 6 | templateUrl: './wine-invest-card.component.html', 7 | styleUrls: ['./wine-invest-card.component.scss'] 8 | }) 9 | export class WineInvestCardComponent implements OnInit { 10 | 11 | constructor() { } 12 | 13 | label :string = 'get started'; 14 | onAnimationBtnClick = (e :any) => { 15 | console.log(e.target.innerHTML); 16 | }; 17 | startWine_img :string = '../../../../../assets/start_wine.svg'; 18 | endWine_img :string = '../../../../../assets/end_wine.svg' 19 | 20 | ngOnInit(): void { 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /vinovest/src/app/components/layouts/header/header.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 94 |
-------------------------------------------------------------------------------- /vinovest/src/app/components/layouts/header/header.component.scss: -------------------------------------------------------------------------------- 1 | $height : 90px; 2 | // common link css 3 | .link { 4 | font-size: 14px; 5 | cursor: pointer; 6 | line-height: 22px; 7 | margin: 0px 40px 0px 0px; 8 | font-weight: 500; 9 | text-align: center; 10 | text-decoration: none; 11 | position: relative; 12 | text-transform: uppercase; 13 | font-family: VinovestMono; 14 | 15 | } 16 | .mainMenu-link:hover { 17 | opacity: 0.5; 18 | } 19 | .close-menu { 20 | transition: transform 0.5s ease 0s; 21 | transform: translateY(-101%); 22 | opacity: 1; 23 | } 24 | .open-menu { 25 | transition: transform 0.7s ease 0s; 26 | transform: translateY(0%); 27 | z-index: 2000; 28 | opacity: 1; 29 | } 30 | .relative-class { 31 | position: relative; 32 | } 33 | .display-menu { 34 | transform: translateY( 0% ); 35 | transition: transform 0.7s ease 0s; 36 | z-index: 2000; 37 | } 38 | .close-menu { 39 | transform: translateY( -101% ); 40 | transition: transform 0.5s ease 0s; 41 | } 42 | 43 | // main custom css 44 | .header-main { 45 | // position: fixed; 46 | position: absolute; 47 | top: 0%; 48 | nav { 49 | position: fixed; 50 | width: 100%; 51 | } 52 | 53 | .nav-link { 54 | height: $height; 55 | padding : 0px 40px; 56 | display: flex; 57 | .logo { 58 | height : 100%; 59 | .logo-img { 60 | height: 100%; 61 | } 62 | } 63 | .header-desktop-transparent-menuitems { 64 | padding : 0px 0px 0px 58px; 65 | display: flex; 66 | align-items: center; 67 | width: 100%; 68 | .main-menu { 69 | display: flex; 70 | align-items: center; 71 | .mainMenu-link { 72 | // color : rgb(239, 221, 199) ; 73 | color : rgb(36, 46, 53) ; 74 | } 75 | .main-menu-new { 76 | position: absolute; 77 | top: -20px; 78 | left : 100%; 79 | color: white; 80 | background-color: rgb(69, 137, 207); 81 | font-size: 8px; 82 | line-height: 1; 83 | padding: 4px; 84 | } 85 | } 86 | .right-menu { 87 | display: flex; 88 | align-items: center; 89 | text-align: right; 90 | margin-left: auto; 91 | .login-link { 92 | padding: 12px 20px; 93 | border-radius : 3px; 94 | border : 1px solid rgb(36, 46, 53); 95 | color :rgb(36, 46, 53); 96 | margin-right: 0px !important; 97 | line-height: 18px; 98 | position: relative; 99 | } 100 | .login-link::after { 101 | content: ''; 102 | width: 50%; 103 | position: absolute; 104 | border-bottom: 2px solid rgb(36, 46, 53) ; 105 | left: 50%; 106 | display: block; 107 | padding-bottom: 5px; 108 | transform: translateX(-50%) ; 109 | } 110 | .right-started-btn { 111 | background-color: rgb(168, 109, 55); 112 | color : white; 113 | border-radius: 3px; 114 | padding: 12px 20px; 115 | margin-left: 20px; 116 | margin-right: 0px; 117 | line-height: 18px; 118 | border : none; 119 | font-family: VinovestMono; 120 | } 121 | .right-started-btn:hover { 122 | box-shadow: rgb(0 0 0 / 30%) 0px 4px 20px ; 123 | transition: box-shadow 0.6s ease-in-out 0s; 124 | } 125 | } 126 | } 127 | } 128 | 129 | .header-desktop-white { 130 | nav { 131 | background-color: white; 132 | } 133 | } 134 | 135 | .header-mobile { 136 | display: none; 137 | } 138 | 139 | 140 | } -------------------------------------------------------------------------------- /vinovest/src/app/components/layouts/header/header.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { HeaderComponent } from './header.component'; 4 | 5 | describe('HeaderComponent', () => { 6 | let component: HeaderComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ HeaderComponent ] 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(HeaderComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /vinovest/src/app/components/layouts/header/header.component.ts: -------------------------------------------------------------------------------- 1 | import { Location } from '@angular/common'; 2 | import { Component, OnInit , HostListener , Input } from '@angular/core'; 3 | import { MenuItem , MainMenuItems } from 'src/app/static/header/mainHeader'; 4 | 5 | @Component({ 6 | selector: 'app-header', 7 | templateUrl: './header.component.html', 8 | styleUrls: ['./header.component.scss'] 9 | }) 10 | 11 | export class HeaderComponent implements OnInit { 12 | 13 | mainColor : string = '' ; 14 | loginColor : string = '' ; 15 | 16 | logoImg_source : string = '../../../../assets/logo.svg' ; 17 | logoImg_light : string = '../../../../assets/logo_light.svg' ; 18 | isScrollDown : boolean = false ; 19 | 20 | logo_transparent : string = this.logoImg_light ; 21 | logo_white : string = this.logoImg_source ; 22 | event$ ; 23 | 24 | menuItems : MenuItem[] = MainMenuItems ; 25 | 26 | @HostListener('window:scroll', ['$event']) onScroll ( event :Event) : void { 27 | let YOffset :number = window.pageYOffset ; 28 | if ( YOffset < 5 ) { 29 | this.isScrollDown = false ; 30 | } else { 31 | this.isScrollDown = true 32 | } 33 | } 34 | 35 | constructor( location : Location) { 36 | this.event$ = location.onUrlChange( (val) => { 37 | if( val === '/') { 38 | this.mainColor = 'rgb(239, 221, 199)' ; 39 | } 40 | if( val.includes('about-us') ) { 41 | this.logo_transparent = this.logoImg_source ; 42 | } 43 | }) 44 | } 45 | 46 | ngOnInit(): void { 47 | } 48 | 49 | getYPosition(e: Event): number { 50 | return (e.target as Element).scrollTop; 51 | } 52 | } 53 | 54 | -------------------------------------------------------------------------------- /vinovest/src/app/directives/intersect/intersect-img.directive.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Directive, 3 | OnDestroy, 4 | Input, 5 | Output, 6 | EventEmitter, 7 | ElementRef, 8 | } from '@angular/core' 9 | import { debounceTime, Observable, Subscription } from 'rxjs'; 10 | 11 | import { range } from "lodash"; 12 | 13 | 14 | 15 | @Directive({ 16 | selector: '[appIntersectImg]', 17 | exportAs: 'intersection', 18 | }) 19 | 20 | export class IntersectImgDirective implements OnDestroy { 21 | 22 | getThreshold() { 23 | return range(100).map((i) => i/100) ; 24 | } 25 | 26 | @Input() root: HTMLElement | null = null 27 | @Input() rootMargin = '0px 0px 0px 0px' 28 | @Input() threshold = this.getThreshold() 29 | @Input() debounceTime = 100 30 | @Input() isContinuous = false 31 | 32 | @Output() isIntersecting = new EventEmitter() 33 | 34 | _isIntersecting : number = 0 35 | subscription: Subscription 36 | 37 | constructor (private element: ElementRef) { 38 | this.subscription = this.createAndObserve() 39 | } 40 | 41 | ngOnDestroy () { 42 | this.subscription.unsubscribe() 43 | } 44 | 45 | createAndObserve () { 46 | const options: IntersectionObserverInit = { 47 | root: this.root, 48 | rootMargin: this.rootMargin, 49 | threshold: this.threshold, 50 | } 51 | 52 | return new Observable(subscriber => { 53 | 54 | const intersectionObserver = new IntersectionObserver(entries => { 55 | 56 | const { intersectionRatio } = entries[0]; 57 | 58 | subscriber.next(intersectionRatio); 59 | 60 | 61 | intersectionRatio && !this.isContinuous && intersectionObserver.disconnect(); 62 | 63 | }, options) 64 | 65 | intersectionObserver.observe(this.element.nativeElement) 66 | 67 | return { 68 | unsubscribe () { 69 | intersectionObserver.disconnect() 70 | }, 71 | } 72 | }) 73 | .pipe(debounceTime(this.debounceTime)) 74 | .subscribe(status => { 75 | this.isIntersecting.emit(status) 76 | this._isIntersecting = status 77 | }) 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /vinovest/src/app/directives/scrollReveal/scroll-reveal.directive.spec.ts: -------------------------------------------------------------------------------- 1 | import { ScrollRevealDirective } from './scroll-reveal.directive'; 2 | 3 | describe('ScrollRevealDirective', () => { 4 | it('should create an instance', () => { 5 | const directive = new ScrollRevealDirective(); 6 | expect(directive).toBeTruthy(); 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /vinovest/src/app/directives/scrollReveal/scroll-reveal.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive , OnDestroy , Input, Output , EventEmitter ,ElementRef } from '@angular/core'; 2 | 3 | @Directive({ 4 | selector: '[appScrollReveal]', 5 | exportAs: 'useScrollReveal', 6 | }) 7 | export class ScrollRevealDirective implements OnDestroy { 8 | 9 | hasRevealed : boolean = false; 10 | 11 | constructor( private element : ElementRef ) { 12 | this.checkReveal() ; 13 | } 14 | 15 | ngOnDestroy () { 16 | window.removeEventListener("scroll", this.onWindowScroll); 17 | } 18 | 19 | 20 | checkReveal() { 21 | if( !this.hasRevealed ) { 22 | window.addEventListener("scroll" , this.onWindowScroll ); 23 | } 24 | } 25 | 26 | onWindowScroll() { 27 | const { clientHeight } = this.element.nativeElement; 28 | const { top } = this.element.nativeElement.getBoundingClientRect(); 29 | 30 | if ( top - window.innerHeight <=0 && top + clientHeight > 0 ) { 31 | this.hasRevealed = true; 32 | } 33 | } 34 | 35 | 36 | } 37 | -------------------------------------------------------------------------------- /vinovest/src/app/page/about-us/about-us.component.html: -------------------------------------------------------------------------------- 1 |
2 | 7 | 12 | 19 |
-------------------------------------------------------------------------------- /vinovest/src/app/page/about-us/about-us.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/app/page/about-us/about-us.component.scss -------------------------------------------------------------------------------- /vinovest/src/app/page/about-us/about-us.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { AboutUsComponent } from './about-us.component'; 4 | 5 | describe('AboutUsComponent', () => { 6 | let component: AboutUsComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ AboutUsComponent ] 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(AboutUsComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /vinovest/src/app/page/about-us/about-us.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { team_members , council_members , Member } from './members'; 3 | 4 | @Component({ 5 | selector: 'app-about-us', 6 | templateUrl: './about-us.component.html', 7 | styleUrls: ['./about-us.component.scss'] 8 | }) 9 | 10 | export class AboutUsComponent implements OnInit { 11 | 12 | constructor() { } 13 | 14 | header_title : string = "Democratizing Fine Wine Investing" ; 15 | header_content : string = "Fine wine has long been a cornerstone of wealth generation and preservation. The problem: historically, it’s been reserved for the ultra-wealthy. Vinovest is changing that." ; 16 | wine_img : string = '../../../assets/wineBackground.webp' ; 17 | 18 | leveraging_title :string = "Leveraging technology to provide access to all" ; 19 | lerveraging_content :string = "Vinovest is democratizing fine wine investing, providing clients with unparalleled access, liquidity, and transparency. Our combination of wine and technology experts makes it possible for everyday investors to own blue-chip wines from Burgundy, Bordeaux, and beyond. With our easy-to-use platform and team of portfolio advisors, you can have your profits and drink them, too"; 20 | leveraging_img :string = '../../../assets/leveraging.svg' ; 21 | 22 | team_questionTitle :string = "who are we?" ; 23 | team_title :string = "Vinovest is a team of world-class wine experts and the best technology talent." ; 24 | team_content :string = "Our talented team of experienced operators, software engineers, designers, and data scientists have previously started, scaled and sold several venture-backed companies."; 25 | team_members :Member[] = team_members ; 26 | council_members :Member[] = council_members ; 27 | 28 | 29 | 30 | ngOnInit(): void { 31 | } 32 | 33 | } 34 | 35 | -------------------------------------------------------------------------------- /vinovest/src/app/page/home/home.component.html: -------------------------------------------------------------------------------- 1 |
2 | 9 | 10 | 11 |
-------------------------------------------------------------------------------- /vinovest/src/app/page/home/home.component.scss: -------------------------------------------------------------------------------- 1 | .home-main { 2 | 3 | } 4 | 5 | -------------------------------------------------------------------------------- /vinovest/src/app/page/home/home.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { HomeComponent } from './home.component'; 4 | 5 | describe('HomeComponent', () => { 6 | let component: HomeComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ HomeComponent ] 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(HomeComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /vinovest/src/app/page/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { 3 | HeroTitle , HeroContent , HeroContentList, CompanyLogos , Logo , RightWines_Img 4 | } from 'src/app/static/home'; 5 | 6 | 7 | @Component({ 8 | selector: 'app-home', 9 | templateUrl: './home.component.html', 10 | styleUrls: ['./home.component.scss'] 11 | }) 12 | export class HomeComponent implements OnInit { 13 | 14 | constructor() { } 15 | 16 | title : string = HeroTitle ; 17 | content : string = HeroContent ; 18 | list : string[] = HeroContentList ; 19 | companyLogos : Logo[] = CompanyLogos ; 20 | 21 | rightWineImg : string = RightWines_Img ; 22 | 23 | 24 | ngOnInit(): void { 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /vinovest/src/app/shared/ui/animation-btn/animation-btn.component.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vinovest/src/app/shared/ui/animation-btn/animation-btn.component.scss: -------------------------------------------------------------------------------- 1 | .get-started-btn { 2 | min-width: 254px; 3 | height: 71px; 4 | padding: 0px 10px; 5 | background: transparent; 6 | border: 2px solid rgb(36, 46, 53); 7 | position: relative; 8 | margin: 0px auto; 9 | 10 | .get-started-btn-name{ 11 | color: rgb(239, 221, 199); 12 | font-size: 18px; 13 | text-transform: uppercase; 14 | background-color: rgb(36, 46, 53); 15 | position: absolute; 16 | left: 0px; 17 | top: 0px; 18 | width: 100%; 19 | height: 100%; 20 | display: flex; 21 | align-items: center; 22 | justify-content: center; 23 | font-family: Favoritmonostd, sans-serif; 24 | transform: translate3d(-8px, -8px, 0px) scale3d(1, 1, 1) rotateX(0deg) rotateY(0deg) rotateZ(0deg) skew(0deg, 0deg); 25 | transition: all 0.3s ease 0s; 26 | transform-style: preserve-3d; 27 | border: 2px solid rgb(36, 46, 53); 28 | } 29 | } 30 | .get-started-btn:hover { 31 | .get-started-btn-name { 32 | transform: translate3d(-16px, -16px, 0px) scale3d(1, 1, 1) rotateX(0deg) rotateY(0deg) rotateZ(0deg) skew(0deg, 0deg); 33 | background-color: rgb(239, 221, 199); 34 | color: rgb(36, 46, 53); 35 | transform-style: preserve-3d; 36 | } 37 | } -------------------------------------------------------------------------------- /vinovest/src/app/shared/ui/animation-btn/animation-btn.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { AnimationBtnComponent } from './animation-btn.component'; 4 | 5 | describe('AnimationBtnComponent', () => { 6 | let component: AnimationBtnComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ AnimationBtnComponent ] 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(AnimationBtnComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /vinovest/src/app/shared/ui/animation-btn/animation-btn.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit , Input } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-animation-btn', 5 | templateUrl: './animation-btn.component.html', 6 | styleUrls: ['./animation-btn.component.scss'] 7 | }) 8 | export class AnimationBtnComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | hover : boolean = false ; 13 | @Input() label :string = ''; 14 | @Input() onClick = (e :Event) => {} ; 15 | @Input() borderBtnColor : string = ''; 16 | @Input() hoverBorderLabelColor : string = '' ; 17 | @Input() bgColor : string = ''; 18 | @Input() fontColor : string = ''; 19 | @Input() hoverBgColor : string = ''; 20 | @Input() hoverFontColor : string = '' ; 21 | 22 | ngOnInit(): void { 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /vinovest/src/app/shared/ui/email-btn/email-btn.component.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vinovest/src/app/shared/ui/email-btn/email-btn.component.scss: -------------------------------------------------------------------------------- 1 | .email-btn-main { 2 | max-width: 371px; 3 | height: 60px; 4 | border: 1px solid rgb(250, 232, 209); 5 | position: relative; 6 | input { 7 | padding: 16px 24px; 8 | width: calc(100% - 60px); 9 | height: 100%; 10 | background-color: transparent; 11 | color: rgb(250, 232, 209); 12 | outline-width: 0px ; 13 | border: none !important; 14 | font-family: VinovestMedium; 15 | font-weight: 500; 16 | font-size: 16px; 17 | line-height: 26px; 18 | } 19 | input::placeholder { 20 | opacity: 1 !important; 21 | color: rgb(250, 232, 209); 22 | } 23 | button { 24 | border: none !important; 25 | height: 100%; 26 | position: absolute; 27 | width: 60px; 28 | background-color: rgb(250, 232, 209); 29 | svg { 30 | border: none; 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /vinovest/src/app/shared/ui/email-btn/email-btn.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { EmailBtnComponent } from './email-btn.component'; 4 | 5 | describe('EmailBtnComponent', () => { 6 | let component: EmailBtnComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ EmailBtnComponent ] 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(EmailBtnComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /vinovest/src/app/shared/ui/email-btn/email-btn.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-email-btn', 5 | templateUrl: './email-btn.component.html', 6 | styleUrls: ['./email-btn.component.scss'] 7 | }) 8 | export class EmailBtnComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit(): void { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /vinovest/src/app/shared/ui/learn-more-btn/learn-more-btn.component.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vinovest/src/app/shared/ui/learn-more-btn/learn-more-btn.component.scss: -------------------------------------------------------------------------------- 1 | .get-started-btn { 2 | min-width: 176px; 3 | height: 71px; 4 | padding: 0px 10px; 5 | background: transparent; 6 | border: 2px solid rgb(36, 46, 53); 7 | position: relative; 8 | margin: 0px auto; 9 | 10 | .get-started-btn-name{ 11 | color: rgb(36, 46, 53); 12 | font-size: 18px; 13 | text-transform: uppercase; 14 | background-color: white; 15 | position: absolute; 16 | left: 0px; 17 | top: 0px; 18 | width: 100%; 19 | height: 100%; 20 | display: flex; 21 | align-items: center; 22 | justify-content: center; 23 | font-family: Favoritmonostd, sans-serif; 24 | transform: translate3d(-8px, -8px, 0px) scale3d(1, 1, 1) rotateX(0deg) rotateY(0deg) rotateZ(0deg) skew(0deg, 0deg); 25 | transition: all 0.3s ease 0s; 26 | transform-style: preserve-3d; 27 | border: 2px solid rgb(36, 46, 53); 28 | } 29 | } 30 | .get-started-btn:hover { 31 | .get-started-btn-name { 32 | transform: translate3d(-16px, -16px, 0px) scale3d(1, 1, 1) rotateX(0deg) rotateY(0deg) rotateZ(0deg) skew(0deg, 0deg); 33 | background-color: rgb(36, 46, 53); 34 | color: white; 35 | transform-style: preserve-3d; 36 | } 37 | } -------------------------------------------------------------------------------- /vinovest/src/app/shared/ui/learn-more-btn/learn-more-btn.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { LearnMoreBtnComponent } from './learn-more-btn.component'; 4 | 5 | describe('LearnMoreBtnComponent', () => { 6 | let component: LearnMoreBtnComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ LearnMoreBtnComponent ] 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(LearnMoreBtnComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /vinovest/src/app/shared/ui/learn-more-btn/learn-more-btn.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit , Input } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-learn-more-btn', 5 | templateUrl: './learn-more-btn.component.html', 6 | styleUrls: ['./learn-more-btn.component.scss'] 7 | }) 8 | export class LearnMoreBtnComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | @Input() label : string = '' ; 13 | @Input() onClick = (e :Event) => {} ; 14 | 15 | ngOnInit(): void { 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /vinovest/src/app/shared/ui/notransform-btn/notransform-btn.component.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vinovest/src/app/shared/ui/notransform-btn/notransform-btn.component.scss: -------------------------------------------------------------------------------- 1 | @keyframes mouseIn { 2 | 0% { 3 | background-color: transparent; 4 | color :rgb(36, 46, 53 ); 5 | stroke: rgb(36, 46, 53 ); 6 | } 7 | 50% { 8 | background-color: rgb(36, 46, 53 ); 9 | color: rgb(36, 46, 53 ); 10 | stroke: rgb(36, 46, 53 ); 11 | } 12 | 100% { 13 | background-color: rgb(36, 46, 53 ); 14 | color: rgb(255, 255, 255); 15 | stroke: rgb(255, 255, 255); 16 | } 17 | } 18 | @keyframes mouseOut { 19 | 0% { 20 | background-color: rgb(36, 46, 53 ); 21 | color: rgb(255, 255, 255); 22 | stroke: rgb(255, 255, 255); 23 | } 24 | 50% { 25 | background-color: transparent; 26 | color: rgb(255, 255, 255); 27 | stroke: rgb(255, 255, 255); 28 | } 29 | 100% { 30 | background-color: transparent; 31 | color: rgb(36, 46, 53 ); 32 | stroke: rgb(36, 46, 53 ); 33 | } 34 | } 35 | 36 | .notransform-btn-main { 37 | display: flex; 38 | padding : 44px 20px; 39 | background-color: transparent; 40 | border: 4px solid rgb(36, 46, 53 ); 41 | color : rgb(36, 46, 53 ); 42 | position: relative; 43 | h3 { 44 | font-size: 34px; 45 | margin-top: 20px; 46 | margin-bottom: 10px; 47 | } 48 | .tail-title { 49 | position: relative; 50 | h3 { 51 | margin-bottom: 1px; 52 | } 53 | .arrow-wrapper { 54 | width: 100%; 55 | position: absolute; 56 | inset: auto 0px -23px; 57 | z-index: 100; 58 | } 59 | } 60 | .circle1 { 61 | position: absolute; 62 | height: 90px; 63 | width: 90px; 64 | border-radius: 50%; 65 | background-color: rgb(239 , 221 , 199); 66 | left: 14.28%; 67 | bottom: -50px; 68 | z-index: -1; 69 | } 70 | .circle2 { 71 | position: absolute; 72 | height: 138px; 73 | width: 138px; 74 | border-radius: 50%; 75 | background-color: rgb(230, 201, 201); 76 | inset : -48px -6.42% auto auto; 77 | z-index: -1; 78 | } 79 | } 80 | 81 | .mousein { 82 | animation: mouseIn 0.2s ease forwards; 83 | } 84 | .mousein line, 85 | .mousein path, 86 | .mousein h3 { 87 | animation: mouseIn 0.2s ease forwards; 88 | } 89 | 90 | .mouseout { 91 | animation: mouseOut 0.2s ease forwards; 92 | } 93 | .mouseout line, 94 | .mouseout path, 95 | .mouseout h3 { 96 | animation: mouseOut 0.2s ease forwards; 97 | } -------------------------------------------------------------------------------- /vinovest/src/app/shared/ui/notransform-btn/notransform-btn.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { NotransformBtnComponent } from './notransform-btn.component'; 4 | 5 | describe('NotransformBtnComponent', () => { 6 | let component: NotransformBtnComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ NotransformBtnComponent ] 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(NotransformBtnComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /vinovest/src/app/shared/ui/notransform-btn/notransform-btn.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit , Input } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-notransform-btn', 5 | templateUrl: './notransform-btn.component.html', 6 | styleUrls: ['./notransform-btn.component.scss'] 7 | }) 8 | export class NotransformBtnComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | @Input() askTitle :string = '' ; 13 | @Input() tailTitle :string = '' ; 14 | @Input() tail_img_path :string = '' ; 15 | @Input() width :string = '' ; 16 | @Input() font :string = '' ; 17 | 18 | isClicked :boolean = false ; 19 | 20 | handleBtn($event: any) : void { 21 | this.isClicked = $event.type === 'mouseover' ? true : false ; 22 | } 23 | 24 | ngOnInit(): void { 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /vinovest/src/app/static/footer/followIcons.ts: -------------------------------------------------------------------------------- 1 | export interface Icon { 2 | icon : string, 3 | path : string, 4 | } 5 | export const FollowIcons : Icon[] = [ 6 | { 7 | icon : '../../../assets/twitter.svg', 8 | path : '/twitter' 9 | }, 10 | { 11 | icon : '../../../assets/facebook.svg', 12 | path : '/facebook' 13 | }, 14 | { 15 | icon : '../../../assets/instagram.svg', 16 | path : '/instagram' 17 | }, 18 | { 19 | icon : '../../../assets/linkedin.svg', 20 | path : '/linkedin' 21 | }, 22 | ] -------------------------------------------------------------------------------- /vinovest/src/app/static/footer/footerList.ts: -------------------------------------------------------------------------------- 1 | export interface ListItems { 2 | label : string , 3 | path : string , 4 | } 5 | export interface FooterMenuOneItem { 6 | title : string, 7 | list : ListItems[], 8 | } 9 | export const FooterMenuItem : FooterMenuOneItem[] = [ 10 | { 11 | title : 'Company', 12 | list : [ 13 | { 14 | label : 'Home', 15 | path : '/', 16 | }, 17 | { 18 | label : 'About', 19 | path : '/about', 20 | }, 21 | { 22 | label : 'Vinovest council', 23 | path : '/vinovestcouncil', 24 | }, 25 | { 26 | label : 'Careers', 27 | path : '/careers', 28 | }, 29 | { 30 | label : 'Press', 31 | path : '/press', 32 | }, 33 | ], 34 | }, 35 | { 36 | title : 'Learn', 37 | list : [ 38 | { 39 | label : 'Why wine', 40 | path : '/whywine', 41 | }, 42 | { 43 | label : 'How it works', 44 | path : '/howitworks', 45 | }, 46 | { 47 | label : 'Vinovest 100', 48 | path : '/vinovest100', 49 | }, 50 | { 51 | label : 'Pricing', 52 | path : '/pricing', 53 | } 54 | ], 55 | }, 56 | { 57 | title : 'Services', 58 | list : [ 59 | { 60 | label : 'Guarantee', 61 | path : '/guarantee', 62 | }, 63 | { 64 | label : 'Sustainability', 65 | path : '/sustainability', 66 | }, 67 | { 68 | label : 'Wine futures', 69 | path : '/winefutures', 70 | }, 71 | { 72 | label : 'For Advisors', 73 | path : '/foradvisors', 74 | }, 75 | { 76 | label : 'Whiskeyvest', 77 | path : '/whiskeyvest', 78 | }, 79 | ], 80 | }, 81 | { 82 | title : 'Resources', 83 | list : [ 84 | { 85 | label : 'Blog', 86 | path : '/blog', 87 | }, 88 | { 89 | label : 'Help', 90 | path : '/help', 91 | }, 92 | { 93 | label : 'Contact me', 94 | path : '/contactme', 95 | }, 96 | { 97 | label : 'Privacy policy', 98 | path : '/privacypolicy', 99 | }, 100 | { 101 | label : 'T&C', 102 | path : '/t&c', 103 | }, 104 | { 105 | label : 'Accessibility', 106 | path : '/accessibility' 107 | } 108 | ] 109 | } 110 | ] -------------------------------------------------------------------------------- /vinovest/src/app/static/footer/recentArticles.ts: -------------------------------------------------------------------------------- 1 | interface List { 2 | label : string , 3 | path : string , 4 | } 5 | export interface FooterMenuOneItem { 6 | title : string, 7 | list : List[], 8 | } 9 | export const RecentArticles : FooterMenuOneItem[] = [ 10 | { 11 | title : 'Recent articles', 12 | list : [ 13 | { 14 | label : 'Champagne (Taste, Best Bottles, Prices 2021)', 15 | path : '/blog/champagne', 16 | }, 17 | { 18 | label : 'How to Make a Mimosa (Recipe, Wine Ideas, Serving)', 19 | path : '/blog/mimosa', 20 | }, 21 | { 22 | label : 'Easy Sangria Recipes (Tips, Best Wines)', 23 | path : '/blog/sangria', 24 | }, 25 | { 26 | label : 'Malbec Wine - Winemaking, Best Wines, Prices (2021)', 27 | path : '/blog/malbec-wine', 28 | }, 29 | { 30 | label : 'Sauvignon Blanc (Best Wines, Taste, Prices 2021)', 31 | path : '/blog/sauvignon-blanc', 32 | }, 33 | ], 34 | }, 35 | ] -------------------------------------------------------------------------------- /vinovest/src/app/static/header/mainHeader.ts: -------------------------------------------------------------------------------- 1 | export interface MenuItem { 2 | label : string, 3 | path : string, 4 | } 5 | 6 | export const MainMenuItems : MenuItem[] = [ 7 | { 8 | label : 'why wine', 9 | path : '/about-us' 10 | }, 11 | { 12 | label : 'how it works', 13 | path : '/howitworks', 14 | }, 15 | { 16 | label : 'marketplace', 17 | path : '/marketplace', 18 | }, 19 | { 20 | label : 'whiskeyvest', 21 | path : '/whiskeyvest', 22 | }, 23 | ] -------------------------------------------------------------------------------- /vinovest/src/app/static/header/subHeader.ts: -------------------------------------------------------------------------------- 1 | export interface SubHeaderMenuItem { 2 | title : string , 3 | description : string , 4 | path : string , 5 | } 6 | 7 | export const SubHeaderItems : SubHeaderMenuItem[] = [ 8 | { 9 | title : 'About', 10 | description : 'Democratizing Fine Wine Investing', 11 | path : '/about-us', 12 | }, 13 | { 14 | title : 'Blog', 15 | description : 'How can we help you?', 16 | path : '/blog', 17 | }, 18 | { 19 | title : 'FAG', 20 | description : 'The Cellar', 21 | path : '/help', 22 | }, 23 | ] -------------------------------------------------------------------------------- /vinovest/src/app/static/home/index.ts: -------------------------------------------------------------------------------- 1 | export interface WineHistoryType { 2 | percentage : number, 3 | history : string, 4 | } 5 | export interface Logo { 6 | label : string, 7 | path : string, 8 | } ; 9 | export interface EachPortfolio { 10 | img : string, 11 | title : string, 12 | desc : string, 13 | } 14 | export interface EachPortfolioItem { 15 | title : string, 16 | content : string, 17 | } 18 | export const CompanyLogos : Logo[] = [ 19 | { 20 | label : 'Forbes', 21 | path : '../../../assets/forbes.svg', 22 | }, 23 | { 24 | label : 'yahoo!', 25 | path : '../../../assets/yahoo.svg', 26 | }, 27 | { 28 | label : 'BUSINESS INSIDER', 29 | path : '../../../assets/businessInsider.svg', 30 | }, 31 | { 32 | label : 'TechCrunch', 33 | path : '../../../assets/techCrunch.svg', 34 | }, 35 | { 36 | label : 'Recommended By', 37 | path : '../../../assets/arrow_2.svg', 38 | }, 39 | ] ; 40 | export const HeroContentList : string[] = [ 41 | 'Attractive historical returns', 42 | 'Direct ownership of world-class wines', 43 | 'Portfolio diversity', 44 | 'Robust recession-resistance', 45 | ] ; 46 | export const HeroTitle = 'Fine Wine Investing for Everyone' ; 47 | export const HeroContent = 'Fine wine is the best-kept secret in investing. Vinovest is changing that.' ; 48 | 49 | export const RightWines_Img = '../../../assets/hero.webp' ; 50 | export const WineHistory : WineHistoryType[] = [ 51 | { 52 | percentage : 67, 53 | history : 'RELEASE-2015', 54 | }, 55 | { 56 | percentage : 156, 57 | history : 'RELEASE-2010', 58 | }, 59 | { 60 | percentage : 143, 61 | history : 'RELEASE-2009', 62 | }, 63 | { 64 | percentage : 89, 65 | history : 'RELEASE 2010', 66 | }, 67 | { 68 | percentage : 533, 69 | history : 'RELEASE 2000', 70 | }, 71 | ] 72 | export const ArrowUpImg : string = '../../../assets/arrowUp.svg' ; 73 | 74 | export const Portfolio : EachPortfolio[] = [ 75 | { 76 | img : '../../../assets/home/curatedPortfolio.svg', 77 | title : 'Curated Portfolio', 78 | desc : 'Say goodbye to rigorous research. Say hello to your personal portfolio advisor. At Vinovest, we do the hard work for you, creating globally diversified wine portfolios based on your investing preferences.', 79 | }, 80 | { 81 | img : '../../../assets/home/diversityPortfolio.svg', 82 | title : 'Portfolio Diversity', 83 | desc : 'Traditional portfolios are a mess. Stocks, bonds, and mutual funds are all vulnerable to similar risks. Not fine wine, though. Its low correlation with traditional markets makes it recession-resistant.', 84 | }, 85 | { 86 | img : '../../../assets/home/returns.svg', 87 | title : 'Excellent Returns', 88 | desc : 'Fine wine has returned 10.6% per year over the last 30 years, outperforming the global equities market during that same span.', 89 | }, 90 | { 91 | img : '../../../assets/home/pricing.svg', 92 | title : 'Insider pricing', 93 | desc : 'Stop overpaying. Vinovest purchases proven vintages and emerging contenders below retail price, maximizing your potential returns on investment.', 94 | }, 95 | { 96 | img : '../../../assets/home/advancedInsights.svg', 97 | title : 'Advanced Insights', 98 | desc : 'Harness the power of big data with our proprietary financial models. They analyze millions of historical data points to ensure a balanced portfolio of stable, high-performing wines.', 99 | }, 100 | { 101 | img : '../../../assets/home/hassleFree.svg', 102 | title : 'Hassle-free', 103 | desc : 'Hit pause on building that wine cellar. Vinovest takes care of authenticating, storing, and securing your wine. If you want to enjoy your wine, we’ll even ship it to your doorstep.', 104 | }, 105 | ] ; 106 | 107 | export const HowitworksImgs : string[] = [ 108 | '../../../assets/home/balancedInvesting.webp', 109 | '../../../assets/home/climens2016.webp', 110 | '../../../assets/home/totalAccValue.webp', 111 | '../../../assets/home/bonus.jpg', 112 | ] ; 113 | 114 | export const PortfolioList : EachPortfolioItem[] = [ 115 | { 116 | title : 'Tell us your goals', 117 | content : 'Stable returns or more aggressive? Our 1-minute assessment shapes your wine portfolio based on your investing preferences.', 118 | }, 119 | { 120 | title : 'We build your portfolio', 121 | content : 'After you fund your account, we utilize master sommeliers and AI-driven algorithms to select proven, high-appreciating wines for your portfolio.', 122 | }, 123 | { 124 | title : 'Watch your portfolio grow', 125 | content : 'You own your wines 100%. We’ll take care of your bottles in the meantime. Buy more, sell, or enjoy them as you wish.', 126 | }, 127 | { 128 | title : 'Bonus Step-Talk with an advisor', 129 | content : 'Have questions? Book a 1:1 video chat with a Vinovest advisor to learn more about different wines, brands, and investing strategies.', 130 | } 131 | ] ; -------------------------------------------------------------------------------- /vinovest/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/.gitkeep -------------------------------------------------------------------------------- /vinovest/src/assets/BBB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/BBB.png -------------------------------------------------------------------------------- /vinovest/src/assets/arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /vinovest/src/assets/arrowUp.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vinovest/src/assets/arrow_2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vinovest/src/assets/council_members/cj.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/council_members/cj.webp -------------------------------------------------------------------------------- /vinovest/src/assets/council_members/dlynn.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/council_members/dlynn.webp -------------------------------------------------------------------------------- /vinovest/src/assets/council_members/dustin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/council_members/dustin.jpg -------------------------------------------------------------------------------- /vinovest/src/assets/council_members/jane.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/council_members/jane.jpg -------------------------------------------------------------------------------- /vinovest/src/assets/council_members/jennifer.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/council_members/jennifer.webp -------------------------------------------------------------------------------- /vinovest/src/assets/council_members/jonathan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/council_members/jonathan.jpg -------------------------------------------------------------------------------- /vinovest/src/assets/end_wine.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /vinovest/src/assets/facebook.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /vinovest/src/assets/fonts/FavoritMonoStd-Medium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/fonts/FavoritMonoStd-Medium.otf -------------------------------------------------------------------------------- /vinovest/src/assets/fonts/FavoritStd-Medium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/fonts/FavoritStd-Medium.otf -------------------------------------------------------------------------------- /vinovest/src/assets/fonts/RoslindaleDisplayCondensed-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/fonts/RoslindaleDisplayCondensed-Bold.otf -------------------------------------------------------------------------------- /vinovest/src/assets/fonts/Vinovest-Medium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/fonts/Vinovest-Medium.otf -------------------------------------------------------------------------------- /vinovest/src/assets/fonts/Vinovest-Mono.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/fonts/Vinovest-Mono.otf -------------------------------------------------------------------------------- /vinovest/src/assets/forbes.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /vinovest/src/assets/hero.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/hero.webp -------------------------------------------------------------------------------- /vinovest/src/assets/home/advancedInsights.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /vinovest/src/assets/home/anthony.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/home/anthony.png -------------------------------------------------------------------------------- /vinovest/src/assets/home/articleInStocks.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/home/articleInStocks.jpg -------------------------------------------------------------------------------- /vinovest/src/assets/home/articleInWine.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/home/articleInWine.webp -------------------------------------------------------------------------------- /vinovest/src/assets/home/articleIncomplete.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/home/articleIncomplete.webp -------------------------------------------------------------------------------- /vinovest/src/assets/home/balancedInvesting.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/home/balancedInvesting.webp -------------------------------------------------------------------------------- /vinovest/src/assets/home/bonus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/home/bonus.jpg -------------------------------------------------------------------------------- /vinovest/src/assets/home/climens2016.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/home/climens2016.webp -------------------------------------------------------------------------------- /vinovest/src/assets/home/curatedPortfolio.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /vinovest/src/assets/home/david.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/home/david.png -------------------------------------------------------------------------------- /vinovest/src/assets/home/diversityPortfolio.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /vinovest/src/assets/home/dustinWilson.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/home/dustinWilson.webp -------------------------------------------------------------------------------- /vinovest/src/assets/home/grandCru.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/home/grandCru.webp -------------------------------------------------------------------------------- /vinovest/src/assets/home/hassleFree.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /vinovest/src/assets/home/hayk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/home/hayk.png -------------------------------------------------------------------------------- /vinovest/src/assets/home/howitworks.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/home/howitworks.webp -------------------------------------------------------------------------------- /vinovest/src/assets/home/janeLopes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/home/janeLopes.jpg -------------------------------------------------------------------------------- /vinovest/src/assets/home/man.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /vinovest/src/assets/home/mckenna.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/home/mckenna.webp -------------------------------------------------------------------------------- /vinovest/src/assets/home/phone.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /vinovest/src/assets/home/plus.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/home/plus.webp -------------------------------------------------------------------------------- /vinovest/src/assets/home/premium.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/home/premium.webp -------------------------------------------------------------------------------- /vinovest/src/assets/home/pricing.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /vinovest/src/assets/home/returns.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /vinovest/src/assets/home/starter.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/home/starter.webp -------------------------------------------------------------------------------- /vinovest/src/assets/home/totalAccValue.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/home/totalAccValue.webp -------------------------------------------------------------------------------- /vinovest/src/assets/home/woman.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /vinovest/src/assets/home/woman2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /vinovest/src/assets/home_wineImg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/home_wineImg.webp -------------------------------------------------------------------------------- /vinovest/src/assets/instagram.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /vinovest/src/assets/linkedin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /vinovest/src/assets/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /vinovest/src/assets/logo_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /vinovest/src/assets/start_wine.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/adam.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/adam.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/anthony.jfif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/anthony.jfif -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/arman.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/arman.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/austin.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/austin.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/brent.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/brent.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/charlie.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/charlie.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/conrad.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/conrad.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/elaine.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/elaine.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/fabrice.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/fabrice.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/hunter.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/hunter.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/jason.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/jason.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/john.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/john.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/juan.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/juan.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/karl.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/karl.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/kelly.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/kelly.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/kirsti.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/kirsti.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/laura.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/laura.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/lauren.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/lauren.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/lilian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/lilian.png -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/liz.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/liz.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/micah.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/micah.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/olivier.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/olivier.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/robyn.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/robyn.webp -------------------------------------------------------------------------------- /vinovest/src/assets/team_members/volodymyr.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/team_members/volodymyr.webp -------------------------------------------------------------------------------- /vinovest/src/assets/techCrunch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /vinovest/src/assets/twitter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /vinovest/src/assets/wineBackground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/wineBackground.webp -------------------------------------------------------------------------------- /vinovest/src/assets/woman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/assets/woman.png -------------------------------------------------------------------------------- /vinovest/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /vinovest/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false 7 | }; 8 | 9 | /* 10 | * For easier debugging in development mode, you can import the following file 11 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 12 | * 13 | * This import should be commented out in production mode because it will have a negative impact 14 | * on performance if an error is thrown. 15 | */ 16 | // import 'zone.js/plugins/zone-error'; // Included with Angular CLI. 17 | -------------------------------------------------------------------------------- /vinovest/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Topten1004/Angular/8f9f8c1fd7628a15735720ffbd7c7dc4d3b37244/vinovest/src/favicon.ico -------------------------------------------------------------------------------- /vinovest/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Vinovest 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /vinovest/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.error(err)); 13 | -------------------------------------------------------------------------------- /vinovest/src/polyfills.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file includes polyfills needed by Angular and is loaded before the app. 3 | * You can add your own extra polyfills to this file. 4 | * 5 | * This file is divided into 2 sections: 6 | * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. 7 | * 2. Application imports. Files imported after ZoneJS that should be loaded before your main 8 | * file. 9 | * 10 | * The current setup is for so-called "evergreen" browsers; the last versions of browsers that 11 | * automatically update themselves. This includes recent versions of Safari, Chrome (including 12 | * Opera), Edge on the desktop, and iOS and Chrome on mobile. 13 | * 14 | * Learn more in https://angular.io/guide/browser-support 15 | */ 16 | 17 | /*************************************************************************************************** 18 | * BROWSER POLYFILLS 19 | */ 20 | 21 | /** 22 | * By default, zone.js will patch all possible macroTask and DomEvents 23 | * user can disable parts of macroTask/DomEvents patch by setting following flags 24 | * because those flags need to be set before `zone.js` being loaded, and webpack 25 | * will put import in the top of bundle, so user need to create a separate file 26 | * in this directory (for example: zone-flags.ts), and put the following flags 27 | * into that file, and then add the following code before importing zone.js. 28 | * import './zone-flags'; 29 | * 30 | * The flags allowed in zone-flags.ts are listed here. 31 | * 32 | * The following flags will work for all browsers. 33 | * 34 | * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame 35 | * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick 36 | * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames 37 | * 38 | * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js 39 | * with the following flag, it will bypass `zone.js` patch for IE/Edge 40 | * 41 | * (window as any).__Zone_enable_cross_context_check = true; 42 | * 43 | */ 44 | 45 | /*************************************************************************************************** 46 | * Zone JS is required by default for Angular itself. 47 | */ 48 | import 'zone.js'; // Included with Angular CLI. 49 | 50 | 51 | /*************************************************************************************************** 52 | * APPLICATION IMPORTS 53 | */ 54 | -------------------------------------------------------------------------------- /vinovest/src/styles.scss: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | @import "bootstrap/dist/css/bootstrap.min.css"; 3 | 4 | 5 | html, body { height: 100%; } 6 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } 7 | 8 | @font-face { 9 | font-family: "RoslindaleDisplayCondensed"; 10 | font-display: swap; 11 | src: local("RoslindaleDisplayCondensed-Bold"), 12 | url("./assets/fonts/RoslindaleDisplayCondensed-Bold.otf") format("opentype"); 13 | } 14 | 15 | @font-face { 16 | font-family: "FavoritStd"; 17 | font-display: swap; 18 | src: local("FavoritStd-Medium"), url("./assets/fonts/FavoritStd-Medium.otf") format("opentype"); 19 | } 20 | 21 | @font-face { 22 | font-family: "FavoritMonoStd"; 23 | font-display: swap; 24 | src: local("FavoritMonoStd-Medium"), 25 | url("./assets/fonts/FavoritMonoStd-Medium.otf") format("opentype"); 26 | } 27 | 28 | @font-face { 29 | font-family: "VinovestMedium"; 30 | font-display: swap; 31 | src: local("Vinovest-Medium"), url("./assets/fonts/Vinovest-Medium.otf") format("opentype"); 32 | } 33 | 34 | @font-face { 35 | font-family: "VinovestMono"; 36 | font-display: swap; 37 | src: local("Vinovest-Mono"), url("./assets/fonts/Vinovest-Mono.otf") format("opentype"); 38 | } 39 | 40 | .section { 41 | padding: 86px 8.888% 0px; 42 | display: flex; 43 | flex-direction: column; 44 | align-items: center; 45 | margin: 0px auto; 46 | width: 100%; 47 | color: rgb(36, 46, 53); 48 | } -------------------------------------------------------------------------------- /vinovest/src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | 10 | declare const require: { 11 | context(path: string, deep?: boolean, filter?: RegExp): { 12 | (id: string): T; 13 | keys(): string[]; 14 | }; 15 | }; 16 | 17 | // First, initialize the Angular testing environment. 18 | getTestBed().initTestEnvironment( 19 | BrowserDynamicTestingModule, 20 | platformBrowserDynamicTesting(), 21 | ); 22 | 23 | // Then we find all the tests. 24 | const context = require.context('./', true, /\.spec\.ts$/); 25 | // And load the modules. 26 | context.keys().map(context); 27 | -------------------------------------------------------------------------------- /vinovest/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/app", 6 | "types": [] 7 | }, 8 | "files": [ 9 | "src/main.ts", 10 | "src/polyfills.ts" 11 | ], 12 | "include": [ 13 | "src/**/*.d.ts" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /vinovest/tsconfig.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "compileOnSave": false, 4 | "compilerOptions": { 5 | "baseUrl": "./", 6 | "outDir": "./dist/out-tsc", 7 | "forceConsistentCasingInFileNames": true, 8 | "strict": true, 9 | "noImplicitOverride": true, 10 | "noPropertyAccessFromIndexSignature": true, 11 | "noImplicitReturns": true, 12 | "noFallthroughCasesInSwitch": true, 13 | "sourceMap": true, 14 | "declaration": false, 15 | "downlevelIteration": true, 16 | "experimentalDecorators": true, 17 | "moduleResolution": "node", 18 | "importHelpers": true, 19 | "target": "es2017", 20 | "module": "es2020", 21 | "allowSyntheticDefaultImports": true, 22 | "lib": [ 23 | "es2020", 24 | "dom" 25 | ] 26 | }, 27 | "angularCompilerOptions": { 28 | "enableI18nLegacyMessageIdFormat": false, 29 | "strictInjectionParameters": true, 30 | "strictInputAccessModifiers": true, 31 | "strictTemplates": true 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vinovest/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "src/test.ts", 12 | "src/polyfills.ts" 13 | ], 14 | "include": [ 15 | "src/**/*.spec.ts", 16 | "src/**/*.d.ts" 17 | ] 18 | } 19 | --------------------------------------------------------------------------------