diff --git a/src/app/app.component.html b/src/app/app.component.html index f5c1a6e..c956840 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1 +1,6 @@ - +
+ +
+ + + diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 136719a..a6dd4c1 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -2,11 +2,14 @@ import { Component } from '@angular/core'; import { CommonModule } from '@angular/common'; import { RouterOutlet } from '@angular/router'; import {MenuComponent} from "./menu/menu.component"; +import {HeroComponent} from "./hero/hero.component"; +import {SectionComponent} from "./section/section.component"; +import {FooterComponent} from "./footer/footer.component"; @Component({ selector: 'iov-root', standalone: true, - imports: [CommonModule, RouterOutlet, MenuComponent], + imports: [CommonModule, RouterOutlet, MenuComponent, HeroComponent, SectionComponent, FooterComponent], templateUrl: './app.component.html', styleUrl: './app.component.scss' }) diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index dc39edb..2ba93ca 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -1,3 +1,31 @@ import { Routes } from '@angular/router'; +import {AboutPage} from "./pages/about/about.page"; +import {BlogPage} from "./pages/blog/blog.page"; +import {ProjectsPage} from "./pages/projects/projects.page"; +import {HomePage} from "./pages/home/home.page"; +import {PortfolioPage} from "./pages/portfolio/portfolio.page"; +import {ContactMePage} from "./pages/contact-me/contact-me.page"; -export const routes: Routes = []; +export const routes: Routes = [ + { path: '', component: HomePage }, + { + path: 'about', + component: AboutPage, + }, + { + path : 'portfolio', + component: PortfolioPage, + }, + { + path : 'blog', + component: BlogPage, + }, + { + path: 'projects', + component: ProjectsPage, + }, + { + path: 'hello', + component: ContactMePage, + } +]; diff --git a/src/app/arrow-scroll-down/arrow-scroll-down.component.html b/src/app/arrow-scroll-down/arrow-scroll-down.component.html new file mode 100644 index 0000000..1a84243 --- /dev/null +++ b/src/app/arrow-scroll-down/arrow-scroll-down.component.html @@ -0,0 +1,5 @@ +
+ + + +
diff --git a/src/app/arrow-scroll-down/arrow-scroll-down.component.scss b/src/app/arrow-scroll-down/arrow-scroll-down.component.scss new file mode 100644 index 0000000..228a5bb --- /dev/null +++ b/src/app/arrow-scroll-down/arrow-scroll-down.component.scss @@ -0,0 +1,38 @@ +.arrow { + position: absolute; + transform: translate(-50%, -50%) rotate(0deg); + cursor: pointer; +} + +.arrow span { + display: block; + width: 1.5vw; + height: 1.5vw; + border-bottom: 5px solid white; + border-right: 5px solid white; + transform: rotate(45deg); + margin: -10px; + animation: animate 2s infinite; +} + +.arrow span:nth-child(2) { + animation-delay: -0.2s; +} + +.arrow span:nth-child(3) { + animation-delay: -0.4s; +} + +@keyframes animate { + 0% { + opacity: 0; + transform: rotate(45deg) translate(-20px, -20px); + } + 50% { + opacity: 1; + } + 100% { + opacity: 0; + transform: rotate(45deg) translate(20px, 20px); + } +} diff --git a/src/app/arrow-scroll-down/arrow-scroll-down.component.spec.ts b/src/app/arrow-scroll-down/arrow-scroll-down.component.spec.ts new file mode 100644 index 0000000..c4b71a3 --- /dev/null +++ b/src/app/arrow-scroll-down/arrow-scroll-down.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ArrowScrollDownComponent } from './arrow-scroll-down.component'; + +describe('ArrowScrollDownComponent', () => { + let component: ArrowScrollDownComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ArrowScrollDownComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ArrowScrollDownComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/arrow-scroll-down/arrow-scroll-down.component.ts b/src/app/arrow-scroll-down/arrow-scroll-down.component.ts new file mode 100644 index 0000000..f89b250 --- /dev/null +++ b/src/app/arrow-scroll-down/arrow-scroll-down.component.ts @@ -0,0 +1,28 @@ +import {Component, HostListener} from '@angular/core'; +import {NgIf} from "@angular/common"; + +@Component({ + selector: 'iov-arrow-scroll-down', + standalone: true, + imports: [ + NgIf + ], + templateUrl: './arrow-scroll-down.component.html', + styleUrl: './arrow-scroll-down.component.scss' +}) +export class ArrowScrollDownComponent { + + visible: boolean = true; + + scrollDown() { + window.scrollBy({ + top: window.innerHeight, + behavior: 'smooth' + }); + } + + @HostListener('window:scroll', ['$event']) + checkIfPageIsStillOnTop() { + this.visible = window.scrollY <= 100; + } +} diff --git a/src/app/ascii-photo/ascii-photo.component.html b/src/app/ascii-photo/ascii-photo.component.html new file mode 100644 index 0000000..f65148e --- /dev/null +++ b/src/app/ascii-photo/ascii-photo.component.html @@ -0,0 +1,3 @@ +
+  {{photos[index]}}
+
diff --git a/src/app/ascii-photo/ascii-photo.component.scss b/src/app/ascii-photo/ascii-photo.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/ascii-photo/ascii-photo.component.spec.ts b/src/app/ascii-photo/ascii-photo.component.spec.ts new file mode 100644 index 0000000..b02d9a9 --- /dev/null +++ b/src/app/ascii-photo/ascii-photo.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AsciiPhotoComponent } from './ascii-photo.component'; + +describe('AsciiPhotoComponent', () => { + let component: AsciiPhotoComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [AsciiPhotoComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(AsciiPhotoComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/ascii-photo/ascii-photo.component.ts b/src/app/ascii-photo/ascii-photo.component.ts new file mode 100644 index 0000000..da2f950 --- /dev/null +++ b/src/app/ascii-photo/ascii-photo.component.ts @@ -0,0 +1,166 @@ +import {Component, Input} from '@angular/core'; + +@Component({ + selector: 'iov-ascii-photo', + standalone: true, + imports: [], + templateUrl: './ascii-photo.component.html', + styleUrl: './ascii-photo.component.scss' +}) +export class AsciiPhotoComponent { + @Input() index: number = 0; + photos = [` + **#*+====*#%%@@%%@%%+==+#######*++*##*+*++*#%*=========================+++*+*++++++=+=============== + *##*======+###%%@%%%+==+*##%%%##++###*+*=+##*=====================+++**#*******#*+++++============== + ##*+=======+***%%@%%#==++#%%%%##**###*++++#*+==++==============++***##*+=====++=++**++============== + *#++=========****#%%##%**#%%%%##*####++=+*##==++++====++=====++*####*===============+=============== + **++======--==+*#%%#%%%*+#%%%%%%###**+=+*######**++***====+**#####+================================= + **++*+++=+=====+*##%%%%#+*#%%%%%###***+**###*=++*##*+=-==**####++++=====-=========================== + ******####*+++==+**##%%#*+*#%%%%##***+*#%##++**##*=====+**##+=++++===--===-----------------========= + **+**#++==+*#%#**+#+#%%%##*#%%%%%#*#*+#%##*##*#+===-=*+*#*===+***++++==----------------------------- + *+++===-====-=+####*###%##*##%%%%#*##*####*+#*=-===+*##+-==+**###*+=++================-------------- + +*##+=-==========#####*#######%%%#*#*####+##+---==+**=-==++####++=+##+*+**####***+=----------------- + #++=+##+******+**++#%#########%%%%##*###+*#=----++*+--==+**%##*###############****+====------------- + #%#+*++##*++------+**#%#+#####%%%##**##***----=+*+--==***##*####*+===------=+++*####*++==----------- + *####%#+==*+=-------+###**#####%%##**#*+*=---==*=--++*####*+++==-------------====*###*=------------- + ===**#%#*++=+==-------*#######%%%#######+--==++--=+=*#+=--------------------==--=+++**=-=----------- + ---=----+*#*+=+=---====+##*##%%%%#%####**+**##*+=+**=-=----------:::::::::-=++--====+*++---:::::::-- + ------------=**+*=======+#**#%###%%######*+*+=-**+---:-----::::::::::::::::-==----====+==--::::::::: + -=======-=++=++*#**++=-==+#*#%#######+###**+==++=*=====---:::::::::::::::::-++==--=-===*++====+++=== + =+**********+--=+***++--===++#####%**##*#*=+++###%%%%%@#=-================+=======++==++*++=-------- + *+-::::-==+++++=---++*+----+=*#*###**#**++*#%%%%%%%%%@@@%******+++==-----------------==++====------- + ++===+=+===+====+++==*+++===**#*##*####+*#%%%%%%%%%%%%**#%%%%%%%%%%%%#%%#-----------=-=+====------== + +*****+===-=---------==****+*##*###+*###%%%%%%%%#%###+++*%%%@@%%%%%%@@@@@#+++++++++**+**+*+++++=++++ + -:-----:------==--::::-+*##*=#%##%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@%%%##*++**+=++*+++++==+++=== + :--========+======+*++**######%%%#%%%%%%%%%%%%%%@@@@%#####%%%%%%%@@@%%%%%@@%###*+====-====--=----==- + +*++++***+++++++**+**####%%%%%%#%@%%%%%%%%%%#**+++++++++++++++*#%@@@@@@@%@%%%**##**==--------------- + =+===+=--=+=-===-=**###%%%%%%%##%%%%%%%%%#++=========+++==++++++++**#%@@@@%%#+--#*++=--------------- + -------------=+*######**%%%%%%%#%%%%%%#++===================+++++++++**%@%%%%#+-:+##++=---:::--::-:: + :::::------:-*%##=###+***+%#@@%%%%%%*++===========================+++++**%@@@%%*---##+=---:-----==== + ::::--::::-=**#*+#%**++*++%@%%%%%@%*++============================+++++++*#%@@%#=-:-*##*++++++++++++ + -:----:::=*#*#**##**+++*+=#@%%%%@#+++===============================+++++++*%@@%*:::-+***=----::---- + :::---:-=##**#-*#*=--:=*:::-#%@%*++++==============================+++++++++*%%@%=:::-+*+=---------- + --------+###*++##*=---=*---+%%#++++++================================++++++++*%@%*::::=***#*######## + ::::-:-+##*++=**#=+########%%#+++++++================================++++++++*%%@%-::::=******#***** + -:::--+#*#*=-=#+*-+******##%%*+++++===============================+++++++++***#%@%-:::::=*****##**** + :-::-+###*=:-=*+--+******#%%#++++++++****#######*++++===========+++++++++++****%%%-::::-:*****##**** + ::---****=-::--=:-*******#%%*++++++*#%%%%%%%%%%%###**+++++++++++******+++++++**#%#-::::::+*****#**** + -::-=*+++-::::--:-******##@%*++++*#####*******######**+++++++**###%%%%%###**+**#%+::::::--*****#**++ + :::-=*+=-::::::::-******#%@%*+++*####*********######**+===++*###%%%%%%%%%%%%#**#%=::::::--+****#**** + -::-+*=-:::::::::=******#%@%*+++**####%%%%%%%%%%%%#**++====+*##%%#########%%%#*%#:::::::::=****##*** + ::--++--:::::::::+******#*@#++++***##%%%#%@@@@##%%#**+======+#%%%%%########%%%#%-:::::::-:-*****#*** + ---------:::::---**++***#*##+++++***********####****++======+*%%#%@@@@@%%%#####*::::::::::-*****#*** + ---:::-:::::::---**++****++*+++++++++************+++=========**#####%##%%%%##*#=::::::::---*******++ + -----------:::---#*+++++#*+*++++======+++*****+++============+****#*########***=========++++++++++++ + =============++==+====+*****+++=========================--===+*****#***********+----:-----::----:::: + ==============--=-----+*++*#*++++================+====----====++++++***+++++++**=:::-::::--::::::-:: + ------=----------::--:=++*##**+++============+++=====------====+++++++++++++++**---------========--= + ------=--------=------=+**#%#**+++=++=====++++++======-----===++**++++++=+++***+=++++++*++++++++++++ + *+++++::::::--:::...::-+++*%#**+++++++++++**+=+++++++++=====+++*+**+++++++++**#+++++*+++++++++++===+ + *##**+::::::::::::-=+==+++*%%#*++*#*+++***+====+*%%%%#**++++*****+++++++*++**##=----------------:::: + ==+++-::::::::::=*#**#**+++#%#*++**++***++++++++*##########%@%#**++++++******%#-:::::::::-::--:----- + --=--:::::::::::+**###*##+*%%#*****+*#****#####%#%%%%%%%%%%@@%%#**+++**+****##+:::::::::-:::-::::-:: + ==--=::::::::::-+******#@@@%%#*+***+*####%%%%%%%%%%%%%%%%%@%@%%%%####*******##=--:::::-:-::::::::--: + ---=-::::::::::=+******#@@@@%#***##*###%%%%%#######**##%%##%%%%%%%%%%##*****##+-:-::::--::--------=- + -----:::::::::-=======-*@@@@%%#*###**##%@%%##%#################%%%%%%%%#######=-------------------:- + -----::--:==--=+=--::::*@@@@%%###%%#*##%#**++++++++++++++++**###%%@@@%%######+=:------------:--:-:-- + ----:::---:-::===--::::=%@@@@%%##%%%###**+++++++**++++++++++++*****#%%##%%%##=-:::::--------:-::---- + --=-:::::::::::-========*@@@@@%%%%%%%###**++==++*##############*****#%##%%%%+-:::::::--------------= + ----::::::::::::::::::::::*%@@@%%%%%%%%%##*++++++***##%%%%###**++***#%%%%%%*-::::::::-:::-----=--=*# + ----:::::::::::-:::::-:::-=*#*#@@%%%%%%%%##*+++++++**#######**++****#%%%%%%=::::::::---:::::---=*### + --=-==++++*#########%%%%%%###***%%%%%%%%%##*+++++++++********++***#%%%%@@%+-----::-------------***## + ----==++=+#%%%@%%%%%%%%%%%#****+*%%%%%%%%%%#****++++++++++*+*++**#%%%%%@#=---------------------*#### + ----=-====################****+++**%@@%%%%%%##**#****++****#***###%%%%@%+----:-----------------+#*%# + =-=======+#%%%%%%%%%%%%%%%#****++***%@@@@%%%%%######******#####%%%%%@@#++---::::::-:::-:-------=+*** + -========+#%%@@@@%%%%%%%%%#****++++**#%%%%%@%%%%%############%%%%@@@@%###*************+::------=*++* + ---=-==--+#%%%@@%%@%*##%%#****++++++**##%@@@@@@%%%%%%%%%%%%%%%%@@@@%#*%%%%%%%%%%%%%%%%#--------=*#*# + +++++*+++*#########****##****+++++++++**#%@@@@@@@%%%%%%%%%%%%@@@@%#***%%%%%%%%%%%%%%%%#========-++*+ + --=-=====*##%%%@%%@#####+**++++++++++++***##%@@@@@@@@%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%##+++*##* + ==+=====+#%#%%%%%%#+==--=*+++++++++++++++*****#%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%=+##* + ========+#%#%%#+===-==---++++++++++++++++++******##########**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+=*** + --======*#*=====+=--==----+++++++++++++++++++****************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+=*** + =-=============++===-==---=**++++++++++++++++++**************#%%%%%%%%%#%%%%##%%#%#%%#%%%%%%%%%+=+++ + =======---===+++====--=----=**+++++++++++++++++++***********+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*=+*+ + ========--=++++======-===----+*+++++++++++++++++++++++****+++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+=+## + =====+==--=+++=========-==-----++++++++++++++++++++++++++*+++#%%%%%%%%%%%%#%%%%%%#%#%%%%%%%%%%%+==== + ======+==--=++===-======-==-----=++++++++++++++++++++++*+++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+==== + =======+==-=++===-=======--==------=**+++++++************+++*#=-------------------------------*+=+== + ===========-+++===-=======---=--------=++++**************++*+#-::::::=-=--=--==---==-:=-::::::*+=++= + =====+======+++======-=====----=---------==++******#***++====*-:::::-:---:-::---:-:--:=-::::::*+=++= + ====++==---=+++===-==-=======----==-----=====================*-:::::::::::::::::::::::::::::::*+==++ + ====++===--==+++=====---========----==-----==================*-:::::::::::::::::::::::::::::::*+==++ + ===+++====-==+++======--============--====----===============*-:::::::::::::::::::::::::::::::*+==++ + +++++++==--==+*+=======--====================================****=-:::::::::::::::::::::::-+*+#+==++ + +++++++==---=+*++=======-=====================================##+-:=+#*=-:::::::::::-+*#+-:-+#*===++ + +++++++==--==+*++========--=======================================+***+====+*+++++=-=+***++=++====++ + +++++++==---=+*++========================================================+*##+=*##*+++======+++====+ + ++++++====--=+*++===================================================================++=======++====+ + +++++++===--==*++===================================================================+++=======+++==+ + +++++++===--==*++===================================================================+++========+++=+ + ==+++++==---==*++===================================================================+++=========++++ + ==+++++===--==**++===========================================++=====================+*+==========+++ + ===+++++===-==**++=+==+===================+=++===============+==================+===+*++===+====++++ + +===++++======**++++=+++=========+==============+++=========++=================++===+*++========++++ + +===+++++=====+*++++++++==================================++++=================+++==+**++=+====+++++ + +====++++=====+*+++++++===========++==+=======+===++=+===+++++================++++===+*++=++===+++++ + +====++++=====+*+++++++==========+++++++==+=++=+++++====+++++===============+=++++===+*++==+=++++*++ + ++++=++++=====+*++++++============+++++==++++++++++++++++++++================++++++==+*+++==+++++*++ + ++++==+++=====+*++++++++==========+++++++=+++++++++++++++++++======+========+++++++==+*+++=++++++*++ + *++++=+++=====+*+++++++==========++++++++++++++++++++++++++++++++===========+++++++==+*+++++++++*+++`, + ` + + + + + + ´›¦)vòri¯…\` + \`­ceåëëýýÖÒÞŸj°‚ + \`¯ôÚðÒkµ5ç±Cò‰öVµ0)´ + …?§åÝú±sƒorvvjvjctu2sº + …>DU©ó‰JIrì[[[7>ï1c¤JÌ0¡\` + tÓxLÌò¼¤jl<[¿[[¿7ì1o%‡Ìw”\` + ¨žå©çVósƒrï†?¿[¿†ïcJó±ò‰©Í:\` + ‚Þxúô20C‡IîíiiïcCΞ5ùaaÍsÎï· + …äf5õaÍönôx5©¢í=ÏhZÿÎ2Í@½‰y½ò¨ + Jšyf&6àkÎUDÒµ‰=ï%@03½trî%Ï5C; + ~ÇTOSZád$àwVçÍI[†ïvjrîoc%Ïkçcˆ + …iZy9ààžyôóuLLJ?/[1IJsu@CóUyj‹ + \`›£Çx5Vs¤î1oó2eS5§Úx5aaLCÌüÝr… + \`’shSξç@u‡z0šGŽÐéñSUhbá¾f2ô• + \`~TñèDŸ6T5ÏÍyñÓýšL‰ƒ½tcuõž6x¡ + ·+9ÓmëkUSfÇâpDµõykUCcrsfÝžS¹ + ·*üámÓTkFášOúúaYV%ïju™O§žì\` + \`ˆ›¯Ddñ$m8èP6™YC¤oCxhb8ôv´ + ¨?ÕqÕAAqA$ÙÿZäåðŠA¾sï; + |ZgXgHÁ#Nþæ##ê®Í½1i¡\` + ›Vx§áåðH#ê$Ÿõ£sIí>׫˜¨\` + !bõYaõOUT¾úY±ò½%l[?×?[òÇŸ>…\` + ¨|OÕæÛóóÍ0©ü2çù0sztí7}×׿7@åèdÓFä9ö|’\` + \`›ÏÜÔœÁNÅBp3nòsnC±@¢‡o=[++?*׉áëÚ$ýåÞÞÿDZähkVª¨ + \`°ÏñÞëð XÄ#æQHšCs½‡½zJtj=†}†[†CèܶðëÙÙ$ÚdèÖåÞFáñDhôv› + \`^2FÞÙýëððøâããßqŽþÁ#ÁXS3öö@Ìöƒìi=wÙG¶ãéëddëÚéëýÙÜÞÖÓdÞåDPûí… + \`’‡áÞë$ë$éé8¶¶ððG¶¶ãßÐÄNÁEþRKgÛÔApmmA€âøÚ$$$ë8¶ð$$éÜýýmëýëÙèFû>· + \`/Pè8$$ø€âÜ8Úðø88¶mâ¶ø¶pÛRÄÀHXœÐÛÛÕÕp¶ððéÚ8Ü$ÚðGGÚéøÚëpÜýâ¶ëÞbá§•\` + \`÷šådÚø¶ðÚÔqÚ$8¶ðÚðGââ¶ðøð¶ãÔÐqmøðéðððéééÚéé8Ü$éøß8¶¶Ú¶GÜ€âÜëÜÙÿäž¹ + ;µå$ë$ð¶G¶éŠÔÜÚGðÜéðé¶øøðéø¶mpÔÕAââGðøðððÚÜé8Ú8éâ€øãGðß¶ŠßðGðëýÞDš2… + \`¿àè$Gâð¶mø¶¶ÐøéøðÚ8éÜðéé88ðøðmmÔÔpâøøéðÚÚðééð8ééGÔâpã¶ãqÛãßâÚÜ$ÞÒ¥Ý* + ‚ôFëÚðpÔøøÔâGp¶ø¶øÚéðéÚÚÚÚ8ðéÚ8¶mppã¶ð8Ú8Ü8ÚÚÚ8Úð¶Õm€ß〜AÔââ¶Ú$$ÙÓš2… + \`[ûÞÜðø¶pÕããKmAãø¶øÚÚÚéÚÚÚÚÚÚðéøéð¶â¶øð8é888Ú8ðéÜ8¶AmÔêAêqŠßAGøãøëýÓ¥e” + …Låë$ܶp€€ÛAßÄÔ€ðééééðð8Ú88ÚÚé¶ðø¶ø¶G¶éðððð8Úéé8ééâp€ÔœêHÐÔÐmÕßéÚÚ$ÓF𱂠+ ‹4Ùððé8ÜøÔêÐAâK€ðøø¶¶øøð8éÚÜÚ8Üø¶¶¶ø¶¶ðøéððð8ééðððøpAAœXHŽHAÔ¶éé8ÜdýÿZ®I· + —edéððG¶88âÐÀgÔê¶Gãmã¶øøøéðÚÚÜÜéøøø¶øøâ¶éøéðéðøøðø¶m€AXKÀÄÕ€øéøøÜ$$dÖbZú¯ + \`[ûÜéßâÚðããðÚ¶RÁRmmßßmm¶øéÚÚð8éÜéðø¶âââ¶¶G¶øðé8éøðøGmßÔŽÄNœA¶ãpâé88ÜëÞÿbÝ<\` + …sÿÙÜðAÕGÜÚðð88ÔE€p€pppâG¶é888éÚé8ø¶âããâââøøðÚéøø¶¶ãpÔêHþEqããÔâð¶øéÜëdýÖPz’ + ’çÙÙ$88GAßøÚÚéðãgÛAÔÔA€pãG¶¶¶ðð8éøð¶ããããããG¶¶¶ø¶¶mâãAŠgÀÁEÕßÔã$DàÓð88é$ýFU}· + ²ôÚ¶ÚëÚééømm8ë$GggÔÕqŠÔ€mãG¶G¶øðøø¶¶âmmmmmmâããâããßpßÔÐRþæÁÛ€D±cc‡µ9nj¾8dåZ™^\` + ¡OÙ¶mGÜÚÚé8ð¶ðÜéÔŽqêgêÛÔApmãâãGãGâ¶ãâmp€ppppp߀ßÔÔÕqÐŽÀNQãõjïI‡¤ííïoJ5Ü8èÒP¼‚ + (kÙ8¶ÔÔGÚ8ð88ðÚémKgœŽœÐêÛÔ€pmmmmm€ãpp€ßA€ÔÔÔAÔÔÔÔŠqgœHEE¥uvo¼l[[íƒzovJÝð$ýb9^\` + ´iPÙÚøø€qÔâéðøéðéâHHHŽœgêêÛÕ€pmpßm€ß€€AAÔÔÛÕÕŠÛÛÛŠêgœREŽŸ½‰¢%%î1j<>jr¼ÒGðÜýÒPï· + …rÒdðøøGmÔŠ€øéâøðâÄNÀXXXggÐêÕ€pp€AAÔÔAÔÔÔÕŠÛêqÛqqêÐœŽœý0z½‰¤t½ti + + diff --git a/src/app/button-cta/button-cta.component.scss b/src/app/button-cta/button-cta.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/button-cta/button-cta.component.spec.ts b/src/app/button-cta/button-cta.component.spec.ts new file mode 100644 index 0000000..33b818e --- /dev/null +++ b/src/app/button-cta/button-cta.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ButtonCtaComponent } from './button-cta.component'; + +describe('ButtonCtaComponent', () => { + let component: ButtonCtaComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ButtonCtaComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ButtonCtaComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/button-cta/button-cta.component.ts b/src/app/button-cta/button-cta.component.ts new file mode 100644 index 0000000..7433b3d --- /dev/null +++ b/src/app/button-cta/button-cta.component.ts @@ -0,0 +1,12 @@ +import {Component, Input} from '@angular/core'; + +@Component({ + selector: 'iov-button-cta', + standalone: true, + imports: [], + templateUrl: './button-cta.component.html', + styleUrl: './button-cta.component.scss' +}) +export class ButtonCtaComponent { + @Input() url: string = ''; +} diff --git a/src/app/card/card.component.html b/src/app/card/card.component.html new file mode 100644 index 0000000..7373920 --- /dev/null +++ b/src/app/card/card.component.html @@ -0,0 +1,17 @@ +
+
+
+ +
+
+ +
+
+ + + + +
+
+
diff --git a/src/app/card/card.component.scss b/src/app/card/card.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/card/card.component.spec.ts b/src/app/card/card.component.spec.ts new file mode 100644 index 0000000..bdc1ede --- /dev/null +++ b/src/app/card/card.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CardComponent } from './card.component'; + +describe('CardComponent', () => { + let component: CardComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [CardComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(CardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/card/card.component.ts b/src/app/card/card.component.ts new file mode 100644 index 0000000..02811e6 --- /dev/null +++ b/src/app/card/card.component.ts @@ -0,0 +1,17 @@ +import {Component, Input} from '@angular/core'; +import {ButtonCtaComponent} from "../button-cta/button-cta.component"; + +@Component({ + selector: 'iov-card', + standalone: true, + imports: [ + ButtonCtaComponent + ], + templateUrl: './card.component.html', + styleUrl: './card.component.scss' +}) +export class CardComponent { + + @Input() color: 'light' | 'dark' = 'light'; + @Input() ctaUrl: string = ''; +} diff --git a/src/app/footer/footer.component.html b/src/app/footer/footer.component.html new file mode 100644 index 0000000..55dc406 --- /dev/null +++ b/src/app/footer/footer.component.html @@ -0,0 +1,18 @@ +
+ + + Talk is cheap + + + Interested in working together?
We should queue up a time to chat.
I’ll buy the coffee :) +
+ + Let's Talk! + +
+
+ Footer + Website made with etc... +
+
diff --git a/src/app/footer/footer.component.scss b/src/app/footer/footer.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/footer/footer.component.spec.ts b/src/app/footer/footer.component.spec.ts new file mode 100644 index 0000000..4647de8 --- /dev/null +++ b/src/app/footer/footer.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FooterComponent } from './footer.component'; + +describe('FooterComponent', () => { + let component: FooterComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [FooterComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(FooterComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/footer/footer.component.ts b/src/app/footer/footer.component.ts new file mode 100644 index 0000000..dfb252b --- /dev/null +++ b/src/app/footer/footer.component.ts @@ -0,0 +1,15 @@ +import { Component } from '@angular/core'; +import {CardComponent} from "../card/card.component"; + +@Component({ + selector: 'iov-footer', + standalone: true, + imports: [ + CardComponent + ], + templateUrl: './footer.component.html', + styleUrl: './footer.component.scss' +}) +export class FooterComponent { + +} diff --git a/src/app/hero/hero.component.html b/src/app/hero/hero.component.html new file mode 100644 index 0000000..c37237a --- /dev/null +++ b/src/app/hero/hero.component.html @@ -0,0 +1,37 @@ +
+
+
+
+ + +
+

Hello, I'm Lorenzo!

+

+ I'm a Software Engineer and Web Developer based in Sicily. +
This is my personal website, where I share my projects and my thoughts (sometimes 😅). +

Feel free to navigate through my website and discover more about me. +

+ +
+ For any question or collaboration, feel free to contact me via email +
or find me on socials + + + + + + +
+
+
+
+
+
+
+
diff --git a/src/app/hero/hero.component.scss b/src/app/hero/hero.component.scss new file mode 100644 index 0000000..a6511e4 --- /dev/null +++ b/src/app/hero/hero.component.scss @@ -0,0 +1,28 @@ +@keyframes blink { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@keyframes blink-inverted { + from { + opacity: 1; + } + to { + opacity: 0; + } +} + +#asciiPhoto { + opacity: 0; + animation: blink-inverted 2s 1; +} + +#originalPhoto { + opacity: 1; + animation: blink 2s 1; +} + diff --git a/src/app/hero/hero.component.spec.ts b/src/app/hero/hero.component.spec.ts new file mode 100644 index 0000000..13beb6c --- /dev/null +++ b/src/app/hero/hero.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HeroComponent } from './hero.component'; + +describe('HeroComponent', () => { + let component: HeroComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [HeroComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(HeroComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/hero/hero.component.ts b/src/app/hero/hero.component.ts new file mode 100644 index 0000000..bbcd80a --- /dev/null +++ b/src/app/hero/hero.component.ts @@ -0,0 +1,20 @@ +import {Component} from '@angular/core'; +import {AsciiPhotoComponent} from "../ascii-photo/ascii-photo.component"; +import {AsyncPipe, NgClass, NgIf} from "@angular/common"; + +@Component({ + selector: 'iov-hero', + standalone: true, + imports: [ + AsciiPhotoComponent, + NgIf, + NgClass, + AsyncPipe, + ], + templateUrl: './hero.component.html', + styleUrl: './hero.component.scss' +}) +export class HeroComponent { + constructor() { + } +} diff --git a/src/app/menu/menu.component.html b/src/app/menu/menu.component.html index a1081eb..ea77c09 100644 --- a/src/app/menu/menu.component.html +++ b/src/app/menu/menu.component.html @@ -1,3 +1,28 @@ -

- menu works! -

+ + diff --git a/src/app/menu/menu.component.ts b/src/app/menu/menu.component.ts index a675060..c0433f9 100644 --- a/src/app/menu/menu.component.ts +++ b/src/app/menu/menu.component.ts @@ -1,9 +1,12 @@ import { Component } from '@angular/core'; +import {ButtonCtaComponent} from "../button-cta/button-cta.component"; @Component({ selector: 'iov-menu', standalone: true, - imports: [], + imports: [ + ButtonCtaComponent + ], templateUrl: './menu.component.html', styleUrl: './menu.component.scss' }) diff --git a/src/app/page/page.component.html b/src/app/page/page.component.html new file mode 100644 index 0000000..7c88652 --- /dev/null +++ b/src/app/page/page.component.html @@ -0,0 +1,6 @@ +
+
+ + +
+
diff --git a/src/app/page/page.component.scss b/src/app/page/page.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/page/page.component.spec.ts b/src/app/page/page.component.spec.ts new file mode 100644 index 0000000..c389595 --- /dev/null +++ b/src/app/page/page.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PageComponent } from './page.component'; + +describe('PageComponent', () => { + let component: PageComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [PageComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(PageComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/page/page.component.ts b/src/app/page/page.component.ts new file mode 100644 index 0000000..afcf442 --- /dev/null +++ b/src/app/page/page.component.ts @@ -0,0 +1,15 @@ +import { Component } from '@angular/core'; +import {FooterComponent} from "../footer/footer.component"; + +@Component({ + selector: 'iov-page', + standalone: true, + imports: [ + FooterComponent + ], + templateUrl: './page.component.html', + styleUrl: './page.component.scss' +}) +export class PageComponent { + +} diff --git a/src/app/pages/about/about.page.html b/src/app/pages/about/about.page.html new file mode 100644 index 0000000..f21e30b --- /dev/null +++ b/src/app/pages/about/about.page.html @@ -0,0 +1,8 @@ + + +

Since beginning my journey as a freelance designer over 11 years ago, I've done remote work for agencies, consulted for startups, and collaborated with talented people to create digital products for both business and consumer use. I'm quietly confident, naturally curious, and perpetually working on improving my chops one design problem at a time. + Designer + I value simple content structure, clean design patterns, and thoughtful interactions.

+
diff --git a/src/app/pages/about/about.page.scss b/src/app/pages/about/about.page.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pages/about/about.page.spec.ts b/src/app/pages/about/about.page.spec.ts new file mode 100644 index 0000000..648c446 --- /dev/null +++ b/src/app/pages/about/about.page.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AboutPage } from './about.page'; + +describe('AboutComponent', () => { + let component: AboutPage; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [AboutPage] + }) + .compileComponents(); + + fixture = TestBed.createComponent(AboutPage); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/about/about.page.ts b/src/app/pages/about/about.page.ts new file mode 100644 index 0000000..58a7d85 --- /dev/null +++ b/src/app/pages/about/about.page.ts @@ -0,0 +1,17 @@ +import { Component } from '@angular/core'; +import {SectionComponent} from "../../section/section.component"; +import {PageComponent} from "../../page/page.component"; + +@Component({ + selector: 'iov-about-page', + standalone: true, + imports: [ + SectionComponent, + PageComponent + ], + templateUrl: './about.page.html', + styleUrl: './about.page.scss' +}) +export class AboutPage { + +} diff --git a/src/app/pages/blog/blog.page.html b/src/app/pages/blog/blog.page.html new file mode 100644 index 0000000..ff0c151 --- /dev/null +++ b/src/app/pages/blog/blog.page.html @@ -0,0 +1 @@ +

blog works!

diff --git a/src/app/pages/blog/blog.page.scss b/src/app/pages/blog/blog.page.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pages/blog/blog.page.spec.ts b/src/app/pages/blog/blog.page.spec.ts new file mode 100644 index 0000000..e3a0350 --- /dev/null +++ b/src/app/pages/blog/blog.page.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BlogPage } from './blog.page'; + +describe('BlogComponent', () => { + let component: BlogPage; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [BlogPage] + }) + .compileComponents(); + + fixture = TestBed.createComponent(BlogPage); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/blog/blog.page.ts b/src/app/pages/blog/blog.page.ts new file mode 100644 index 0000000..e53f7f3 --- /dev/null +++ b/src/app/pages/blog/blog.page.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'iov-blog-page', + standalone: true, + imports: [], + templateUrl: './blog.page.html', + styleUrl: './blog.page.scss' +}) +export class BlogPage { + +} diff --git a/src/app/pages/contact-me/contact-me.page.html b/src/app/pages/contact-me/contact-me.page.html new file mode 100644 index 0000000..63c441f --- /dev/null +++ b/src/app/pages/contact-me/contact-me.page.html @@ -0,0 +1 @@ +

contact-me works!

diff --git a/src/app/pages/contact-me/contact-me.page.scss b/src/app/pages/contact-me/contact-me.page.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pages/contact-me/contact-me.page.spec.ts b/src/app/pages/contact-me/contact-me.page.spec.ts new file mode 100644 index 0000000..6758399 --- /dev/null +++ b/src/app/pages/contact-me/contact-me.page.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ContactMePage } from './contact-me.page'; + +describe('ContactMeComponent', () => { + let component: ContactMePage; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ContactMePage] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ContactMePage); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/contact-me/contact-me.page.ts b/src/app/pages/contact-me/contact-me.page.ts new file mode 100644 index 0000000..8a42aa5 --- /dev/null +++ b/src/app/pages/contact-me/contact-me.page.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'iov-contact-me-page', + standalone: true, + imports: [], + templateUrl: './contact-me.page.html', + styleUrl: './contact-me.page.scss' +}) +export class ContactMePage { + +} diff --git a/src/app/pages/home/home.page.html b/src/app/pages/home/home.page.html new file mode 100644 index 0000000..07dce73 --- /dev/null +++ b/src/app/pages/home/home.page.html @@ -0,0 +1,13 @@ +
+ +
+ + + + +

+ Lorem ipsum dolor sit amet, consectet adipiscing elit. Nulla ac dui euismod, aliquam nunc quis, tincidunt nisl. Donec euismod, nisl eget aliquam ultricies, nunc nisl aliquet nunc, quis aliquam nunc nisl quis nunc. Nulla facilisi. Sed euismod, nisl eget aliquam ultricies, nunc nisl aliquet nunc, quis aliquam nunc nisl quis nunc. Nulla facilisi. Sed euismod, nisl eget aliquam ultricies, nunc nisl aliquet nunc, quis aliquam nunc nisl quis nunc. Nulla facilisi. Sed euismod, nisl eget aliquam ultricies, nunc nisl aliquet nunc, quis aliquam nunc nisl quis nunc. Nulla facilisi. Sed euismod, nisl eget aliquam ultricies, nunc nisl aliquet nunc, quis aliquam nunc nisl quis nunc. Nulla facilisi. Sed euismod, nisl eget aliquam ultricies, nunc nisl aliquet nunc, quis aliquam nunc nisl quis nunc. Nulla facilisi. Sed euismod, nisl eget aliquam ultricies, nunc nisl aliquet nunc, quis aliquam nunc nisl quis nunc. Nulla facilisi.

+
+
+ + diff --git a/src/app/pages/home/home.page.scss b/src/app/pages/home/home.page.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pages/home/home.page.spec.ts b/src/app/pages/home/home.page.spec.ts new file mode 100644 index 0000000..87c7e5d --- /dev/null +++ b/src/app/pages/home/home.page.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HomePage } from './home.page'; + +describe('HomeComponent', () => { + let component: HomePage; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [HomePage] + }) + .compileComponents(); + + fixture = TestBed.createComponent(HomePage); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/home/home.page.ts b/src/app/pages/home/home.page.ts new file mode 100644 index 0000000..6b39fe0 --- /dev/null +++ b/src/app/pages/home/home.page.ts @@ -0,0 +1,25 @@ +import { Component } from '@angular/core'; +import {HeroComponent} from "../../hero/hero.component"; +import {SectionComponent} from "../../section/section.component"; +import {PageComponent} from "../../page/page.component"; +import {FooterComponent} from "../../footer/footer.component"; +import {CardComponent} from "../../card/card.component"; +import {ArrowScrollDownComponent} from "../../arrow-scroll-down/arrow-scroll-down.component"; + +@Component({ + selector: 'iov-home-page', + standalone: true, + imports: [ + HeroComponent, + SectionComponent, + PageComponent, + FooterComponent, + CardComponent, + ArrowScrollDownComponent + ], + templateUrl: './home.page.html', + styleUrl: './home.page.scss' +}) +export class HomePage { + +} diff --git a/src/app/pages/portfolio/portfolio.page.html b/src/app/pages/portfolio/portfolio.page.html new file mode 100644 index 0000000..ad9d4d3 --- /dev/null +++ b/src/app/pages/portfolio/portfolio.page.html @@ -0,0 +1,7 @@ + + + + +

My works

+
diff --git a/src/app/pages/portfolio/portfolio.page.scss b/src/app/pages/portfolio/portfolio.page.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pages/portfolio/portfolio.page.spec.ts b/src/app/pages/portfolio/portfolio.page.spec.ts new file mode 100644 index 0000000..6fd38e3 --- /dev/null +++ b/src/app/pages/portfolio/portfolio.page.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PortfolioPage } from './portfolio.page'; + +describe('WorksComponent', () => { + let component: PortfolioPage; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [PortfolioPage] + }) + .compileComponents(); + + fixture = TestBed.createComponent(PortfolioPage); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/portfolio/portfolio.page.ts b/src/app/pages/portfolio/portfolio.page.ts new file mode 100644 index 0000000..a3e688d --- /dev/null +++ b/src/app/pages/portfolio/portfolio.page.ts @@ -0,0 +1,19 @@ +import { Component } from '@angular/core'; +import {SectionComponent} from "../../section/section.component"; +import {PageComponent} from "../../page/page.component"; +import {FooterComponent} from "../../footer/footer.component"; + +@Component({ + selector: 'iov-portfolio-page', + standalone: true, + imports: [ + SectionComponent, + PageComponent, + FooterComponent + ], + templateUrl: './portfolio.page.html', + styleUrl: './portfolio.page.scss' +}) +export class PortfolioPage { + +} diff --git a/src/app/pages/projects/projects.page.html b/src/app/pages/projects/projects.page.html new file mode 100644 index 0000000..b303dc2 --- /dev/null +++ b/src/app/pages/projects/projects.page.html @@ -0,0 +1,7 @@ + + + + +

My projects bla bla bla

+
diff --git a/src/app/pages/projects/projects.page.scss b/src/app/pages/projects/projects.page.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pages/projects/projects.page.spec.ts b/src/app/pages/projects/projects.page.spec.ts new file mode 100644 index 0000000..ab45e00 --- /dev/null +++ b/src/app/pages/projects/projects.page.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ProjectsPage } from './projects.page'; + +describe('ProjectsComponent', () => { + let component: ProjectsPage; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ProjectsPage] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ProjectsPage); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/projects/projects.page.ts b/src/app/pages/projects/projects.page.ts new file mode 100644 index 0000000..bbe6ca3 --- /dev/null +++ b/src/app/pages/projects/projects.page.ts @@ -0,0 +1,17 @@ +import { Component } from '@angular/core'; +import {SectionComponent} from "../../section/section.component"; +import {PageComponent} from "../../page/page.component"; + +@Component({ + selector: 'iov-projects-page', + standalone: true, + imports: [ + SectionComponent, + PageComponent + ], + templateUrl: './projects.page.html', + styleUrl: './projects.page.scss' +}) +export class ProjectsPage { + +} diff --git a/src/app/section/section.component.html b/src/app/section/section.component.html new file mode 100644 index 0000000..c430d7c --- /dev/null +++ b/src/app/section/section.component.html @@ -0,0 +1,8 @@ +
+

{{title}}

+
+
+
+ +
+
diff --git a/src/app/section/section.component.scss b/src/app/section/section.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/section/section.component.spec.ts b/src/app/section/section.component.spec.ts new file mode 100644 index 0000000..ac46d65 --- /dev/null +++ b/src/app/section/section.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SectionComponent } from './section.component'; + +describe('SectionComponent', () => { + let component: SectionComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [SectionComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(SectionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/section/section.component.ts b/src/app/section/section.component.ts new file mode 100644 index 0000000..cd80625 --- /dev/null +++ b/src/app/section/section.component.ts @@ -0,0 +1,15 @@ +import {Component, Input} from '@angular/core'; + +@Component({ + selector: 'iov-section', + standalone: true, + imports: [ + ], + templateUrl: './section.component.html', + styleUrl: './section.component.scss' +}) +export class SectionComponent { + @Input() title: string = ''; + @Input() titleColor: 'light' | 'dark' = 'light'; + @Input() backgroundImageUrl: string = ''; +} diff --git a/src/assets/github.svg b/src/assets/github.svg new file mode 100644 index 0000000..2dfec51 --- /dev/null +++ b/src/assets/github.svg @@ -0,0 +1,19 @@ + + + + + github [#142] + Created with Sketch. + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/linkedin.svg b/src/assets/linkedin.svg new file mode 100644 index 0000000..02530e7 --- /dev/null +++ b/src/assets/linkedin.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/me-baby.jpg b/src/assets/me-baby.jpg new file mode 100644 index 0000000..ec8526b Binary files /dev/null and b/src/assets/me-baby.jpg differ diff --git a/src/assets/me.png b/src/assets/me.png new file mode 100644 index 0000000..01f4e4e Binary files /dev/null and b/src/assets/me.png differ diff --git a/src/assets/section-hobby.png b/src/assets/section-hobby.png new file mode 100644 index 0000000..a9e75aa Binary files /dev/null and b/src/assets/section-hobby.png differ diff --git a/src/assets/section-smart.png b/src/assets/section-smart.png new file mode 100644 index 0000000..19467ca Binary files /dev/null and b/src/assets/section-smart.png differ diff --git a/tailwind.config.js b/tailwind.config.js index 7586753..4743c3a 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -4,7 +4,25 @@ module.exports = { "./src/**/*.{html,ts}", ], theme: { - extend: {}, + colors: { + white: "#FEFEFF", + primary: "#FFB600", + secondary: "#00baff", + accent: "#0028FF", + neutral: "#2a2009", + "base-100": "#fffafd", + info: "#00bade", + success: "#00c448", + warning: "#ff8b00", + error: "#ff5f7d", + transparent: "transparent", + }, + fontFamily: { + sans: ['Graphik', 'sans-serif'], + serif: ['Merriweather', 'serif'], + }, + extend: { + }, }, plugins: [], }