diff --git a/04-Typescript/19-PersonalProject/Lee/easyvet.html b/04-Typescript/19-PersonalProject/Lee/easyvet.html deleted file mode 100644 index 608419727..000000000 --- a/04-Typescript/19-PersonalProject/Lee/easyvet.html +++ /dev/null @@ -1,45 +0,0 @@ - - -<<<<<<< HEAD -======= - ->>>>>>> 7473a3df52bf457216d9852d7b1fca3092105c27 - - - - - -<<<<<<< HEAD - EasyVet - - - -======= - - - EasyVet - - - -
-
- - - - -
- - -
- ->>>>>>> 7473a3df52bf457216d9852d7b1fca3092105c27 - - \ No newline at end of file diff --git a/04-Typescript/19-PersonalProject/Lee/easyvet.scss b/04-Typescript/19-PersonalProject/Lee/easyvet.scss deleted file mode 100644 index a8d5775ab..000000000 --- a/04-Typescript/19-PersonalProject/Lee/easyvet.scss +++ /dev/null @@ -1,46 +0,0 @@ - -*{ - margin: 0; -} - html { - background-color: rgb(15, 215, 215); -} - -.wrapper { - i { - padding-right: 10px; - } - - - .header { - display: block; - text-align: right; - background-color: #03a1a1; - width: 100%; - height: 25px; - font-size: 22px; - - } - - - .navigation { - display: block; - text-align: center; - justify-content: space-between; - width: 100%; - color: rgb(86, 86, 86); - font-family: "Quicksand", sans-serif; - font-weight: bold; - font-size: 20px; - background-color: #bcbcbc; - - - -} - -#paw { - width: 40px; - height: 40px; -} - -} \ No newline at end of file diff --git a/04-Typescript/19-PersonalProject/Lee/easyvet.ts b/04-Typescript/19-PersonalProject/Lee/easyvet.ts deleted file mode 100644 index 2cbdcef93..000000000 --- a/04-Typescript/19-PersonalProject/Lee/easyvet.ts +++ /dev/null @@ -1,69 +0,0 @@ -class Client { - id: string; - constructor(public name: string, public owner: string, public image: string, public birthYear: number) { - this.id = uid(); - } -} - -const clients: Client[] = [ - new Client("Nella", "Judith Dekel", "https://www.instagram.com/p/CX-9-hdIUFd/?img_index=1", 2021), - new Client("Jango", "Linor Monir", "https://media.istockphoto.com/id/1259203799/photo/portrait-of-a-young-happy-belgian-shepherd-dog-malinois-posing-outdoors.jpg?s=612x612&w=0&k=20&c=yxDw11q_2NAgrUdm0AuBkqY1UnY9MKmtiaoeWOgHNRg=", 2022), - new Client("Dubi", "Barak Ortman", "https://www.thesprucepets.com/thmb/DRKAoOkKeWmh5SMzDvapRfnZpn0=/4984x0/filters:no_upscale():strip_icc()/1_BlackPuppy-5ba50070c9e77c0082221c54.jpg", 2021), - new Client("Cocus", "Yael Ortman", "https://thumbs.dreamstime.com/b/labrador-puppy-5857333.jpg", 2020), - new Client("Hugo", "Netali Ortman", "https://qph.cf2.quoracdn.net/main-qimg-199d9dbd6c8b38138ed8ba833ec82162-lq", 2015) - - - - -] - -class Vaccine { - id: string; - constructor(public vacName: string, public price: number) { - this.id = uid(); - } -} - -const Vaccines: Vaccine[] = [ - - new Vaccine("Rabies", 100), - new Vaccine("FVRCP", 80), - new Vaccine("FHV", 60), - new Vaccine("FHV-1", 70), - new Vaccine("Parvovirus", 120), - new Vaccine("Leptospirosis", 50), - new Vaccine("Distemper", 200), - new Vaccine("Canine Infectious Hepatitis", 130) -] - -class Treatment { - id: string; - constructor(public treatName: string, public price: number) { - this.id = uid(); - } -} - -const treatments: Treatment[] = [ - new Treatment("Haircut", 200), - new Treatment("Hospitalization per night", 450), - new Treatment("teeth cleaning", 100), - new Treatment("x-ray", 100), - new Treatment("US", 100), -] - - -class Supply { - id: string; - constructor(public supName: string, public price: number) { - this.id = uid(); - } -} - - -const supplies: Supply[] = [ - new Supply("Medical food 1 can", 17), - new Supply("Ampoule Anti-flea & Tick", 47), - new Supply("seringe", 10) - - -] diff --git a/04-Typescript/19-PersonalProject/Lee/index.html b/04-Typescript/19-PersonalProject/Lee/index.html deleted file mode 100644 index af182bc01..000000000 --- a/04-Typescript/19-PersonalProject/Lee/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - Document - - - - - - - -
-
-
- -
-

-

Fri July 7, 2023

-
- -
-
-
Sun
-
Mon
-
Tue
-
Wed
-
Thu
-
Fri
-
Sat
-
-
- -
-
-
- - - - \ No newline at end of file diff --git a/04-Typescript/19-PersonalProject/Lee/index.ts b/04-Typescript/19-PersonalProject/Lee/index.ts deleted file mode 100644 index 82ad3c379..000000000 --- a/04-Typescript/19-PersonalProject/Lee/index.ts +++ /dev/null @@ -1,72 +0,0 @@ -const date: Date = new Date(); - -const renderCalendar = () => { - - - -date.setDate(1); - -const monthDays: Element | null = document.querySelector(".days") - -const lastDay = new Date(date.getFullYear(), date.getMonth()+1, 0).getDate(); - -const prevLastDay = new Date(date.getFullYear(), date.getMonth(), 0).getDate(); - -const firstDayIndex = date.getDay() - -const lastDayIndex = new Date(date.getFullYear(), date.getMonth()+1, 0).getDay(); - -const nextDays = 7 - lastDayIndex - 1; - -const months = [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" -]; - -document.querySelector(".date h1")?.innerHTML = months [date.getMonth()] - -document.querySelector(".date p")?.innerHTML = date.toDateString() - -let days = ""; - -for (let x = firstDayIndex; x > 0; x--) { - days += `
${prevLastDay - x + 1}
`; -} - -for (let i = 1; i <= lastDay; i++) { - if (i === new Date().getDate() && date.getMonth() === new Date().getMonth()){ - days += `
${i}
`; - - } else { - days += `
${i}
`; - - } - -} - -for (let j = 1; j <= nextDays; j++) { - days += `
${j}
`; - monthDays.innerHTML = days; -} -} -document.querySelector('.prev')?.addEventListener('click', () => { - date.setMonth(date.getMonth() - 1) - renderCalendar() -}) - -document.querySelector('.next')?.addEventListener('click', () => { - date.setMonth(date.getMonth() + 1) - renderCalendar() -}) - -renderCalendar() \ No newline at end of file diff --git a/04-Typescript/19-PersonalProject/Lee/pages/main.html b/04-Typescript/19-PersonalProject/Lee/pages/main.html deleted file mode 100644 index 19c06286d..000000000 --- a/04-Typescript/19-PersonalProject/Lee/pages/main.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - easyVet App - - - - - -
- main -
- - - - - \ No newline at end of file diff --git a/04-Typescript/19-PersonalProject/Lee/pages/main.scss b/04-Typescript/19-PersonalProject/Lee/pages/main.scss deleted file mode 100644 index a9204af73..000000000 --- a/04-Typescript/19-PersonalProject/Lee/pages/main.scss +++ /dev/null @@ -1,185 +0,0 @@ - -*{ - margin: 0; - padding: 0; - color: #fff; - font-family: "Quicksand", sans-serif; - letter-spacing: 1px; - font-size: 20px; -} - -html { - height: 100%; - -body { - - display: flex; - flex-direction: column; - min-height: 100%; - - img { - margin-top: 1rem; - } - - nav { - height: 4rem; - width: 100vw; - display: flex; - position: fixed; - z-index: 10; - background-color: #03a1a1; - box-shadow: 0 3px 20px rgba(0,0,0,0.2); - - - - .logo { - padding: -2vh 7vw; - width: 20vw; - - img { - height: 12rem; - width: 20rem; - } - } - - .nav__links { - width: 60vw; - display: flex; - gap: 1.7rem; - pad: 0 0.7vw; - align-items: center; - justify-content: center; - list-style: none; - font-weight: bold; - font-size: larger; - - } - - .nav__links li a { - margin: 0 0.7vw; - text-decoration: none; - transform: all ease-in-out 350ms; - padding: 10px; - - &:hover { - background-color: #5cc4c4; - padding: 10px; - border-radius: 50px; - - } - - &:hover::before { - width:80%; - } - - } - - .nav__links li { - position: relative; - - - &:nth-child(1){ - transition: all 0.5s ease 0.2s; - } - &:nth-child(2){ - transition: all 0.5s ease 0.4s; - } - &:nth-child(3){ - transition: all 0.5s ease 0.6s; - } - &:nth-child(4){ - transition: all 0.5s ease 0.7s; - } - &:nth-child(5){ - transition: all 0.5s ease 0.8s; - } - &:nth-child(6){ - transition: all 0.5s ease 1s; - } - - } - - .hamburger div{ - width: 30px; - height: 3px; - background: #fff; - margin: 5px; - transform: all 0.3s ease; - } - - .hamburger { - display: none; - } - - @media (max-width:800px) { - nav{ - position: fixed; - z-index: 3; - } - - .hamburger { - display: block; - position: absolute; - cursor: pointer; - right: 5%; - top: 50%; - transform: translate(-5%, -50%); - z-index: 2; - transition: all 0.7s ease; - } - - .nav__links { - background: #03a1a1; - position: fixed; - opacity: 1; - height: 100vh; - width: 100%; - flex-direction: column; - clip-path: circle(50px at 90% -20%); - transition: all 1s ease-out; - pointer-events: none; - padding-top: 1.3rem; - - } - - .nav__links.open { - clip-path: circle(1000px at 90% -10%); - pointer-events: all; - gap: 5rem; - } - -} -} - -.container { - &__img { - width: 100vw; - height: auto; - } -} - -.main { - - &__img { - - width: 100vw; - padding-top:7rem; - } -} - -footer { - - background-color: darkgray; - width: 100vw; - height: 10px; - padding-bottom: 15px; - margin-top: auto; - - i { - padding-left: .3rem; - } - -} - -} -} diff --git a/04-Typescript/19-PersonalProject/Lee/pages/main.ts b/04-Typescript/19-PersonalProject/Lee/pages/main.ts deleted file mode 100644 index 0f21d9d50..000000000 --- a/04-Typescript/19-PersonalProject/Lee/pages/main.ts +++ /dev/null @@ -1,373 +0,0 @@ -class Patient { - id: string; - isEdit: boolean = false; - constructor(public name: string, public owner: string, public phone: string, public image: string, public birthYear: number, id?: string | null) { - if (id) { - this.id = id; - } else { - - this.id = `${Math.random()}` - } - } - - setEdit(set: boolean) { - this.isEdit = set; - } -} - -<<<<<<< HEAD - -const patients: Patient[] = getPatientsFromStorage(); - -function getPatientsFromStorage(): Patient[] { - try { - const patientsString = localStorage.getItem("patients"); - if (!patientsString) return []; - - const patientsArray = JSON.parse(patientsString) - - const patients: Patient[] = patientsArray.map((patient: Patient) => { - return new Patient(patient.name, patient.owner, patient.phone, patient.image, patient.birthYear, patient.id) - }) - - return patients - -======= -const firstPatiens: Patient[] = [ - - new Patient( - "Oscar", "Lee Dekel", "0521111111", "https://media.istockphoto.com/id/462488163/photo/tabby-grey-cat-lying-on-white-background.jpg?s=612x612&w=0&k=20&c=PowgpbMeU8jJwlHrkVQY3SLGrr_83pR8m6_arn_M3BA=", 2006 - ), - new Patient( - "Nella", "Judith Dekel", "0522222222", "https://www.letsgetpet.com/wp-content/uploads/2021/02/chat-tricolore.jpeg", 2021 - ), - new Patient( - "Dubi", "Barak Ortman", "0521201120", "https://www.thesprucepets.com/thmb/DRKAoOkKeWmh5SMzDvapRfnZpn0=/4984x0/filters:no_upscale():strip_icc()/1_BlackPuppy-5ba50070c9e77c0082221c54.jpg", 2021 - ), - new Patient( - "Cocus", "Yael Ortman", "0520000000", "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRK7XX6qCOcpfywUyH57ckF39sBbvZD6E-cAQ&usqp=CAU", 2020 - ), - new Patient( - "Jango", "Linor Monir", "0521010100", "https://media.istockphoto.com/id/1259203799/photo/portrait-of-a-young-happy-belgian-shepherd-dog-malinois-posing-outdoors.jpg?s=612x612&w=0&k=20&c=yxDw11q_2NAgrUdm0AuBkqY1UnY9MKmtiaoeWOgHNRg=", 2021 - ), - - -]; - -const patients: Patient[] = getProductsFromLocalStorage(); - -function getProductsFromLocalStorage(): Patient[] { - try { - const patientsString = localStorage.getItem("patients"); - if (!patientsString) { - localStorage.setItem("patients", JSON.stringify(firstPatiens)); - return firstPatiens; - } else { - - const patientsArray = JSON.parse(patientsString) - const patients: Patient[] = patientsArray.map((patient: Patient) => { - return new Patient(patient.name, patient.owner, patient.phone, patient.image, patient.birthYear, patient.id) - }) - - return patients; - } ->>>>>>> 7473a3df52bf457216d9852d7b1fca3092105c27 - } catch (error) { - console.error(error) - return [] - - } -}; - - - -renderAllPatients(patients, document.querySelector('#rootPatients')) - -<<<<<<< HEAD - -======= ->>>>>>> 7473a3df52bf457216d9852d7b1fca3092105c27 -function handleAddPatients(ev: any) { - try { - ev.preventDefault(); - const name = ev.target.elements.name.value; - const owner = ev.target.elements.owner.value; - const phone = ev.target.elements.phone.value; - const image = ev.target.elements.image.value; - const birthYear = ev.target.elements.birthYear.value; - - const newPatient = new Patient(name, owner, phone, image, birthYear); - patients.push(newPatient); - - renderAllPatients(patients, document.querySelector('#rootPatients')) - - localStorage.setItem("patients", JSON.stringify(patients)); - ev.target.reset(); - - } catch (error) { - console.error(error) - } -} - - -function renderAllPatients(patients: Patient[], htmlElement: HTMLElement | null) { - - try { - if (!htmlElement) throw new Error("No element"); - const html = patients.map(patient => renderPatientCard(patient)).join(' ') - - htmlElement.innerHTML = html; - } catch (error) { - console.error(error) - - } -} - -function renderPatientCard(patient: Patient) { - try { - - if (patient.isEdit) { - return `
- -
-
-
-
-
- - -
- ` - } else { - return `
- -


-
-
-
- -

-
- ` - } - } catch (error) { - console.error(error) - return '' - } -} - -function handleRemovePatient(patientId: string) { - try { - const index = patients.findIndex(patient => patient.id === patientId); - if (index === -1) throw new Error("Could not find patient"); - - patients.splice(index, 1); - localStorage.setItem("patients", JSON.stringify(patients)); - - renderAllPatients(patients, document.querySelector("#rootPatients")) - - } catch (error) { - console.error(error); - - } -} - -function handleEdit(patientId: string) { - try { - const patient = patients.find(patient => patient.id === patientId) - if (!patient) throw new Error("Couldn't find patient") - - patient.setEdit(true); - renderAllPatients(patients, document.querySelector("#rootPatients")) - - } catch (error) { - console.error(error); - - } -} - -function handleSetEditPatient(ev: any) { - try { - ev.preventDefault(); - const name = ev.target.name.value; - const owner = ev.target.owner.value; - const phone = ev.target.phone.value; - const birthYear = ev.target.birthYear.value; - const patientId: string = ev.target.id; - -<<<<<<< HEAD - const patient:Patient|undefined = patients.find(patient => patient.id === patientId) - if(!patient) throw new Error("Could not find patient") - -======= - const patient: Patient | undefined = patients.find(patient => patient.id === patientId) - if (!patient) throw new Error("Could not find patient") - ->>>>>>> 7473a3df52bf457216d9852d7b1fca3092105c27 - patient.name = name; - patient.owner = owner; - patient.phone = phone; - patient.birthYear = birthYear; - patient.setEdit(false) - console.log(patients) - - localStorage.setItem("patients", JSON.stringify(patients)) - renderAllPatients(patients, document.querySelector("#rootPatients")); - -<<<<<<< HEAD - -======= - ->>>>>>> 7473a3df52bf457216d9852d7b1fca3092105c27 - - - - } catch (error) { - console.error(error) - - } -} - -<<<<<<< HEAD - - - - - - - -class Vaccine { - id: string; - constructor(public vacName: string, public price: number) { - // this.id = uid(); -======= -class Vaccine { - id: string; - constructor(public vacName: string, public price: number, id?: string | null) { - if (id) { - this.id = id; - } else { - - this.id = `${Math.random()}` - } ->>>>>>> 7473a3df52bf457216d9852d7b1fca3092105c27 - } -} - -const Vaccines: Vaccine[] = [ - - new Vaccine("Rabies", 100), - new Vaccine("FVRCP", 80), - new Vaccine("FHV", 60), - new Vaccine("FHV-1", 70), - new Vaccine("Parvovirus", 120), - new Vaccine("Leptospirosis", 50), - new Vaccine("Distemper", 200), - new Vaccine("Canine Infectious Hepatitis", 130) -] - -<<<<<<< HEAD -class Treatment { - id: string; - constructor(public treatName: string, public price: number) { - // this.id = uid(); -======= - - -class PatientVaccine { - constructor(public name: Patient, public owner: Patient, public patientId: Patient, public vacName: Vaccine, public price: Vaccine, public VacId: Vaccine) { - - } -} - -const patientVaccine: PatientVaccine[] = [] - - -function renderVaxPatient(rootElement:HTMLElement|null) { - try { - const html = - ` -
-

Time for Vaccine

- - - - - -
- ` - console.log(html) - - if(!rootElement) throw new Error("no root elemnt") - - rootElement.innerHTML = html - } catch (error) { - console.error(error) - - } -} - -renderVaxPatient (document.querySelector("#submit")) - - -function handleVaxPatient(ev: any) { - try { - ev.preventDefault(); - const name = ev.target.name.value; - const owner = ev.target.owner.value; - const vaccine = ev.target.vaccine.value; - const price = ev.target.price.value; - - console.log(name, owner, vaccine, price) - - } catch (error) { - console.error(error) - - } -} - - - - - - - -class Treatment { - id: string; - constructor(public treatName: string, public price: number) { ->>>>>>> 7473a3df52bf457216d9852d7b1fca3092105c27 - } -} - -const treatments: Treatment[] = [ - new Treatment("Haircut", 200), - new Treatment("Hospitalization per night", 450), - new Treatment("teeth cleaning", 100), - new Treatment("x-ray", 100), - new Treatment("US", 100), -] - - -<<<<<<< HEAD -class Supply { - id: string; - constructor(public supName: string, public price: number) { - // this.id = uid(); - } -} - - -const supplies: Supply[] = [ - new Supply("Medical food can", 17), - new Supply("Ampoule Anti-flea & Tick", 47), - new Supply("seringe", 10) -] -======= - - -class PatientTeatment { - constructor(public name: Patient, public owner: Patient, public treatName: Treatment, public price: Treatment) { - - } -} ->>>>>>> 7473a3df52bf457216d9852d7b1fca3092105c27 diff --git a/04-Typescript/19-PersonalProject/Lee/pages/patients.html b/04-Typescript/19-PersonalProject/Lee/pages/patients.html deleted file mode 100644 index 46720e587..000000000 --- a/04-Typescript/19-PersonalProject/Lee/pages/patients.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - Patiens - - - - - - -
-

Add a New Member to Our Family

- - - - - - -
- -
- - - \ No newline at end of file diff --git a/04-Typescript/19-PersonalProject/Lee/pages/patients.scss b/04-Typescript/19-PersonalProject/Lee/pages/patients.scss deleted file mode 100644 index 86d81586f..000000000 --- a/04-Typescript/19-PersonalProject/Lee/pages/patients.scss +++ /dev/null @@ -1,83 +0,0 @@ -html { - background-color: #a2f1f1; - display: flex; - justify-content: center; - - - body { - font-family: "Quicksand", sans-serif; - font-size: 18px; - font-weight: bold; - - -form { - border: 2px solid rgb(76, 76, 76); - border-radius: 15px; - margin: 2rem; - padding: 2rem; - - h2 { - display: flex; - justify-content: center; - text-shadow: 1px 3px 3px rgba(0, 0, 0, 0.5); - } - - input { - height: 20px; - border-radius: 7px; - } - - #add { - height: 26px; - background-color: #4fb6b6; - - &:hover { - background-color: #6bbcbc; - cursor: pointer; - - } - } -} - -.card { -display: flex; -flex-direction: column; -margin: auto; -margin-bottom: 1.3rem; -width: 380px; -height: 490px; -gap: 1rem; -border-radius: 25px; -box-shadow: 1px 3px 3px rgba(0, 0, 0, 0.5); -text-align: center; - - - -button { - width: 130px; - height: 25px; - background-color: #94c8c8; - border-radius: 7px; - -} - -p { - background-color: #4fb6b6; - - box-sizing: content-box; - border-radius: 5px; - border-bottom-right-radius: 7px; - border-bottom-left-radius: 7px; -} -img { - width: 100%; - height: 190px; - border-radius: 25px; - border-bottom-left-radius: 7px; - border-bottom-right-radius: 7px; -} -} -} -} - - diff --git a/04-Typescript/19-PersonalProject/Lee/pages/supplies.html b/04-Typescript/19-PersonalProject/Lee/pages/supplies.html deleted file mode 100644 index a313bf550..000000000 --- a/04-Typescript/19-PersonalProject/Lee/pages/supplies.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - -<<<<<<< HEAD - Document -======= - Supplies -

Medical Supplies

->>>>>>> 7473a3df52bf457216d9852d7b1fca3092105c27 - - - - - - -
-
-
- - \ No newline at end of file diff --git a/04-Typescript/19-PersonalProject/Lee/pages/supplies.scss b/04-Typescript/19-PersonalProject/Lee/pages/supplies.scss deleted file mode 100644 index 18de6cbc4..000000000 --- a/04-Typescript/19-PersonalProject/Lee/pages/supplies.scss +++ /dev/null @@ -1,128 +0,0 @@ -* { - padding: 0%; - margin: 0%; - font-family: "Quicksand", sans-serif; - - } - - html { - background-color: #a2f1f1; - - - body { - width: 100vw; - height: 100vh; - padding: 10px; -<<<<<<< HEAD -======= - - h1 { - text-align: center; - text-shadow: 2px 3px 10px rgba(0, 0, 0, 0.5); - } ->>>>>>> 7473a3df52bf457216d9852d7b1fca3092105c27 - - - #searchInput { - position: absolute; - width: 170px; - height: 30px; - padding: 10px; - border: 0.5px solid rgba(0, 0, 0, 0.276); - border-radius: 10px; - background: white - url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' class='bi bi-search' viewBox='0 0 16 16'%3E%3Cpath d='M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z'%3E%3C/path%3E%3C/svg%3E") - no-repeat 88% center; - } - - #addProductBtn { - padding: 10px 17px; - margin: 15px; - border: .3px solid rgba(0, 0, 0, 0.142); - box-shadow: 2px 5px 20px rgba(0, 0, 0, 0.189); - border-radius: 50px; - display: block; - position: relative; - left: calc(50% - 33px); - font-size: x-large; - } - .addProductForm { - transition: display .5s ; - border-radius: 20px; - display: none; - position: relative; - box-shadow: 2px 5px 9px rgba(0, 0, 0, 0.162); - left: calc(50% - 125px); - text-align: center; - width: 250px; - padding: 10px; - background-color: white; - * { - padding: 5px; - margin: 5px; - } - } - - .active { - display: block; - } - - .isntFound{ - display: none; - } - .productGallery { - width: 96vw; - display: grid; - grid-template-columns: repeat(auto-fill, minmax(265px, 1fr)); - .productItem { - background-color: white; - margin: 10px; - padding: 10px; - border-radius: 20px; - box-shadow: 3px 4px 9px rgba(0, 0, 0, 0.137); - text-align: center; - position: relative; - img { - width: 130px; - height: 110px; - object-fit: cover; - } - button, - #productAmount { - display: inline-block; - width: 20px; - } - #deleteBtn { - position: absolute; - width: 50px; - right: 80px; - background-color: #de5334; - border-radius: 7px; - - &:hover { - cursor: pointer; - } - span { - font-size: small; - } - } - #editProductAmount { - width: 40px; - } - #editBtn { - position: absolute; - width: 40px; - right: 30px; - background-color: #94c8c8; - border-radius: 7px; - &:hover { - cursor: pointer; - } - span { - font-size: small; - } - } - } - } -} -} \ No newline at end of file diff --git a/04-Typescript/19-PersonalProject/Lee/pages/supplies.ts b/04-Typescript/19-PersonalProject/Lee/pages/supplies.ts deleted file mode 100644 index f2df26727..000000000 --- a/04-Typescript/19-PersonalProject/Lee/pages/supplies.ts +++ /dev/null @@ -1,438 +0,0 @@ -class Product { -<<<<<<< HEAD - constructor( - public name: string, - public amount: number = 0, - public imgSrc: string, - public price: number, - public id: string = createId(), - public isEdit: boolean = false, - ) {} - - setEdit(set: boolean) { - this.isEdit = set; - } - } - - function createId() { - return String(Date.now().toString(32) + Math.random().toString(16)).replace( - /\./g, - "", - ); - } - - const firstProducts: Product[] = [ - new Product( - "Medical food can", - 6, - "https://encrypted-tbn2.gstatic.com/shopping?q=tbn:ANd9GcTAyzAhgyuBcL3IL0VlfGbcEesqxNKcqFoSWISCb2jEdiTBKBpKYPU2Eh3EvdIITjim8fqfx8m2N79dyQXIp8gTPeS0S0sQfPLs2dwfvtwJU5WAD4US89Fd&usqp=CAc", 17 - ), - new Product( - "Ampoule Anti-flea & Tick", - 5, - "https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcS7ER1AcRiMl6jrJDpnzzxlipIEYWPDK6ywuVhv9bLcBTlNiSi7ZgryJO6yd-_0_cyXhioq_tCVyNKi616y0dxBwgyNfKsRZO11tjigZPd1ND_J1FPPP3fUNA&usqp=CAc", 179 - ), - new Product( - "Ampoule Anti-flea & Tick", - 5, - "https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcS7ER1AcRiMl6jrJDpnzzxlipIEYWPDK6ywuVhv9bLcBTlNiSi7ZgryJO6yd-_0_cyXhioq_tCVyNKi616y0dxBwgyNfKsRZO11tjigZPd1ND_J1FPPP3fUNA&usqp=CAc", 179 - ), - new Product( - "seringe", - 2, - "https://cdn.pixabay.com/photo/2023/06/11/19/09/fruit-8056663_1280.jpg", 10 - ), - new Product( - "Anti-flea & Tick tablets", - 11, - "https://www.gag-lachayot.co.il/wp-content/uploads/2020/12/%D7%AA%D7%9E%D7%95%D7%A0%D7%94-%D7%9B%D7%95%D7%9C%D7%9C%D7%AA-%D7%A1%D7%98%D7%A8%D7%95%D7%A0%D7%92%D7%94%D7%95%D7%9C%D7%93-%D7%97%D7%AA%D7%95%D7%9C.jpg", 189 - ), - new Product( - "Ear & eye drops", - 11, - "https://encrypted-tbn3.gstatic.com/shopping?q=tbn:ANd9GcR_gi6ZjmjE7NZQ4rig15PDbSPwy-oXu6tykhosqgx10dKbBJkNw6skcYje9p6zXtGxY8YWNyJVMcnM90I2_Z1I42bp7rr-xrv67OKhUqfIiEWV000cSp07&usqp=CAc", 38 - ), - ]; - - let products: Product[] = getProductsFromLocalStorage(); - - function getProductsFromLocalStorage() { - try { - const productsString = localStorage.getItem("products"); - if (!productsString) { - localStorage.setItem("products", JSON.stringify(firstProducts)); - return firstProducts; - } else { - const productsArray = JSON.parse(productsString); - const products = productsArray.map((pro) => { - return new Product(pro.name, pro.amount, pro.imgSrc); - }); - return products; - } - } catch (error) { - console.error(error); - return []; - } - } - - function renderProducts() { - const html = products - .map((product) => { - if (!product.isEdit) - return ` -======= - constructor( - public name: string, - public amount: number = 0, - public imgSrc: string, - public price: number, - public id: string = createId(), - public isEdit: boolean = false, - ) { } - - setEdit(set: boolean) { - this.isEdit = set; - } -} - -function createId() { - return String(Date.now().toString(32) + Math.random().toString(16)).replace( - /\./g, - "", - ); -} - -const firstProducts: Product[] = [ - - new Product( - "Medical food can", - 6, - "https://encrypted-tbn2.gstatic.com/shopping?q=tbn:ANd9GcTAyzAhgyuBcL3IL0VlfGbcEesqxNKcqFoSWISCb2jEdiTBKBpKYPU2Eh3EvdIITjim8fqfx8m2N79dyQXIp8gTPeS0S0sQfPLs2dwfvtwJU5WAD4US89Fd&usqp=CAc", 17 - ), - - new Product( - "Ampoule Anti-flea & Tick", - 5, - "https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcS7ER1AcRiMl6jrJDpnzzxlipIEYWPDK6ywuVhv9bLcBTlNiSi7ZgryJO6yd-_0_cyXhioq_tCVyNKi616y0dxBwgyNfKsRZO11tjigZPd1ND_J1FPPP3fUNA&usqp=CAc", 179 - ), - new Product( - "seringe", - 2, - "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS0dhOyNhKG8M8QceV3CSYEODWFfZyxNBb42A&usqp=CAU", 10 - ), - new Product( - "Anti-flea & Tick tablets", - 11, - "https://www.gag-lachayot.co.il/wp-content/uploads/2020/12/%D7%AA%D7%9E%D7%95%D7%A0%D7%94-%D7%9B%D7%95%D7%9C%D7%9C%D7%AA-%D7%A1%D7%98%D7%A8%D7%95%D7%A0%D7%92%D7%94%D7%95%D7%9C%D7%93-%D7%97%D7%AA%D7%95%D7%9C.jpg", 189 - ), - new Product( - "Ear & eye drops", - 11, - "https://encrypted-tbn3.gstatic.com/shopping?q=tbn:ANd9GcR_gi6ZjmjE7NZQ4rig15PDbSPwy-oXu6tykhosqgx10dKbBJkNw6skcYje9p6zXtGxY8YWNyJVMcnM90I2_Z1I42bp7rr-xrv67OKhUqfIiEWV000cSp07&usqp=CAc", 38 - ), - new Product( - "Medicine dispenser", - 5, - "data:image/jpeg;base64,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", 12 - ), - new Product( - "Anti-anxiety 45 tablets", - 20, - "https://cloudinary.images-iherb.com/image/upload/f_auto,q_auto:eco/images/eur/eur02024/v/32.jpg", 100 - ), - new Product( - "PROTECTION", - 15, - "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRAiQzIT3G-b0z6Bsr1bVkSMHlOBM4lKxw70MiRkres5DGVNiigWbRnWcNNfRpEVu-mXyY&usqp=CAU", 65 - ), -]; - -let products: Product[] = getProductsFromLocalStorage(); - -function getProductsFromLocalStorage() { - try { - const productsString = localStorage.getItem("products"); - if (!productsString) { - localStorage.setItem("products", JSON.stringify(firstProducts)); - return firstProducts; - } else { - const productsArray = JSON.parse(productsString); - const products = productsArray.map((pro) => { - return new Product(pro.name, pro.amount, pro.imgSrc, pro.price); - }); - return products; - } - } catch (error) { - console.error(error); - return []; - } -} - -function renderProducts() { - const html = products - .map((product) => { - if (!product.isEdit) - return ` ->>>>>>> 7473a3df52bf457216d9852d7b1fca3092105c27 -
- - - -<<<<<<< HEAD -

${product.name}

-======= -

${product.name}
${product.price}₪ per unit

->>>>>>> 7473a3df52bf457216d9852d7b1fca3092105c27 - -

${product.amount}

- -
- `; -<<<<<<< HEAD - else - return ` -======= - else - return ` ->>>>>>> 7473a3df52bf457216d9852d7b1fca3092105c27 -
- - - - -<<<<<<< HEAD -

${product.name}

- - - -
- `; - }) - .join(" "); - - const root = document.querySelector("#productGallery") as HTMLDivElement; - root.innerHTML = html; - } - - function addToProduct(productId: string) { - const chosenPro: Product = products.find((pro) => pro.id === productId)!; - if (chosenPro) { - chosenPro.amount++; - renderProducts(); - updateInLocalStorage(); - } - } - function reduceFromProduct(productId: string) { - const chosenPro: Product = products.find((pro) => pro.id === productId)!; - if (chosenPro && chosenPro.amount > 0) { - chosenPro.amount--; - renderProducts(); - updateInLocalStorage(); - } - } - - function deleteProduct(productId: string) { - const indexToRemoved = products.findIndex((pro) => pro.id === productId); - - products.splice(indexToRemoved, 1); - updateInLocalStorage(); - renderProducts(); - } - - function editProduct(event: any, productId: string) { - try { - const productToEdit: Product = products.find( - (pro) => pro.id === productId, - )!; - if (!productToEdit) throw new Error("couldn't fined productToEdit "); - if (productToEdit.isEdit == true) { - const amountValue = - event.target.parentNode.parentNode.querySelector("input").value; - productToEdit.amount = amountValue; - productToEdit.setEdit(false); - renderProducts(); - } else { - productToEdit.setEdit(true); - renderProducts(); - } - updateInLocalStorage(); - renderProducts(); - } catch (error) { - console.error(error); - } - } - - function updateInLocalStorage() { - localStorage.setItem("products", JSON.stringify(products)); - } - - function renderAddProductForm() { - const root: HTMLDivElement = document.querySelector( - ".addProductForm", - ) as HTMLDivElement; - root.classList.toggle("active"); - if (root.classList.contains("active")) { - const btn = document.querySelector("#addProductBtn") as HTMLButtonElement; - btn.innerHTML = ` x `; - } else { - const btn = document.querySelector("#addProductBtn") as HTMLButtonElement; - btn.innerHTML = "+"; - } - root.innerHTML = ` -======= -

${product.name}
${product.price}₪

- - - - - - `; - }) - .join(" "); - - const root = document.querySelector("#productGallery") as HTMLDivElement; - root.innerHTML = html; -} - -function addToProduct(productId: string) { - const chosenPro: Product = products.find((pro) => pro.id === productId)!; - if (chosenPro) { - chosenPro.amount++; - renderProducts(); - updateInLocalStorage(); - } -} -function reduceFromProduct(productId: string) { - const chosenPro: Product = products.find((pro) => pro.id === productId)!; - if (chosenPro && chosenPro.amount > 0) { - chosenPro.amount--; - renderProducts(); - updateInLocalStorage(); - } -} - -function deleteProduct(productId: string) { - const indexToRemoved = products.findIndex((pro) => pro.id === productId); - - products.splice(indexToRemoved, 1); - updateInLocalStorage(); - renderProducts(); -} - -function editProduct(event: any, productId: string) { - try { - const productToEdit: Product = products.find( - (pro) => pro.id === productId, - )!; - if (!productToEdit) throw new Error("couldn't fined productToEdit "); - if (productToEdit.isEdit == true) { - const amountValue = - event.target.parentNode.parentNode.querySelector("input").value; - productToEdit.amount = amountValue; - productToEdit.setEdit(false); - renderProducts(); - } else { - productToEdit.setEdit(true); - renderProducts(); - } - updateInLocalStorage(); - renderProducts(); - } catch (error) { - console.error(error); - } -} - -function updateInLocalStorage() { - localStorage.setItem("products", JSON.stringify(products)); -} - -function renderAddProductForm() { - const root: HTMLDivElement = document.querySelector( - ".addProductForm", - ) as HTMLDivElement; - root.classList.toggle("active"); - if (root.classList.contains("active")) { - const btn = document.querySelector("#addProductBtn") as HTMLButtonElement; - btn.innerHTML = ` x `; - } else { - const btn = document.querySelector("#addProductBtn") as HTMLButtonElement; - btn.innerHTML = "+"; - } - root.innerHTML = ` ->>>>>>> 7473a3df52bf457216d9852d7b1fca3092105c27 -
- -
- -
-<<<<<<< HEAD - -
- -
`; - } - - function handelNewProduct(ev: any) { - ev.preventDefault(); - const newName = ev.target.newName.value; - const newAmount = ev.target.newAmount.value; - const newImgSrc = ev.target.newImgSrc.value; - - products = getProductsFromLocalStorage(); - products.push(new Product(newName, newAmount, newImgSrc)); - renderProducts(); - const root: HTMLDivElement = document.querySelector(".addProductForm")!; - root.innerHTML = ""; - root.classList.toggle("active"); - const btn = document.querySelector("#addProductBtn") as HTMLButtonElement; - btn.innerHTML = "+"; - } - - function searchProducts(event: any) { - const textToSearch = event.target.value.toLowerCase(); - products.forEach((product) => { - const element = document.querySelector( `[name= "${product.name}" ]`,) as HTMLDivElement; - if (!product.name.toLowerCase().includes(textToSearch)) - element.classList.add("isntFound"); - else element.classList.remove("isntFound"); - }); - } - -======= - -
-
- -
- `; -} - -function handelNewProduct(ev: any) { - ev.preventDefault(); - const newName = ev.target.newName.value; - const newAmount = ev.target.newAmount.value; - const newImgSrc = ev.target.newImgSrc.value; - const newPrice = ev.target.newPrice.value; - - products = getProductsFromLocalStorage(); - products.push(new Product(newName, newAmount, newImgSrc, newPrice)); - renderProducts(); - updateInLocalStorage(); - const root: HTMLDivElement = document.querySelector(".addProductForm")!; - root.innerHTML = ""; - root.classList.toggle("active"); - const btn = document.querySelector("#addProductBtn") as HTMLButtonElement; - btn.innerHTML = "+"; -} - -function searchProducts(event: any) { - const textToSearch = event.target.value.toLowerCase(); - products.forEach((product) => { - const element = document.querySelector(`[name= "${product.name}" ]`,) as HTMLDivElement; - if (!product.name.toLowerCase().includes(textToSearch)) - element.classList.add("isntFound"); - else element.classList.remove("isntFound"); - }); -} ->>>>>>> 7473a3df52bf457216d9852d7b1fca3092105c27 diff --git a/04-Typescript/19-PersonalProject/Lee/pages/vaccines.html b/04-Typescript/19-PersonalProject/Lee/pages/vaccines.html deleted file mode 100644 index 7848bfffa..000000000 --- a/04-Typescript/19-PersonalProject/Lee/pages/vaccines.html +++ /dev/null @@ -1,28 +0,0 @@ - - -<<<<<<< HEAD - - - - Document - - - - -======= - - - - - Vaccines - - - - - -
->>>>>>> 7473a3df52bf457216d9852d7b1fca3092105c27 - - \ No newline at end of file diff --git a/04-Typescript/19-PersonalProject/Lee/pages/vaccines.scss b/04-Typescript/19-PersonalProject/Lee/pages/vaccines.scss deleted file mode 100644 index 6fbf6e353..000000000 --- a/04-Typescript/19-PersonalProject/Lee/pages/vaccines.scss +++ /dev/null @@ -1,66 +0,0 @@ -html { - - display: flex; - justify-content: center; - - - body { - background-color: #a2f1f1; - font-family: "Quicksand", sans-serif; - font-size: 18px; - font-weight: bold; - - -form { - // border: 2px solid rgb(76, 76, 76); - border-radius: 15px; - margin: 2rem; - padding: 2rem; - - h2 { - display: flex; - justify-content: center; - text-shadow: 1px 3px 3px rgba(0, 0, 0, 0.5); - } - - input { - margin-left: 1rem; - height: 20px; - width: 250px; - border-radius: 7px; - } - -} - -.card { -display: flex; -flex-direction: column; -margin: auto; -margin-bottom: 1.3rem;width: 380px; -height: 400px; -gap: .7rem; -border-radius: 25px; -box-shadow: 1px 3px 3px rgba(0, 0, 0, 0.5); -text-align: center; - - - -input { - display: flex; - justify-content: center; - margin-left: 3.5rem; - height: 25px; - -} - -p { - background-color: #4fb6b6; - - box-sizing: content-box; - border-radius: 5px; - border-bottom-right-radius: 7px; - border-bottom-left-radius: 7px; -} -} -} -} \ No newline at end of file diff --git a/04-Typescript/19-PersonalProject/Lee/pages/view.ts b/04-Typescript/19-PersonalProject/Lee/pages/view.ts deleted file mode 100644 index 789d93fb7..000000000 --- a/04-Typescript/19-PersonalProject/Lee/pages/view.ts +++ /dev/null @@ -1,16 +0,0 @@ -const hamburger = document.querySelector(".hamburger"); -const navLinks = document.querySelector(".nav__links"); -const links = document.querySelector(".nav__links li"); - -hamburger?.addEventListener('click', ()=>{ - navLinks?.classList.toggle("open"); - links.forEach(link => { - link.classList.toggle("fade"); - }); - - - -hamburger.classList.toggle("toggle"); - -}); - diff --git a/04-Typescript/19-PersonalProject/Lee/style.scss b/04-Typescript/19-PersonalProject/Lee/style.scss deleted file mode 100644 index 8f69f8885..000000000 --- a/04-Typescript/19-PersonalProject/Lee/style.scss +++ /dev/null @@ -1,118 +0,0 @@ -* { - margin: 0; - padding: 0; - box-sizing: border-box; - font-family: "Quicksand", sans-serif; -} - -html { - font-size: 62.5%; - user-select: none; - - -.container { - width: 100%; - height: 100vh; - background-color: rgb(15, 215, 215); - color: #eee; - display: flex; - justify-content: center; - align-items: center; - - -.calendar { - width: 45rem; - height: 52rem; - background-color: rgb(109, 110, 110); - box-shadow: 0 0.5rem 3rem rgba(0,0,0,0.4); -} - -.month { - width: 100%; - height: 12rem; - background-color: rgb(3, 161, 161); - display: flex; - justify-content: space-between; - align-items: center; - padding: 0 2rem; - text-align: center; - text-shadow: 0 .3rem .5rem rgba(0,0,0,0.4); -} - -.month i { - font-size: 2.5rem; - cursor: pointer; -} - -.month h1 { - font-size: 3rem; - font-weight: 400; - letter-spacing: 0.2rem; - margin-bottom: 1rem; -} - -.month p { - font-size: 1.6rem; -} - -.weekdays { - width: 100%; - height: 5rem; - padding: 0 0.4rem; - display: flex; - align-items: center; -} - -.weekdays div { - font-size: 1.5rem; - font-weight: 400; - letter-spacing: 0.1rem; - width: calc(44.2rem/7); - display: flex; - justify-content: center; - align-items: center; - text-shadow: 0.3rem .5rem rgba(0,0,0,0.4); -} - -.days { - width: 100%; - display: flex; - flex-wrap: wrap; - padding: 0.2rem; -} - -.days div { - font-size: 1.4rem; - margin: 0.3rem; - width: calc(40.2rem/7); - height: 5rem; - display: flex; - justify-content: center; - align-items: center; - text-shadow: 0 .3rem .5rem rgba(0,0,0,0.5); - - &:hover:not(.today) { - background-color: #7d7d7d; - border-radius: 50%; - border: 0.2rem solid #777; - cursor: pointer; - - } -} - -.prev-date, .next-date { - opacity: 0.5; -} - -.today { - background-color: rgb(3, 161, 161); - border-radius: 50%; - - - &:hover { - background-color: rgb(7, 165, 165); - - } -} -} -} \ No newline at end of file diff --git a/04-Typescript/22-git/dist/style.css b/04-Typescript/22-git/dist/style.css index be262b369..e69de29bb 100644 --- a/04-Typescript/22-git/dist/style.css +++ b/04-Typescript/22-git/dist/style.css @@ -1,3 +0,0 @@ -h1 { - background-color: yellow; -} \ No newline at end of file diff --git a/04-Typescript/22-git/features/admin/admin.html b/04-Typescript/22-git/features/admin/admin.html new file mode 100644 index 000000000..e69de29bb diff --git a/04-Typescript/22-git/features/admin/admin.ts b/04-Typescript/22-git/features/admin/admin.ts new file mode 100644 index 000000000..e69de29bb diff --git a/04-Typescript/22-git/features/admin/dist/admin.js b/04-Typescript/22-git/features/admin/dist/admin.js new file mode 100644 index 000000000..e69de29bb diff --git a/04-Typescript/22-git/features/admin/dist/style.css b/04-Typescript/22-git/features/admin/dist/style.css new file mode 100644 index 000000000..1bb68ddf5 --- /dev/null +++ b/04-Typescript/22-git/features/admin/dist/style.css @@ -0,0 +1,3 @@ +body { + background-color: black; +} \ No newline at end of file diff --git a/04-Typescript/22-git/features/admin/style.scss b/04-Typescript/22-git/features/admin/style.scss new file mode 100644 index 000000000..c4d554e05 --- /dev/null +++ b/04-Typescript/22-git/features/admin/style.scss @@ -0,0 +1,3 @@ +body { + background-color: black; +} diff --git a/04-Typescript/22-git/features/general/dist/general.css b/04-Typescript/22-git/features/general/dist/general.css new file mode 100644 index 000000000..88cb00c52 --- /dev/null +++ b/04-Typescript/22-git/features/general/dist/general.css @@ -0,0 +1,3 @@ +body { + background-color: red; +} \ No newline at end of file diff --git a/04-Typescript/22-git/features/general/general.scss b/04-Typescript/22-git/features/general/general.scss new file mode 100644 index 000000000..438954d36 --- /dev/null +++ b/04-Typescript/22-git/features/general/general.scss @@ -0,0 +1,3 @@ +body { + background-color: red; +} \ No newline at end of file diff --git a/04-Typescript/22-git/features/inventory/dist/invnetory.css b/04-Typescript/22-git/features/inventory/dist/invnetory.css new file mode 100644 index 000000000..e69de29bb diff --git a/04-Typescript/22-git/features/inventory/inventory.html b/04-Typescript/22-git/features/inventory/inventory.html new file mode 100644 index 000000000..928a7b981 --- /dev/null +++ b/04-Typescript/22-git/features/inventory/inventory.html @@ -0,0 +1,13 @@ + + + + + + Document + + + + +

Inventory Feature

+ + \ No newline at end of file diff --git a/04-Typescript/22-git/features/inventory/invnetory.scss b/04-Typescript/22-git/features/inventory/invnetory.scss new file mode 100644 index 000000000..e69de29bb diff --git a/04-Typescript/19-PersonalProject/Lee/pages/treatments.html b/04-Typescript/22-git/features/login/login.html similarity index 72% rename from 04-Typescript/19-PersonalProject/Lee/pages/treatments.html rename to 04-Typescript/22-git/features/login/login.html index d6922c785..d37bea8d3 100644 --- a/04-Typescript/19-PersonalProject/Lee/pages/treatments.html +++ b/04-Typescript/22-git/features/login/login.html @@ -4,9 +4,9 @@ Document - + - +

Login

\ No newline at end of file diff --git a/04-Typescript/22-git/features/login/register.html b/04-Typescript/22-git/features/login/register.html new file mode 100644 index 000000000..9bf844342 --- /dev/null +++ b/04-Typescript/22-git/features/login/register.html @@ -0,0 +1,12 @@ + + + + + + Document + + + +

Register

+ + \ No newline at end of file diff --git a/04-Typescript/22-git/main/dist/download.png b/04-Typescript/22-git/main/dist/download.png new file mode 100644 index 000000000..816d46196 Binary files /dev/null and b/04-Typescript/22-git/main/dist/download.png differ diff --git a/04-Typescript/22-git/main/dist/style.css b/04-Typescript/22-git/main/dist/style.css new file mode 100644 index 000000000..58e11c035 --- /dev/null +++ b/04-Typescript/22-git/main/dist/style.css @@ -0,0 +1,36 @@ +body { + background: #d9c1c1; + background: linear-gradient(90deg, #d9c1c1 0%, #56c6e2 100%); + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.img { + position: absolute; + top: 4vh; + border-radius: 40px; + animation: bigger infinite 2s ease-in-out; + border: 5px solid rgba(255, 0, 0, 0.308); + animation: turn infinite 2s ease-in-out; +} +@keyframes bigger { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.2); + } + 100% { + transform: scale(1); + } +} +@keyframes turn { + from { + transform: rotate(0); + } + to { + transform: rotate(1turn); + } +} \ No newline at end of file diff --git a/04-Typescript/22-git/main/index.html b/04-Typescript/22-git/main/index.html new file mode 100644 index 000000000..f52fd4920 --- /dev/null +++ b/04-Typescript/22-git/main/index.html @@ -0,0 +1,17 @@ + + + + + + Document + + + + + + + + + + + \ No newline at end of file diff --git a/04-Typescript/22-git/main/style.scss b/04-Typescript/22-git/main/style.scss new file mode 100644 index 000000000..fcff61f48 --- /dev/null +++ b/04-Typescript/22-git/main/style.scss @@ -0,0 +1,37 @@ +body { + background: rgb(217, 193, 193); + background: linear-gradient(90deg, rgba(217, 193, 193, 1) 0%, rgba(86, 198, 226, 1) 100%); + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} +.img{ + position: absolute; + top: 4vh; + border-radius: 40px; + animation: bigger infinite 2s ease-in-out; + border: 5px solid rgba(255, 0, 0, 0.308); + animation: turn infinite 2s ease-in-out; + @keyframes bigger { + 0%{ + transform: scale(1); + } + 50%{ + transform: scale(1.2); + } + 100%{ + transform: scale(1); + } + + } + @keyframes turn { + from{ + transform: rotate(0); + } + to{ + transform: rotate(1turn); + } + + } +} \ No newline at end of file diff --git a/04-Typescript/22-git/style.scss b/04-Typescript/22-git/style.scss index d429315b6..5ecd22b43 100644 --- a/04-Typescript/22-git/style.scss +++ b/04-Typescript/22-git/style.scss @@ -1,3 +1,7 @@ +@import "./features/inventory/dist/invnetory.css"; +@import "./features/admin/dist/style.css"; +@import "./features/general/dist/general.css" + h1{ background-color: yellow; -} \ No newline at end of file +}