├── .github └── workflows │ ├── node.js.yml │ └── workflow.yml ├── .gitignore ├── CONTRIBUTING.md ├── README.md ├── package-lock.json ├── package.json ├── postcss.config.js ├── public ├── android-chrome-192x192.png ├── android-chrome-256x256.png ├── android-chrome-384x384.png ├── android-chrome-512x512.png ├── apple-touch-icon.png ├── browserconfig.xml ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon.ico ├── home.png ├── home1.png ├── home2.png ├── home3.png ├── home4.png ├── homescreen.png ├── index.html ├── manifest.json ├── mstile-150x150.png ├── pec_acm_logo.jpg ├── robots.txt ├── safari-pinned-tab.svg └── site.webmanifest ├── sanity ├── .eslintrc ├── .npmignore ├── README.md ├── config │ ├── .checksums │ └── @sanity │ │ ├── data-aspects.json │ │ ├── default-layout.json │ │ ├── default-login.json │ │ ├── form-builder.json │ │ └── vision.json ├── dist │ ├── index.html │ └── static │ │ ├── .gitkeep │ │ ├── css │ │ └── main.css │ │ ├── favicon.ico │ │ └── js │ │ ├── app.bundle.js │ │ └── vendor.bundle.js ├── package.json ├── plugins │ └── .gitkeep ├── sanity.json ├── schemas │ ├── blockContent.js │ ├── blog.js │ ├── events.js │ ├── projects.js │ └── schema.js ├── static │ ├── .gitkeep │ └── favicon.ico ├── tsconfig.json └── yarn.lock ├── src ├── App.js ├── app.css ├── components │ ├── About-Us-Body.js │ ├── BlogCard.js │ ├── Blogs.js │ ├── Body.js │ ├── Events.js │ ├── Footer.js │ ├── GroupCard.js │ ├── Home.js │ ├── Project.js │ ├── ProjectMain.js │ ├── Slider │ │ ├── Slider.js │ │ └── slider.css │ └── common │ │ ├── Footer │ │ ├── Footer.jsx │ │ └── footer.module.css │ │ ├── Header │ │ ├── header.css │ │ └── header.js │ │ └── ScrollTopButton │ │ ├── ScrollTopButton.jsx │ │ └── ScrollTopButton.module.css ├── data │ ├── blogslist.js │ └── projectlist.json ├── index.css ├── index.js ├── sanity │ └── client.js ├── setupTests.js └── utils │ ├── apis_redux │ └── reducers │ │ └── index.js │ ├── helpers │ ├── index.js │ └── scrollToTop.jsx │ ├── images │ ├── Images.js │ ├── Nishant_puri.JPG │ ├── Student.png │ ├── blog1.jpg │ ├── home.png │ ├── left_point_btn.svg │ └── pec_acm_logo.jpg │ └── stylesheets │ ├── About-Us-body.css │ ├── BlogCard.css │ ├── Events.css │ ├── GroupCard.css │ ├── blogs.css │ ├── footer.css │ ├── home.css │ ├── project.css │ ├── projectCard.css │ └── slider.css └── tailwind.config.js /.github/workflows/node.js.yml: -------------------------------------------------------------------------------- 1 | # This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests across different versions of node 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions 3 | 4 | name: Node.js CI 5 | 6 | on: 7 | push: 8 | branches: [ main ] 9 | pull_request: 10 | branches: [ main ] 11 | 12 | jobs: 13 | build: 14 | 15 | runs-on: ubuntu-latest 16 | 17 | strategy: 18 | matrix: 19 | node-version: [14.x, 16.x] 20 | # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ 21 | 22 | steps: 23 | - uses: actions/checkout@v2 24 | - name: Use Node.js ${{ matrix.node-version }} 25 | uses: actions/setup-node@v2 26 | with: 27 | node-version: ${{ matrix.node-version }} 28 | cache: 'npm' 29 | - run: npm ci 30 | - run: npm run build --if-present 31 | -------------------------------------------------------------------------------- /.github/workflows/workflow.yml: -------------------------------------------------------------------------------- 1 | # GH Page Deployment 2 | name: Build and Deploy 3 | on: 4 | push: 5 | branches: 6 | - main 7 | permissions: 8 | contents: write 9 | jobs: 10 | build-and-deploy: 11 | concurrency: ci-${{ github.ref }} # Recommended if you intend to make multiple deployments in quick succession. 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Checkout 🛎️ 15 | uses: actions/checkout@v3 16 | 17 | - name: Install and Build 🔧 # This example project is built using npm and outputs the result to the 'build' folder. Replace with the commands required to build your project, or remove this step entirely if your site is pre-built. 18 | run: | 19 | npm ci 20 | npm run build 21 | 22 | - name: Deploy 🚀 23 | uses: JamesIves/github-pages-deploy-action@v4 24 | with: 25 | folder: build # The folder the action should deploy. 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | sanity/node_modules/ 5 | /node_modules 6 | /.pnp 7 | .pnp.js 8 | 9 | # testing 10 | /coverage 11 | 12 | # production 13 | /build 14 | 15 | # misc 16 | .DS_Store 17 | .env.local 18 | .env.development.local 19 | .env.test.local 20 | .env.production.local 21 | 22 | npm-debug.log* 23 | yarn-debug.log* 24 | yarn-error.log* 25 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | When contributing to this repository, please first discuss the change you wish to make via issue, 4 | email, or any other method with the owners of this repository before making a change. 5 | 6 | Please note we have a code of conduct, please follow it in all your interactions with the project. 7 | 8 | ## Pull Request Process 9 | 10 | 1. Ensure any install or build dependencies are removed before the end of the layer when doing a 11 | build. 12 | 2. Update the README.md with details of changes to the interface, this includes new environment 13 | variables, exposed ports, useful file locations and container parameters. 14 | 3. You may merge the Pull Request in once you have the sign-off of two other developers, or if you 15 | do not have permission to do that, you may request the second reviewer to merge it for you. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | [![Contributors][contributors-shield]][contributors-url] 5 | [![Forks][forks-shield]][forks-url] 6 | [![Stargazers][stars-shield]][stars-url] 7 | [![Issues][issues-shield]][issues-url] 8 | [![MIT License][license-shield]][license-url] 9 | [![LinkedIn][linkedin-shield]][linkedin-url] 10 | 11 | 12 |
13 |
14 | 15 | Logo 16 | 17 | 18 |

ACM-PEC-Website

19 | 20 |

21 |

This is the official website of PEC ACM student chapter. This is an Open-Source project. Feel free to contribute in it.

22 | 23 | Explore the docs » 24 |
25 | View Demo 26 | · 27 | Report Bug 28 | · 29 | Request Feature 30 |

31 |
32 | 33 | 34 | 35 |
36 | Table of Contents 37 |
    38 |
  1. 39 | About The Project 40 | 43 |
  2. 44 |
  3. 45 | Getting Started 46 | 50 |
  4. 51 |
  5. Usage
  6. 52 |
  7. Roadmap
  8. 53 |
  9. Contributing
  10. 54 |
  11. License
  12. 55 |
  13. Contact
  14. 56 |
  15. Acknowledgments
  16. 57 |
58 |
59 | 60 | 61 | 62 | 63 | ## About The Project 64 | 65 |

66 | Home Screen 67 |

68 | 69 | 70 | ### Built With 71 |   72 |   73 |   74 |   75 |   76 | 77 | 78 | 79 | 80 | ## Getting Started 81 | 82 | To get a local copy up and running follow these simple example steps. 83 | 84 | ### Prerequisites 85 | 86 | * npm 87 | ```sh 88 | npm install npm@latest -g 89 | ``` 90 | 91 | ### Installation 92 | 93 | _Below is an example of how you can install and set up your app._ 94 | 95 | 96 | 1. Clone the repo 97 | ```sh 98 | git clone https://github.com/PEC-CSS/ACM-PEC-Website.git 99 | ``` 100 | 2. Install NPM packages 101 | ```sh 102 | npm install 103 | ``` 104 | or 105 | ```sh 106 | npm install --legacy-peer-deps 107 | ``` 108 | 112 | 113 | 114 | 115 | ## Usage 116 | 117 | - Start the project 118 | ```sh 119 | npm start 120 | ``` 121 | - To see changes: 122 | - Browser - open http://localhost:3000/ 123 | 124 | _For more examples, please refer to the [Documentation](https://example.com)_ 125 | 126 | 127 | 128 | 129 | 138 | 139 | ## Contributors 140 | This project exists thanks to all the people who contribute. [Contributing]. 141 | 142 | 143 | 144 | 145 | 146 | See the [open issues](https://github.com/PEC-CSS/ACM-PEC-Website/issues) for a full list of proposed features (and known issues). 147 | 148 | 149 | 150 | 151 | ## Contributing 152 | 153 | Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**. 154 | 155 | If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". 156 | Don't forget to give the project a star! Thanks again! 157 | 158 | 1. Fork the Project 159 | 2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) 160 | 3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) 161 | 4. Push to the Branch (`git push origin feature/AmazingFeature`) 162 | 5. Open a Pull Request 163 | 164 | Be sure to read the [contribution guidelines](CONTRIBUTING.md) before contributing. 165 | 166 | 167 | 168 | ## License 169 | 170 | Distributed under the MIT License. See [LICENSE](LICENSE) for more information. 171 | 172 | 173 | ## Contact 174 | 175 | [Rahul Sharma](https://rahulsharma.vercel.app/) - acmcss@pec.edu.in - rahul2702sharma@gmail.com 176 | 177 | Project Link: [https://github.com/PEC-CSS/ACM-PEC-Website](https://github.com/PEC-CSS/ACM-PEC-Website) 178 | 179 | 180 | ## Acknowledgments 181 | 182 | Use this space to list resources you find helpful and would like to give credit to. I've included a few of my favorites to kick things off! 183 | 184 | * [React docs](https://reactjs.org/) 185 | * [Sanity Docs](https://www.sanity.io/) 186 | * [Tailwind CSS Docs](https://tailwindcss.com/) 187 | * [Img Shields](https://shields.io) 188 | * [othneildrew / Best-README-Template](https://github.com/othneildrew/Best-README-Template) 189 | 190 |

(back to top)

191 | 192 | 193 | 194 | 195 | 196 | 197 | [contributors-shield]: https://img.shields.io:/github/contributors/PEC-CSS/ACM-PEC-Website?style=for-the-badge 198 | [contributors-url]: https://github.com/PEC-CSS/ACM-PEC-Website/graphs/contributors 199 | [forks-shield]: https://img.shields.io/github/forks/PEC-CSS/ACM-PEC-Website?style=for-the-badge 200 | [forks-url]: https://github.com/PEC-CSS/ACM-PEC-Website/network/members 201 | [stars-shield]: https://img.shields.io/github/stars/PEC-CSS/ACM-PEC-Website?style=for-the-badge 202 | [stars-url]: https://github.com/PEC-CSS/ACM-PEC-Website/stargazers 203 | [issues-shield]: https://img.shields.io/github/issues/PEC-CSS/ACM-PEC-Website?style=for-the-badge 204 | [issues-url]: https://github.com/PEC-CSS/ACM-PEC-Website/issues 205 | [license-shield]: https://img.shields.io/github/license/PEC-CSS/ACM-PEC-Website?style=for-the-badge 206 | [license-url]: https://github.com/PEC-CSS/ACM-PEC-Website/blob/master/LICENSE.txt 207 | [linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555 208 | [linkedin-url]: https://www.linkedin.com/in/rahul5430/ 209 | [product-screenshot-loginScreen]: assets/loginScreen.gif 210 | [product-screenshot-stockScreenAndWatchlist]: assets/stockScreenAndWatchlist.gif 211 | [product-screenshot-aboutAndProfileScreen]: assets/aboutAndProfileScreen.gif 212 | [product-screenshot-searchScreen]: assets/searchScreen.gif -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "acm_pec_website", 3 | "homepage": "https://pec-css.github.io/ACM-PEC-Website", 4 | "version": "0.1.0", 5 | "private": true, 6 | "dependencies": { 7 | "@sanity/client": "^3.1.0", 8 | "@testing-library/jest-dom": "^5.14.1", 9 | "@testing-library/react": "^11.2.7", 10 | "@testing-library/user-event": "^12.8.3", 11 | "axios": "^0.24.0", 12 | "gh-pages": "^3.2.3", 13 | "node-pre-gyp": "^0.17.0", 14 | "react": "^17.0.2", 15 | "react-bootstrap": "^2.0.1", 16 | "react-dom": "^17.0.2", 17 | "react-icons": "^4.3.1", 18 | "react-redux": "^7.2.6", 19 | "react-router": "^5.2.1", 20 | "react-router-dom": "^5.3.0", 21 | "react-scripts": "^2.1.3", 22 | "redux-thunk": "^2.4.0", 23 | "web-vitals": "^1.1.2" 24 | }, 25 | "scripts": { 26 | "predeploy": "npm run build", 27 | "deploy": "gh-pages -d build", 28 | "build:css": "tailwindcss src/index.css -o src/app.css", 29 | "watch:css": "tailwindcss src/index.css -o src/app.css --watch", 30 | "react-scripts:start": "react-scripts start", 31 | "start": "run-p watch:css react-scripts:start", 32 | "build": "set \"CI=false\" && react-scripts build", 33 | "test": "react-scripts test", 34 | "eject": "react-scripts eject" 35 | }, 36 | "eslintConfig": { 37 | "extends": [ 38 | "react-app", 39 | "react-app/jest" 40 | ] 41 | }, 42 | "browserslist": { 43 | "production": [ 44 | ">0.2%", 45 | "not dead", 46 | "not op_mini all" 47 | ], 48 | "development": [ 49 | "last 1 chrome version", 50 | "last 1 firefox version", 51 | "last 1 safari version" 52 | ] 53 | }, 54 | "description": "

ACM-PEC-Website

\r This is the official website of PEC ACM student chapter. This is an Open-Source project. Feel free to contribute in it.", 55 | "main": "index.js", 56 | "repository": { 57 | "type": "git", 58 | "url": "git+https://github.com/PEC-CSS/ACM-PEC-Website.git" 59 | }, 60 | "author": "", 61 | "license": "ISC", 62 | "bugs": { 63 | "url": "https://github.com/PEC-CSS/ACM-PEC-Website/issues" 64 | }, 65 | "devDependencies": { 66 | "autoprefixer": "^10.4.12", 67 | "npm-run-all": "^4.1.5", 68 | "postcss": "^8.4.17", 69 | "tailwindcss": "^3.1.8" 70 | } 71 | } -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/android-chrome-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/public/android-chrome-256x256.png -------------------------------------------------------------------------------- /public/android-chrome-384x384.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/public/android-chrome-384x384.png -------------------------------------------------------------------------------- /public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/public/apple-touch-icon.png -------------------------------------------------------------------------------- /public/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #da532c 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/public/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/public/favicon-32x32.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/public/favicon.ico -------------------------------------------------------------------------------- /public/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/public/home.png -------------------------------------------------------------------------------- /public/home1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/public/home1.png -------------------------------------------------------------------------------- /public/home2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/public/home2.png -------------------------------------------------------------------------------- /public/home3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/public/home3.png -------------------------------------------------------------------------------- /public/home4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/public/home4.png -------------------------------------------------------------------------------- /public/homescreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/public/homescreen.png -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 14 | 18 | 19 | 20 | 29 | ACM PEC CSS 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 |
71 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "ACM PEC CSS", 3 | "name": "This is the official website of PEC ACM student chapter.", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "types": "image/png", 9 | "purpose": "any maskable" 10 | }, 11 | { 12 | "src": "/android-chrome-256x256.png", 13 | "sizes": "256x256", 14 | "types": "image/png" 15 | }, 16 | { 17 | "src": "/android-chrome-384x384.png", 18 | "sizes": "384x384", 19 | "types": "image/png" 20 | }, 21 | { 22 | "src": "/android-chrome-512x512.png", 23 | "sizes": "512x512", 24 | "types": "image/png" 25 | } 26 | ], 27 | "start_url": "/", 28 | "display": "standalone", 29 | "theme_color": "#4F6AFF", 30 | "background_color": "#ffffff", 31 | "orientation": "portrait" 32 | } 33 | -------------------------------------------------------------------------------- /public/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/public/mstile-150x150.png -------------------------------------------------------------------------------- /public/pec_acm_logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/public/pec_acm_logo.jpg -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /public/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.14, written by Peter Selinger 2001-2017 9 | 10 | 12 | 16 | 51 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /public/site.webmanifest: -------------------------------------------------------------------------------- 1 | {"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} -------------------------------------------------------------------------------- /sanity/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@sanity/eslint-config-studio" 3 | } 4 | -------------------------------------------------------------------------------- /sanity/.npmignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | /logs 3 | *.log 4 | 5 | # Coverage directory used by tools like istanbul 6 | /coverage 7 | 8 | # Dependency directories 9 | node_modules 10 | 11 | # Compiled sanity studio 12 | /dist 13 | -------------------------------------------------------------------------------- /sanity/README.md: -------------------------------------------------------------------------------- 1 | # Sanity Blogging Content Studio 2 | 3 | Congratulations, you have now installed the Sanity Content Studio, an open source real-time content editing environment connected to the Sanity backend. 4 | 5 | Now you can do the following things: 6 | 7 | - [Read “getting started” in the docs](https://www.sanity.io/docs/introduction/getting-started?utm_source=readme) 8 | - Check out the example frontend: [React/Next.js](https://github.com/sanity-io/tutorial-sanity-blog-react-next) 9 | - [Read the blog post about this template](https://www.sanity.io/blog/build-your-own-blog-with-sanity-and-next-js?utm_source=readme) 10 | - [Join the community Slack](https://slack.sanity.io/?utm_source=readme) 11 | - [Extend and build plugins](https://www.sanity.io/docs/content-studio/extending?utm_source=readme) 12 | -------------------------------------------------------------------------------- /sanity/config/.checksums: -------------------------------------------------------------------------------- 1 | { 2 | "#": "Used by Sanity to keep track of configuration file checksums, do not delete or modify!", 3 | "@sanity/default-layout": "bb034f391ba508a6ca8cd971967cbedeb131c4d19b17b28a0895f32db5d568ea", 4 | "@sanity/default-login": "6fb6d3800aa71346e1b84d95bbcaa287879456f2922372bb0294e30b968cd37f", 5 | "@sanity/form-builder": "b38478227ba5e22c91981da4b53436df22e48ff25238a55a973ed620be5068aa", 6 | "@sanity/data-aspects": "d199e2c199b3e26cd28b68dc84d7fc01c9186bf5089580f2e2446994d36b3cb6", 7 | "@sanity/vision": "da5b6ed712703ecd04bf4df560570c668aa95252c6bc1c41d6df1bda9b8b8f60" 8 | } 9 | -------------------------------------------------------------------------------- /sanity/config/@sanity/data-aspects.json: -------------------------------------------------------------------------------- 1 | { 2 | "listOptions": {} 3 | } 4 | -------------------------------------------------------------------------------- /sanity/config/@sanity/default-layout.json: -------------------------------------------------------------------------------- 1 | { 2 | "toolSwitcher": { 3 | "order": [], 4 | "hidden": [] 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sanity/config/@sanity/default-login.json: -------------------------------------------------------------------------------- 1 | { 2 | "providers": { 3 | "mode": "append", 4 | "redirectOnSingle": false, 5 | "entries": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sanity/config/@sanity/form-builder.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": { 3 | "directUploads": true 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /sanity/config/@sanity/vision.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultApiVersion": "2021-10-21" 3 | } 4 | -------------------------------------------------------------------------------- /sanity/dist/index.html: -------------------------------------------------------------------------------- 1 | acm-website – Sanity
Connecting to Sanity.io
-------------------------------------------------------------------------------- /sanity/dist/static/.gitkeep: -------------------------------------------------------------------------------- 1 | Files placed here will be served by the Sanity server under the `/static`-prefix 2 | -------------------------------------------------------------------------------- /sanity/dist/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/sanity/dist/static/favicon.ico -------------------------------------------------------------------------------- /sanity/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "acmwebsite", 3 | "private": true, 4 | "version": "1.0.0", 5 | "description": "", 6 | "main": "package.json", 7 | "author": "Harshpreet Singh Johar ", 8 | "license": "UNLICENSED", 9 | "scripts": { 10 | "start": "sanity start", 11 | "build": "sanity build" 12 | }, 13 | "keywords": [ 14 | "sanity" 15 | ], 16 | "dependencies": { 17 | "@sanity/base": "^2.27.1", 18 | "@sanity/core": "^2.27.0", 19 | "@sanity/default-layout": "^2.27.1", 20 | "@sanity/default-login": "^2.27.0", 21 | "@sanity/desk-tool": "^2.27.1", 22 | "@sanity/eslint-config-studio": "^2.0.0", 23 | "@sanity/vision": "^2.27.1", 24 | "eslint": "^8.6.0", 25 | "prop-types": "^15.7", 26 | "react": "^17.0", 27 | "react-dom": "^17.0", 28 | "styled-components": "^5.2.0" 29 | }, 30 | "devDependencies": {}, 31 | "repository": { 32 | "type": "git", 33 | "url": "https://github.com/harshjohar/ACM-PEC-Website" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /sanity/plugins/.gitkeep: -------------------------------------------------------------------------------- 1 | User-specific packages can be placed here 2 | -------------------------------------------------------------------------------- /sanity/sanity.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "project": { 4 | "name": "acm-website" 5 | }, 6 | "api": { 7 | "projectId": "9zrn54i9", 8 | "dataset": "events" 9 | }, 10 | "plugins": [ 11 | "@sanity/base", 12 | "@sanity/default-layout", 13 | "@sanity/default-login", 14 | "@sanity/desk-tool" 15 | ], 16 | "env": { 17 | "development": { 18 | "plugins": [ 19 | "@sanity/vision" 20 | ] 21 | } 22 | }, 23 | "parts": [ 24 | { 25 | "name": "part:@sanity/base/schema", 26 | "path": "./schemas/schema" 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /sanity/schemas/blockContent.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This is the schema definition for the rich text fields used for 3 | * for this blog studio. When you import it in schemas.js it can be 4 | * reused in other parts of the studio with: 5 | * { 6 | * name: 'someName', 7 | * title: 'Some title', 8 | * type: 'blockContent' 9 | * } 10 | */ 11 | export default { 12 | title: 'Block Content', 13 | name: 'blockContent', 14 | type: 'array', 15 | of: [ 16 | { 17 | title: 'Block', 18 | type: 'block', 19 | // Styles let you set what your user can mark up blocks with. These 20 | // correspond with HTML tags, but you can set any title or value 21 | // you want and decide how you want to deal with it where you want to 22 | // use your content. 23 | styles: [ 24 | {title: 'Normal', value: 'normal'}, 25 | {title: 'H1', value: 'h1'}, 26 | {title: 'H2', value: 'h2'}, 27 | {title: 'H3', value: 'h3'}, 28 | {title: 'H4', value: 'h4'}, 29 | {title: 'Quote', value: 'blockquote'}, 30 | ], 31 | lists: [{title: 'Bullet', value: 'bullet'}], 32 | // Marks let you mark up inline text in the block editor. 33 | marks: { 34 | // Decorators usually describe a single property – e.g. a typographic 35 | // preference or highlighting by editors. 36 | decorators: [ 37 | {title: 'Strong', value: 'strong'}, 38 | {title: 'Emphasis', value: 'em'}, 39 | ], 40 | // Annotations can be any object structure – e.g. a link or a footnote. 41 | annotations: [ 42 | { 43 | title: 'URL', 44 | name: 'link', 45 | type: 'object', 46 | fields: [ 47 | { 48 | title: 'URL', 49 | name: 'href', 50 | type: 'url', 51 | }, 52 | ], 53 | }, 54 | ], 55 | }, 56 | }, 57 | // You can add additional types here. Note that you can't use 58 | // primitive types such as 'string' and 'number' in the same array 59 | // as a block type. 60 | { 61 | type: 'image', 62 | options: {hotspot: true}, 63 | }, 64 | ], 65 | } 66 | -------------------------------------------------------------------------------- /sanity/schemas/blog.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: "blog", 3 | title: "Blog", 4 | type: "document", 5 | fields: [ 6 | { 7 | name: "title", 8 | title: "Title", 9 | type: "string", 10 | }, 11 | { 12 | name: "slug", 13 | title: "Slug", 14 | type: "slug", 15 | options: { 16 | source: "title", 17 | maxLength: 96, 18 | }, 19 | }, 20 | { 21 | name: 'tags', 22 | title: "Tags", 23 | type: "array", 24 | of: [{type: "string"}] 25 | }, 26 | { 27 | name: "mainImage", 28 | title: "Main image", 29 | type: "image", 30 | options: { 31 | hotspot: true, 32 | }, 33 | }, 34 | { 35 | name: "description", 36 | title: "Description", 37 | type: "string", 38 | }, 39 | { 40 | name: "author", 41 | title: "Author", 42 | type: "string" 43 | }, 44 | { 45 | name: "publishedAt", 46 | title: "Published at", 47 | type: "datetime", 48 | }, 49 | { 50 | name: "body", 51 | title: "Body", 52 | type: "blockContent", 53 | }, 54 | ], 55 | 56 | preview: { 57 | select: { 58 | title: "title", 59 | author: "author.name", 60 | media: "mainImage", 61 | }, 62 | prepare(selection) { 63 | const { author } = selection; 64 | return Object.assign({}, selection, { 65 | subtitle: author && `by ${author}`, 66 | }); 67 | }, 68 | }, 69 | }; 70 | -------------------------------------------------------------------------------- /sanity/schemas/events.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: "event", 3 | title: "Event", 4 | type: "document", 5 | fields: [ 6 | { 7 | name: "title", 8 | title: "Title", 9 | type: "string", 10 | }, 11 | { 12 | name: "slug", 13 | title: "Slug", 14 | type: "slug", 15 | options: { 16 | source: "title", 17 | maxLength: 96, 18 | }, 19 | }, 20 | { 21 | name: "mainImage", 22 | title: "Main image", 23 | type: "image", 24 | options: { 25 | hotspot: true, 26 | }, 27 | }, 28 | { 29 | name: "publishedAt", 30 | title: "Published at", 31 | type: "datetime", 32 | }, 33 | { 34 | name: "content", 35 | title: "Content", 36 | type: "string", 37 | }, 38 | { 39 | name: "body", 40 | title: "Body", 41 | type: "blockContent", 42 | }, 43 | ], 44 | 45 | preview: { 46 | select: { 47 | title: "title", 48 | author: "author.name", 49 | media: "mainImage", 50 | }, 51 | prepare(selection) { 52 | const { author } = selection; 53 | return Object.assign({}, selection, { 54 | subtitle: author && `by ${author}`, 55 | }); 56 | }, 57 | }, 58 | }; 59 | -------------------------------------------------------------------------------- /sanity/schemas/projects.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: "project", 3 | title: "Project", 4 | type: "document", 5 | fields: [ 6 | { 7 | name: "title", 8 | title: "Title", 9 | type: "string", 10 | }, 11 | { 12 | name: "slug", 13 | title: "Slug", 14 | type: "slug", 15 | options: { 16 | source: "title", 17 | maxLength: 96, 18 | }, 19 | }, 20 | { 21 | name: "mainImage", 22 | title: "Main image", 23 | type: "image", 24 | options: { 25 | hotspot: true, 26 | }, 27 | }, 28 | { 29 | name: "description", 30 | title: "Description", 31 | type: "string", 32 | }, 33 | { 34 | name: "repository", 35 | title: "Github Repository", 36 | type: "string" 37 | }, 38 | ], 39 | 40 | preview: { 41 | select: { 42 | title: "title", 43 | author: "author.name", 44 | media: "mainImage", 45 | }, 46 | prepare(selection) { 47 | const { author } = selection; 48 | return Object.assign({}, selection, { 49 | subtitle: author && `by ${author}`, 50 | }); 51 | }, 52 | }, 53 | }; 54 | -------------------------------------------------------------------------------- /sanity/schemas/schema.js: -------------------------------------------------------------------------------- 1 | import createSchema from 'part:@sanity/base/schema-creator' 2 | import schemaTypes from 'all:part:@sanity/base/schema-type' 3 | import blockContent from './blockContent' 4 | import events from './events' 5 | import projects from './projects' 6 | import blog from './blog' 7 | export default createSchema({ 8 | name: 'default', 9 | types: schemaTypes.concat([ 10 | blockContent, 11 | events, 12 | projects, 13 | blog 14 | ]), 15 | }) 16 | -------------------------------------------------------------------------------- /sanity/static/.gitkeep: -------------------------------------------------------------------------------- 1 | Files placed here will be served by the Sanity server under the `/static`-prefix 2 | -------------------------------------------------------------------------------- /sanity/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/sanity/static/favicon.ico -------------------------------------------------------------------------------- /sanity/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // Note: This config is only used to help editors like VS Code understand/resolve 3 | // parts, the actual transpilation is done by babel. Any compiler configuration in 4 | // here will be ignored. 5 | "include": ["./node_modules/@sanity/base/types/**/*.ts", "./**/*.ts", "./**/*.tsx"] 6 | } 7 | -------------------------------------------------------------------------------- /src/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { BrowserRouter, Switch, Route } from 'react-router-dom'; 3 | import Home from './components/Home'; 4 | import Header from './components/common/Header/header'; 5 | import Footer from './components/common/Footer/Footer'; 6 | import About from './components/About-Us-Body'; 7 | import Events from './components/Events'; 8 | import Projects from './components/ProjectMain'; 9 | import Blogs from './components/Blogs'; 10 | import ScrollTopButton from './components/common/ScrollTopButton/ScrollTopButton'; 11 | import './app.css'; 12 | import ScrollToTop from './utils/helpers/scrollToTop'; 13 | 14 | function App() { 15 | return ( 16 | 17 |
18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 |
39 | 40 |
41 |
42 | ); 43 | } 44 | 45 | export default App; 46 | -------------------------------------------------------------------------------- /src/app.css: -------------------------------------------------------------------------------- 1 | /* 2 | ! tailwindcss v3.1.8 | MIT License | https://tailwindcss.com 3 | */ 4 | 5 | /* 6 | 1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) 7 | 2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) 8 | */ 9 | 10 | *, 11 | ::before, 12 | ::after { 13 | box-sizing: border-box; 14 | /* 1 */ 15 | border-width: 0; 16 | /* 2 */ 17 | border-style: solid; 18 | /* 2 */ 19 | border-color: #e5e7eb; 20 | /* 2 */ 21 | } 22 | 23 | ::before, 24 | ::after { 25 | --tw-content: ''; 26 | } 27 | 28 | /* 29 | 1. Use a consistent sensible line-height in all browsers. 30 | 2. Prevent adjustments of font size after orientation changes in iOS. 31 | 3. Use a more readable tab size. 32 | 4. Use the user's configured `sans` font-family by default. 33 | */ 34 | 35 | html { 36 | line-height: 1.5; 37 | /* 1 */ 38 | -webkit-text-size-adjust: 100%; 39 | /* 2 */ 40 | /* 3 */ 41 | tab-size: 4; 42 | /* 3 */ 43 | font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 44 | /* 4 */ 45 | } 46 | 47 | /* 48 | 1. Remove the margin in all browsers. 49 | 2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. 50 | */ 51 | 52 | body { 53 | margin: 0; 54 | /* 1 */ 55 | line-height: inherit; 56 | /* 2 */ 57 | } 58 | 59 | /* 60 | 1. Add the correct height in Firefox. 61 | 2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) 62 | 3. Ensure horizontal rules are visible by default. 63 | */ 64 | 65 | hr { 66 | height: 0; 67 | /* 1 */ 68 | color: inherit; 69 | /* 2 */ 70 | border-top-width: 1px; 71 | /* 3 */ 72 | } 73 | 74 | /* 75 | Add the correct text decoration in Chrome, Edge, and Safari. 76 | */ 77 | 78 | abbr:where([title]) { 79 | -webkit-text-decoration: underline dotted; 80 | text-decoration: underline dotted; 81 | } 82 | 83 | /* 84 | Remove the default font size and weight for headings. 85 | */ 86 | 87 | h1, 88 | h2, 89 | h3, 90 | h4, 91 | h5, 92 | h6 { 93 | font-size: inherit; 94 | font-weight: inherit; 95 | } 96 | 97 | /* 98 | Reset links to optimize for opt-in styling instead of opt-out. 99 | */ 100 | 101 | a { 102 | color: inherit; 103 | text-decoration: inherit; 104 | } 105 | 106 | /* 107 | Add the correct font weight in Edge and Safari. 108 | */ 109 | 110 | b, 111 | strong { 112 | font-weight: bolder; 113 | } 114 | 115 | /* 116 | 1. Use the user's configured `mono` font family by default. 117 | 2. Correct the odd `em` font sizing in all browsers. 118 | */ 119 | 120 | code, 121 | kbd, 122 | samp, 123 | pre { 124 | font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; 125 | /* 1 */ 126 | font-size: 1em; 127 | /* 2 */ 128 | } 129 | 130 | /* 131 | Add the correct font size in all browsers. 132 | */ 133 | 134 | small { 135 | font-size: 80%; 136 | } 137 | 138 | /* 139 | Prevent `sub` and `sup` elements from affecting the line height in all browsers. 140 | */ 141 | 142 | sub, 143 | sup { 144 | font-size: 75%; 145 | line-height: 0; 146 | position: relative; 147 | vertical-align: baseline; 148 | } 149 | 150 | sub { 151 | bottom: -0.25em; 152 | } 153 | 154 | sup { 155 | top: -0.5em; 156 | } 157 | 158 | /* 159 | 1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) 160 | 2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) 161 | 3. Remove gaps between table borders by default. 162 | */ 163 | 164 | table { 165 | text-indent: 0; 166 | /* 1 */ 167 | border-color: inherit; 168 | /* 2 */ 169 | border-collapse: collapse; 170 | /* 3 */ 171 | } 172 | 173 | /* 174 | 1. Change the font styles in all browsers. 175 | 2. Remove the margin in Firefox and Safari. 176 | 3. Remove default padding in all browsers. 177 | */ 178 | 179 | button, 180 | input, 181 | optgroup, 182 | select, 183 | textarea { 184 | font-family: inherit; 185 | /* 1 */ 186 | font-size: 100%; 187 | /* 1 */ 188 | font-weight: inherit; 189 | /* 1 */ 190 | line-height: inherit; 191 | /* 1 */ 192 | color: inherit; 193 | /* 1 */ 194 | margin: 0; 195 | /* 2 */ 196 | padding: 0; 197 | /* 3 */ 198 | } 199 | 200 | /* 201 | Remove the inheritance of text transform in Edge and Firefox. 202 | */ 203 | 204 | button, 205 | select { 206 | text-transform: none; 207 | } 208 | 209 | /* 210 | 1. Correct the inability to style clickable types in iOS and Safari. 211 | 2. Remove default button styles. 212 | */ 213 | 214 | button, 215 | [type='button'], 216 | [type='reset'], 217 | [type='submit'] { 218 | -webkit-appearance: button; 219 | /* 1 */ 220 | background-color: transparent; 221 | /* 2 */ 222 | background-image: none; 223 | /* 2 */ 224 | } 225 | 226 | /* 227 | Use the modern Firefox focus style for all focusable elements. 228 | */ 229 | 230 | :-moz-focusring { 231 | outline: auto; 232 | } 233 | 234 | /* 235 | Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) 236 | */ 237 | 238 | :-moz-ui-invalid { 239 | box-shadow: none; 240 | } 241 | 242 | /* 243 | Add the correct vertical alignment in Chrome and Firefox. 244 | */ 245 | 246 | progress { 247 | vertical-align: baseline; 248 | } 249 | 250 | /* 251 | Correct the cursor style of increment and decrement buttons in Safari. 252 | */ 253 | 254 | ::-webkit-inner-spin-button, 255 | ::-webkit-outer-spin-button { 256 | height: auto; 257 | } 258 | 259 | /* 260 | 1. Correct the odd appearance in Chrome and Safari. 261 | 2. Correct the outline style in Safari. 262 | */ 263 | 264 | [type='search'] { 265 | -webkit-appearance: textfield; 266 | /* 1 */ 267 | outline-offset: -2px; 268 | /* 2 */ 269 | } 270 | 271 | /* 272 | Remove the inner padding in Chrome and Safari on macOS. 273 | */ 274 | 275 | ::-webkit-search-decoration { 276 | -webkit-appearance: none; 277 | } 278 | 279 | /* 280 | 1. Correct the inability to style clickable types in iOS and Safari. 281 | 2. Change font properties to `inherit` in Safari. 282 | */ 283 | 284 | ::-webkit-file-upload-button { 285 | -webkit-appearance: button; 286 | /* 1 */ 287 | font: inherit; 288 | /* 2 */ 289 | } 290 | 291 | /* 292 | Add the correct display in Chrome and Safari. 293 | */ 294 | 295 | summary { 296 | display: list-item; 297 | } 298 | 299 | /* 300 | Removes the default spacing and border for appropriate elements. 301 | */ 302 | 303 | blockquote, 304 | dl, 305 | dd, 306 | h1, 307 | h2, 308 | h3, 309 | h4, 310 | h5, 311 | h6, 312 | hr, 313 | figure, 314 | p, 315 | pre { 316 | margin: 0; 317 | } 318 | 319 | fieldset { 320 | margin: 0; 321 | padding: 0; 322 | } 323 | 324 | legend { 325 | padding: 0; 326 | } 327 | 328 | ol, 329 | ul, 330 | menu { 331 | list-style: none; 332 | margin: 0; 333 | padding: 0; 334 | } 335 | 336 | /* 337 | Prevent resizing textareas horizontally by default. 338 | */ 339 | 340 | textarea { 341 | resize: vertical; 342 | } 343 | 344 | /* 345 | 1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) 346 | 2. Set the default placeholder color to the user's configured gray 400 color. 347 | */ 348 | 349 | input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { 350 | opacity: 1; 351 | /* 1 */ 352 | color: #9ca3af; 353 | /* 2 */ 354 | } 355 | 356 | input::placeholder, 357 | textarea::placeholder { 358 | opacity: 1; 359 | /* 1 */ 360 | color: #9ca3af; 361 | /* 2 */ 362 | } 363 | 364 | /* 365 | Set the default cursor for buttons. 366 | */ 367 | 368 | button, 369 | [role="button"] { 370 | cursor: pointer; 371 | } 372 | 373 | /* 374 | Make sure disabled buttons don't get the pointer cursor. 375 | */ 376 | 377 | :disabled { 378 | cursor: default; 379 | } 380 | 381 | /* 382 | 1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) 383 | 2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) 384 | This can trigger a poorly considered lint error in some tools but is included by design. 385 | */ 386 | 387 | img, 388 | svg, 389 | video, 390 | canvas, 391 | audio, 392 | iframe, 393 | embed, 394 | object { 395 | display: block; 396 | /* 1 */ 397 | vertical-align: middle; 398 | /* 2 */ 399 | } 400 | 401 | /* 402 | Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) 403 | */ 404 | 405 | img, 406 | video { 407 | max-width: 100%; 408 | height: auto; 409 | } 410 | 411 | *, ::before, ::after { 412 | --tw-border-spacing-x: 0; 413 | --tw-border-spacing-y: 0; 414 | --tw-translate-x: 0; 415 | --tw-translate-y: 0; 416 | --tw-rotate: 0; 417 | --tw-skew-x: 0; 418 | --tw-skew-y: 0; 419 | --tw-scale-x: 1; 420 | --tw-scale-y: 1; 421 | --tw-pan-x: ; 422 | --tw-pan-y: ; 423 | --tw-pinch-zoom: ; 424 | --tw-scroll-snap-strictness: proximity; 425 | --tw-ordinal: ; 426 | --tw-slashed-zero: ; 427 | --tw-numeric-figure: ; 428 | --tw-numeric-spacing: ; 429 | --tw-numeric-fraction: ; 430 | --tw-ring-inset: ; 431 | --tw-ring-offset-width: 0px; 432 | --tw-ring-offset-color: #fff; 433 | --tw-ring-color: rgb(59 130 246 / 0.5); 434 | --tw-ring-offset-shadow: 0 0 #0000; 435 | --tw-ring-shadow: 0 0 #0000; 436 | --tw-shadow: 0 0 #0000; 437 | --tw-shadow-colored: 0 0 #0000; 438 | --tw-blur: ; 439 | --tw-brightness: ; 440 | --tw-contrast: ; 441 | --tw-grayscale: ; 442 | --tw-hue-rotate: ; 443 | --tw-invert: ; 444 | --tw-saturate: ; 445 | --tw-sepia: ; 446 | --tw-drop-shadow: ; 447 | --tw-backdrop-blur: ; 448 | --tw-backdrop-brightness: ; 449 | --tw-backdrop-contrast: ; 450 | --tw-backdrop-grayscale: ; 451 | --tw-backdrop-hue-rotate: ; 452 | --tw-backdrop-invert: ; 453 | --tw-backdrop-opacity: ; 454 | --tw-backdrop-saturate: ; 455 | --tw-backdrop-sepia: ; 456 | } 457 | 458 | ::-webkit-backdrop { 459 | --tw-border-spacing-x: 0; 460 | --tw-border-spacing-y: 0; 461 | --tw-translate-x: 0; 462 | --tw-translate-y: 0; 463 | --tw-rotate: 0; 464 | --tw-skew-x: 0; 465 | --tw-skew-y: 0; 466 | --tw-scale-x: 1; 467 | --tw-scale-y: 1; 468 | --tw-pan-x: ; 469 | --tw-pan-y: ; 470 | --tw-pinch-zoom: ; 471 | --tw-scroll-snap-strictness: proximity; 472 | --tw-ordinal: ; 473 | --tw-slashed-zero: ; 474 | --tw-numeric-figure: ; 475 | --tw-numeric-spacing: ; 476 | --tw-numeric-fraction: ; 477 | --tw-ring-inset: ; 478 | --tw-ring-offset-width: 0px; 479 | --tw-ring-offset-color: #fff; 480 | --tw-ring-color: rgb(59 130 246 / 0.5); 481 | --tw-ring-offset-shadow: 0 0 #0000; 482 | --tw-ring-shadow: 0 0 #0000; 483 | --tw-shadow: 0 0 #0000; 484 | --tw-shadow-colored: 0 0 #0000; 485 | --tw-blur: ; 486 | --tw-brightness: ; 487 | --tw-contrast: ; 488 | --tw-grayscale: ; 489 | --tw-hue-rotate: ; 490 | --tw-invert: ; 491 | --tw-saturate: ; 492 | --tw-sepia: ; 493 | --tw-drop-shadow: ; 494 | --tw-backdrop-blur: ; 495 | --tw-backdrop-brightness: ; 496 | --tw-backdrop-contrast: ; 497 | --tw-backdrop-grayscale: ; 498 | --tw-backdrop-hue-rotate: ; 499 | --tw-backdrop-invert: ; 500 | --tw-backdrop-opacity: ; 501 | --tw-backdrop-saturate: ; 502 | --tw-backdrop-sepia: ; 503 | } 504 | 505 | ::backdrop { 506 | --tw-border-spacing-x: 0; 507 | --tw-border-spacing-y: 0; 508 | --tw-translate-x: 0; 509 | --tw-translate-y: 0; 510 | --tw-rotate: 0; 511 | --tw-skew-x: 0; 512 | --tw-skew-y: 0; 513 | --tw-scale-x: 1; 514 | --tw-scale-y: 1; 515 | --tw-pan-x: ; 516 | --tw-pan-y: ; 517 | --tw-pinch-zoom: ; 518 | --tw-scroll-snap-strictness: proximity; 519 | --tw-ordinal: ; 520 | --tw-slashed-zero: ; 521 | --tw-numeric-figure: ; 522 | --tw-numeric-spacing: ; 523 | --tw-numeric-fraction: ; 524 | --tw-ring-inset: ; 525 | --tw-ring-offset-width: 0px; 526 | --tw-ring-offset-color: #fff; 527 | --tw-ring-color: rgb(59 130 246 / 0.5); 528 | --tw-ring-offset-shadow: 0 0 #0000; 529 | --tw-ring-shadow: 0 0 #0000; 530 | --tw-shadow: 0 0 #0000; 531 | --tw-shadow-colored: 0 0 #0000; 532 | --tw-blur: ; 533 | --tw-brightness: ; 534 | --tw-contrast: ; 535 | --tw-grayscale: ; 536 | --tw-hue-rotate: ; 537 | --tw-invert: ; 538 | --tw-saturate: ; 539 | --tw-sepia: ; 540 | --tw-drop-shadow: ; 541 | --tw-backdrop-blur: ; 542 | --tw-backdrop-brightness: ; 543 | --tw-backdrop-contrast: ; 544 | --tw-backdrop-grayscale: ; 545 | --tw-backdrop-hue-rotate: ; 546 | --tw-backdrop-invert: ; 547 | --tw-backdrop-opacity: ; 548 | --tw-backdrop-saturate: ; 549 | --tw-backdrop-sepia: ; 550 | } 551 | 552 | .fixed { 553 | position: fixed; 554 | } 555 | 556 | .absolute { 557 | position: absolute; 558 | } 559 | 560 | .relative { 561 | position: relative; 562 | } 563 | 564 | .bottom-20 { 565 | bottom: 5rem; 566 | } 567 | 568 | .left-20 { 569 | left: 5rem; 570 | } 571 | 572 | .top-20 { 573 | top: 5rem; 574 | } 575 | 576 | .right-96 { 577 | right: 24rem; 578 | } 579 | 580 | .top-32 { 581 | top: 8rem; 582 | } 583 | 584 | .left-96 { 585 | left: 24rem; 586 | } 587 | 588 | .bottom-0 { 589 | bottom: 0px; 590 | } 591 | 592 | .right-\[22vw\] { 593 | right: 22vw; 594 | } 595 | 596 | .z-\[20\] { 597 | z-index: 20; 598 | } 599 | 600 | .z-\[1\] { 601 | z-index: 1; 602 | } 603 | 604 | .mb-3 { 605 | margin-bottom: 0.75rem; 606 | } 607 | 608 | .flex { 609 | display: flex; 610 | } 611 | 612 | .hidden { 613 | display: none; 614 | } 615 | 616 | .h-full { 617 | height: 100%; 618 | } 619 | 620 | .w-1\/12 { 621 | width: 8.333333%; 622 | } 623 | 624 | .w-\[12\%\] { 625 | width: 12%; 626 | } 627 | 628 | .basis-full { 629 | flex-basis: 100%; 630 | } 631 | 632 | .transform { 633 | -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); 634 | transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); 635 | } 636 | 637 | .resize { 638 | resize: both; 639 | } 640 | 641 | .list-none { 642 | list-style-type: none; 643 | } 644 | 645 | .flex-col { 646 | flex-direction: column; 647 | } 648 | 649 | .items-center { 650 | align-items: center; 651 | } 652 | 653 | .justify-center { 654 | justify-content: center; 655 | } 656 | 657 | .gap-4 { 658 | gap: 1rem; 659 | } 660 | 661 | .bg-Lblue { 662 | --tw-bg-opacity: 1; 663 | background-color: rgb(236 242 254 / var(--tw-bg-opacity)); 664 | } 665 | 666 | .bg-right-bottom { 667 | background-position: right bottom; 668 | } 669 | 670 | .p-4 { 671 | padding: 1rem; 672 | } 673 | 674 | .text-xl { 675 | font-size: 1.25rem; 676 | line-height: 1.75rem; 677 | } 678 | 679 | .text-lg { 680 | font-size: 1.125rem; 681 | line-height: 1.75rem; 682 | } 683 | 684 | .font-extrabold { 685 | font-weight: 800; 686 | } 687 | 688 | .text-white { 689 | --tw-text-opacity: 1; 690 | color: rgb(255 255 255 / var(--tw-text-opacity)); 691 | } 692 | 693 | .shadow { 694 | --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); 695 | --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); 696 | box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); 697 | } 698 | 699 | .blur { 700 | --tw-blur: blur(8px); 701 | -webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); 702 | filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); 703 | } 704 | 705 | .drop-shadow { 706 | --tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / 0.1)) drop-shadow(0 1px 1px rgb(0 0 0 / 0.06)); 707 | -webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); 708 | filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); 709 | } 710 | 711 | .filter { 712 | -webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); 713 | filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); 714 | } 715 | 716 | @media (min-width: 768px) { 717 | .md\:basis-1\/4 { 718 | flex-basis: 25%; 719 | } 720 | 721 | .md\:flex-row { 722 | flex-direction: row; 723 | } 724 | 725 | .md\:bg-right-top { 726 | background-position: right top; 727 | } 728 | 729 | .md\:text-2xl { 730 | font-size: 1.5rem; 731 | line-height: 2rem; 732 | } 733 | } -------------------------------------------------------------------------------- /src/components/About-Us-Body.js: -------------------------------------------------------------------------------- 1 | import React, { useState } from "react"; 2 | 3 | import "../utils/stylesheets/About-Us-body.css"; 4 | import secy from '../utils/images/Nishant_puri.JPG'; 5 | 6 | 7 | const Home = () => { 8 | const [body, setBody] = useState("eb"); // "eb" or "ib" 9 | const [rotate, setRotate] = useState(false); 10 | const [btn, setBTN] = useState(0); 11 | const [isShown, setIsShown] = useState(false); 12 | const [isShown1, setIsShown1] = useState(false); 13 | const [isShown2, setIsShown2] = useState(false); 14 | const [isShown3, setIsShown3] = useState(false); 15 | 16 | // const handleClick = event => { 17 | // setIsShown(current => !current); 18 | // }; 19 | 20 | window.addEventListener("scroll", function () { 21 | var reveals = []; 22 | 23 | reveals.push(document.querySelectorAll(".acm-int-img")); 24 | reveals.push(document.querySelectorAll(".acm-img")); 25 | reveals.push(document.querySelectorAll(".acm-hist")); 26 | reveals.push(document.querySelectorAll(".acm-int-tex")); 27 | 28 | for (var j = 0; j < reveals.length; j++) { 29 | for (var i = 0; i < reveals[j].length; i++) { 30 | var windowHeight = window.innerHeight; 31 | var elementTop = reveals[j][i].getBoundingClientRect().top; 32 | var elementVisible = 150; 33 | 34 | if (j === 2 || j === 3) { 35 | if (elementTop < windowHeight - elementVisible) { 36 | reveals[j][i].classList.add("slide-right"); 37 | 38 | } else { 39 | reveals[j][i].classList.remove("slide-right"); 40 | } 41 | 42 | } else { 43 | if (elementTop < windowHeight - elementVisible) { 44 | reveals[j][i].classList.add("slide-left"); 45 | 46 | } else { 47 | reveals[j][i].classList.remove("slide-left"); 48 | } 49 | } 50 | } 51 | } 52 | }); 53 | 54 | return ( 55 | <> 56 |
57 |
58 |

Our Mission -

59 |

60 | To Be The Most Impactful ACM Student Chapter. 61 |

62 |
63 | 64 | 65 | 66 |
67 |
68 |
69 |
70 |
71 |

History of PEC

72 |

73 | Punjab Engineering College is a public research & technical 74 | institution in Chandigarh. It was founded in 1921 in Lahore, 75 | established in Chandigarh in 1953, and focuses on the field of 76 | applied sciences, particularly engineering and technology. It is 77 | known for its two-year and four-year programmes for which the 78 | entry is through the Joint Entrance Examination – Mains and 79 | Graduate Aptitude Test in Engineering. It offers degrees such as 80 | Bachelor of Technology, Master of Technology, and a few others. It 81 | also has a comprehensive graduate program offering doctoral 82 | degrees in Science, Technology, Engineering and Mathematics 83 |

84 |
85 |
86 | acm-img 91 |
92 |
93 | 94 |
95 |
96 | acm-img 101 |
102 |
103 |

History of ACM

104 |

105 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ligula 106 | nunc, consequat id odio sed, efficitur eleifend ex. Maecenas quis 107 | interdum urna. In tempus elit vulputate semper condimentum. Morbi 108 | tincidunt tellus vel condimentum sollicitudin. Morbi consectetur 109 | libero ac odio sagittis, et ullamcorper libero egestas. Quisque 110 | nisl purus, sagittis et sapien sit amet, ultricies laoreet neque. 111 | Curabitur fermentum ac sapien eu finibus. Sed eget molestie 112 | lectus. Nunc rutrum est in velit convallis consequat. Sed at massa 113 | ex. Phasellus scelerisque aliquam odio, non venenatis purus 114 | pretium sed. Aenean vulputate aliquet ipsum id auctor. In 115 | hendrerit nibh ipsum, quis commodo velit vehicula non. Sed 116 | interdum lectus urna, id molestie lectus vulputate eget. Morbi 117 | consectetur, massa sed mollis venenatis, quam dolor gravida felis, 118 | vitae rutrum est magna egestas libero. 119 |

120 |
121 |
122 | 123 |
124 |
125 |

PEC ACM's Field Of Interest

126 |

127 | Maecenas non urna sed ante interdum faucibus eu eu sem. Nam vitae 128 | erat consequat, pretium quam vitae, commodo ex. Donec pulvinar 129 | rhoncus dolor quis malesuada. Etiam imperdiet in magna non 130 | facilisis. Aenean rutrum, orci et pretium porttitor, ligula enim 131 | volutpat sapien, nec facilisis tortor erat in lectus. Praesent 132 | viverra diam eget dolor scelerisque posuere. Ut eget lectus quis 133 | ex efficitur auctor. Donec erat ligula, blandit non tristique et, 134 | condimentum vehicula urna. Sed egestas blandit turpis fermentum 135 | volutpat. In euismod nisl consectetur odio porta accumsan. Aenean 136 | ac mauris nisl. Mauris elementum sollicitudin suscipit. Donec 137 | feugiat urna sed ex pellentesque, et vulputate dolor mattis. Sed 138 | sodales mi est, nec pulvinar elit congue non. 139 |

140 |
141 |
142 | acm-img 147 |
148 |
149 |
150 |
151 |
152 |
OUR EXECUTIVE BOARD
153 |
154 |
155 | acm 160 |
161 |
162 |
163 |

PEC ACM Secretary

164 |
165 |
166 |

Nishant Puri

167 |

Incoming SDE at Microsoft

168 |

Former intern at Gurugram Cyber Police

169 |
170 |
171 |
172 | {/*
173 | 174 | 175 | 176 | 177 |
*/} 178 |
179 |
180 |
181 | 193 | 205 |
206 | 207 |
208 |
209 | {body === "eb" ? ( 210 |
211 | {/* eb */} 212 |
213 |
214 |
    215 |
  • 216 |
    217 | 218 | {isShown && ( 219 |
    220 |

    SDE at APPLE India
    Former Associate Developer Intern at D.E. Shaw

    221 |
    ) 222 | } 223 |
    224 |
  • 225 |
  • 226 |
    227 | 228 | {isShown1 && ( 229 |
    230 |

    Software Engineer at Arcesium
    Former Research Intern at DRDO and Former Software Developer Intern at Arcesium

    231 |
    ) 232 | } 233 |
    234 |
  • 235 |
  • 236 | 237 | {isShown2 && ( 238 |
    239 |

    SDE at APPLE India
    Former summer Analyst @Goldman Sach
    Silver medalist PEC CSE'22

    240 |
    ) 241 | } 242 |
  • 243 |
  • 244 |
    245 | 246 | {isShown3 && ( 247 |
    248 |

    SDE at Amazon India
    Former Software Developer Intern at Groww

    249 |
    ) 250 | } 251 |
    252 |
  • 253 |
254 |
255 | {/*
256 |
    257 |
  • Geetika Bansal
  • 258 |
  • Parikh Goyal
  • 259 |
  • Ankit Goyal
  • 260 |
  • Gaurav Sharma
  • 261 |
262 |
*/} 263 |
264 |
265 | ) : ( 266 | //
267 | // {/* ib */} 268 | //
269 | // IMPLEMENTATION 270 | //
271 | //
272 |
273 | {/* ib */} 274 |
275 |
276 |
    277 |
  • Saiyam Gupta
  • 278 |
  • Lakshya Garg
  • 279 |
  • Kanisha Kaur
  • 280 |
  • Kanika Kaur
  • 281 |
282 |
283 |
284 |
    285 |
  • Kriti Mahajan
  • 286 |
  • Kavya Rakheja
  • 287 |
288 |
289 |
290 |
291 | )} 292 |
293 |
294 |
295 |
296 |
297 | 298 | ); 299 | }; 300 | 301 | export default Home; 302 | -------------------------------------------------------------------------------- /src/components/BlogCard.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import '../utils/stylesheets/BlogCard.css' 3 | 4 | export const BlogCard = ({title,description,image,date,i}) => { 5 | return( 6 |
{ 10 | 11 | const horizontal = (e.clientX - (e.currentTarget.offsetLeft + e.currentTarget.clientWidth/2)) / e.currentTarget.clientWidth 12 | 13 | const vertical = (e.clientY - (e.currentTarget.clientHeight/2)) / e.currentTarget.clientHeight 14 | 15 | const rotateX = 10*horizontal 16 | const rotateY = -5*vertical 17 | 18 | 19 | document.getElementById(`blog-card-${i}`).style.transform = `perspective(${e.currentTarget.clientWidth}px) rotateX(${rotateY}deg) rotateY(${rotateX}deg) scale3d(1,1,1)` 20 | }} 21 | onMouseOut={(e)=>{ 22 | document.getElementById(`blog-card-${i}`).style.transform = `perspective(500px) rotateX(0deg) rotateY(0deg)` 23 | }}> 24 | {title} 25 |
26 | {title} 27 |

{description}

28 |
29 |
30 | 31 | {date} 32 |
33 |
34 |
35 | ) 36 | } -------------------------------------------------------------------------------- /src/components/Blogs.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { useEffect, useState } from "react"; 3 | import "../utils/stylesheets/blogs.css"; 4 | import { CgProfile } from "react-icons/cg"; 5 | import { BsCalendarWeek } from "react-icons/bs"; 6 | import sanityClient from "../sanity/client"; 7 | 8 | const ReadMore = ({ children }) => { 9 | const text = children; 10 | const [isReadMore, setIsReadMore] = useState(true); 11 | const toggleReadMore = () => { 12 | setIsReadMore(!isReadMore); 13 | }; 14 | return ( 15 |

16 | {isReadMore ? text.slice(0, 500) : text} 17 | 18 | {isReadMore ? "...Read more" : " Show less"} 19 | 20 |

21 | ); 22 | }; 23 | 24 | export default function Blogs() { 25 | const [blogList, setBlogList] = useState([]); 26 | 27 | useEffect(() => { 28 | const query = `*[_type=='blog'] { 29 | _id, 30 | title, 31 | tags, 32 | mainImage{ 33 | asset->{ 34 | _id, 35 | url 36 | } 37 | }, 38 | description, 39 | author, 40 | publishedAt, 41 | }`; 42 | sanityClient 43 | .fetch(query) 44 | .then((data) => setBlogList(data)) 45 | .catch((err) => console.log(err.message)); 46 | }); 47 | return ( 48 |
49 | {blogList.map((blogs) => { 50 | return ( 51 |
52 |
53 | blog 54 |
55 | 56 | 57 |  {blogs.author} 58 | {" "} 59 | 60 | {" "} 61 |   62 | {new Date(blogs.publishedAt).toLocaleDateString()} 63 | 64 |
65 |
66 |
67 |

Tag: {blogs.tags.join(", ")}

68 |

{blogs.title}

69 |

70 | {blogs.description} 71 |

72 |
73 |
74 | ); 75 | })} 76 |
77 | ); 78 | } 79 | -------------------------------------------------------------------------------- /src/components/Body.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from "react"; 2 | 3 | class Body extends Component { 4 | render() {; 5 | return ( 6 |

Body

7 | ); 8 | } 9 | } 10 | 11 | export default Body; 12 | -------------------------------------------------------------------------------- /src/components/Events.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import "../utils/stylesheets/Events.css"; 3 | import { BiTimeFive } from "react-icons/bi"; 4 | import { useState } from "react"; 5 | import { useEffect } from "react"; 6 | import sanityClient from "../sanity/client"; 7 | 8 | const Eventlist = ({ events }) => { 9 | return events.map((event) => { 10 | return ( 11 |
12 |
13 |
14 |
15 | event-img 20 |
21 |
22 |
23 |

24 | 25 | Event Date - 26 | {new Date(event.publishedAt).toLocaleDateString()} 27 |

28 |
29 |
{event.title}
30 |
31 |

32 | {event.content} 33 |

34 |
35 |
36 |
37 |
38 |
39 | ); 40 | }); 41 | }; 42 | 43 | function Events() { 44 | const [eventPosts, setEventPosts] = useState([]); 45 | 46 | useEffect(() => { 47 | const query = `*[_type=='event'] { 48 | _id, 49 | title, 50 | mainImage{ 51 | asset->{ 52 | _id, 53 | url 54 | } 55 | }, 56 | content, 57 | publishedAt, 58 | }`; 59 | sanityClient 60 | .fetch(query) 61 | .then((data) => setEventPosts(data)) 62 | .catch((err) => console.log(err.message)); 63 | }); 64 | return ( 65 |
66 |
67 |

Events

68 |
Ongoing Events
69 |
70 |
71 |
72 | 73 |
74 |
75 |
76 | ); 77 | } 78 | 79 | export default Events; 80 | -------------------------------------------------------------------------------- /src/components/Footer.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | 3 | import {FaEnvelope, FaPhone, FaMapMarker} from "react-icons/fa" 4 | 5 | import '../utils/stylesheets/footer.css'; 6 | 7 | 8 | class Footer extends Component { 9 | render() { 10 | return ( 11 | <> 12 |
13 |
14 |

ABOUT US

15 |
16 |
17 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Numquam fugiat minus iure sapiente possimus debitis repellat vero earum 18 |
19 | 20 |

SUBSCRIBE NEWSLETTER

21 |
22 |
23 |
24 | 25 | 26 | 27 |
28 |
29 |
30 |
31 |

CONTACT INFO

32 |
33 |
34 | Lorem ipsum dolor, sit amet consectetur adipisicing elit. Quis dolore dignissimos, molestiae distinctio id incidunt provident cum. Aspernatur, dignissimos animi? Lorem ipsum dolor sit amet, consectetur adipisicing elit. Necessitatibus, velit! 35 |
36 |
37 |
38 | 39 |
40 | 123 North West, Florida, USA 41 |
42 |
43 |
44 | 45 |
46 | example@domain.com 47 |
48 |
49 |
50 | 51 |
52 | 1-800-222-000 53 |
54 |
55 | 56 |
57 |
58 | 59 |
60 | 61 | ) 62 | } 63 | } 64 | 65 | export default Footer; 66 | -------------------------------------------------------------------------------- /src/components/GroupCard.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import '../utils/stylesheets/GroupCard.css' 3 | 4 | export const GroupCard = ({title,description,image}) =>{ 5 | return( 6 |
7 | {title} 8 |
9 |

{title}

10 |

{description}

11 |
12 |
13 | ) 14 | } -------------------------------------------------------------------------------- /src/components/Home.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import "../utils/stylesheets/home.css"; 3 | import { BlogCard } from "./BlogCard"; 4 | import { GroupCard } from "./GroupCard"; 5 | 6 | 7 | const groups = [ 8 | { 9 | title: "Competitive Programming", 10 | description: "Mental sport which enables you to code a given problem under provided constraints.", 11 | image: "https://cdn-icons-png.flaticon.com/512/2942/2942789.png" 12 | }, 13 | { 14 | title: "Machine Learning", 15 | description: "Field of study that gives computers the capability to learn without being explicitly programmed.", 16 | image: "https://cdn-icons-png.flaticon.com/512/1693/1693746.png" 17 | }, 18 | { 19 | title: "Web & App", 20 | description: "Refers to the building, creating, and maintaining of websites and applications.", 21 | image: "https://cdn-icons-png.flaticon.com/512/1055/1055687.png" 22 | }, 23 | { 24 | title: "Open Source", 25 | description: "Open source is source code that is made freely available for possible modification and redistribution.", 26 | image: "https://cdn-icons-png.flaticon.com/512/3262/3262392.png" 27 | }, 28 | { 29 | title: "Meta", 30 | description: "A graphical and hypothetical iteration of that rich virtual space, with claims of reliability where people can work, play, shop, and socialise.", 31 | image: "https://cdn-icons-png.flaticon.com/512/6033/6033716.png" 32 | }, 33 | { 34 | title: "Cyber Security", 35 | description: "Practice of protecting systems, networks, and programs from digital attacks.", 36 | image: "https://cdn-icons-png.flaticon.com/512/2716/2716612.png" 37 | } 38 | ] 39 | 40 | const blogs = [ 41 | { 42 | title: "Why life is sadder than u think", 43 | description: "Some things are better left unsaid, so let's not talk about it, thanku", 44 | image: "https://www.cyberark.com/wp-content/uploads/2019/11/Developer.jpg", 45 | date: "February 31, 2022" 46 | }, 47 | { 48 | title: "Why life is sadder than u think", 49 | description: "Some things are better left unsaid, so let's not talk about it, thanku", 50 | image: "https://www.cyberark.com/wp-content/uploads/2019/11/Developer.jpg", 51 | date: "February 31, 2022" 52 | }, 53 | { 54 | title: "Why life is sadder than u think", 55 | description: "Some things are better left unsaid, so let's not talk about it, thanku", 56 | image: "https://www.cyberark.com/wp-content/uploads/2019/11/Developer.jpg", 57 | date: "February 31, 2022" 58 | } 59 | ] 60 | 61 | function Home() { 62 | 63 | return ( 64 |
65 |
66 |
PEC ACM CSS
67 |
68 | PEC ACM is a student chapter of the Association for Computing Machinery at PEC University of 69 | Technology. 70 |
71 |
72 | home_img 73 | home_img 74 | home_img 75 | home_img 76 |
77 |
78 |

What we do.

79 |
80 |
81 |
82 |
01.
83 |
84 |

85 | Code 86 |

87 |

88 | We encourage various coding practices and have different branches supporting every coding style and stack. 89 |

90 |
91 | 92 |
93 |
94 |
02.
95 |
96 |

97 | Compete 98 |

99 |

100 | We constantly hold contests and hackathons which encourage development and good coding practices amongst students. The feeling of participation and competing amongst others has always been a good mentor. 101 |

102 |
103 | 104 |
105 |
106 |
03.
107 |
108 |

109 | Create 110 |

111 |

112 | We create real life solutions, enriched with latest Technologies and robust mechanisms. 113 |

114 |
115 | 116 |
117 |
118 |
119 |
120 |
121 |

Our Groups

122 |
123 |
124 | { 125 | groups.map(({ title, description, image }, i) => { 126 | return 127 | }) 128 | } 129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |

Who we are

137 |
138 |
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Atque quis voluptates distinctio esse tenetur architecto laborum impedit, sit nesciunt. Eveniet soluta repudiandae architecto? Id aperiam exercitationem odio consequuntur amet aut, eos corrupti cupiditate quasi! Ullam cupiditate atque error similique at veniam maiores tenetur itaque tempora, nobis molestiae quam sunt, suscipit praesentium! Sint, reiciendis fuga eius nulla facilis accusantium dignissimos voluptates ipsum laboriosam, molestias natus.
139 |
140 | Explore 141 | Meet our team 142 |
143 |
144 |
145 |
146 |

Recent Blogs

147 |
148 |
149 | { 150 | blogs.map(({ title, description, image, date }, i) => { 151 | return 159 | }) 160 | } 161 |
162 |
163 |
164 | ); 165 | } 166 | 167 | export default Home; 168 | -------------------------------------------------------------------------------- /src/components/Project.js: -------------------------------------------------------------------------------- 1 | import React, {useState} from "react"; 2 | import "../utils/stylesheets/project.css"; 3 | import "../utils/stylesheets/Events.css"; 4 | import "../utils/stylesheets/projectCard.css"; 5 | // import sanityClient from "../sanity/client"; 6 | 7 | // function Project(props) { 8 | // return ( 9 | //
10 | //
11 | 12 | //
13 | //
14 | // 15 | //
16 | //
17 | //

{props.title}

18 | //

{props.descrip}

19 | //

20 | // Repository:{" "} 21 | // 22 | // {props.repo} 23 | // 24 | //

25 | //
26 | //
27 | //
28 | //
29 | // ); 30 | // } 31 | function Project(props) { 32 | // return events.map((event) => { 33 | //this checks direction to toggle height of cardcontent 34 | const open = { 35 | height:"fit-content" 36 | } 37 | const close = { 38 | height:"200px" 39 | } 40 | // 41 | //this state stores height of content and more button text 42 | const [height, setheight] = useState({ 43 | isClicked:false, 44 | value:close, 45 | text:"...read more", 46 | filter:`blur(${5}px)` 47 | }) 48 | //this handler changes height of content and more button text 49 | const handleHeight = () =>{ 50 | if(height.isClicked===false){ 51 | setheight({ 52 | isClicked:true, 53 | value:open, 54 | text:"...show less", 55 | filter:`blur(${0}px)` 56 | }) 57 | }else{ 58 | setheight({ 59 | isClicked:false, 60 | value:close, 61 | text:"...read more", 62 | filter:`blur(${5}px)` 63 | }) 64 | } 65 | } 66 | return ( 67 |
68 |
69 |
70 |
71 |
72 | event-img 73 |
74 |
75 | {/*
76 |

77 | 78 | Event Date - 79 | {new Date(event.publishedAt).toLocaleDateString()} 80 |

*/} 81 | {/*
*/} 82 |
{props.title}
83 |
84 |

{props.descrip}

85 |

86 | Repository:{" "} 87 | 92 | {props.repo} 93 | 94 |
95 | 98 |
99 |

100 |
101 |
102 |
103 |
104 |
105 |
106 | ); 107 | // }); 108 | } 109 | 110 | // function Events() { 111 | // const [eventPosts, setEventPosts] = useState([]); 112 | 113 | // useEffect(() => { 114 | // const query = `*[_type=='event'] { 115 | // _id, 116 | // title, 117 | // mainImage{ 118 | // asset->{ 119 | // _id, 120 | // url 121 | // } 122 | // }, 123 | // content, 124 | // publishedAt, 125 | // }`; 126 | // sanityClient 127 | // .fetch(query) 128 | // .then((data) => setEventPosts(data)) 129 | // .catch((err) => console.log(err.message)); 130 | // }); 131 | // return ( 132 | //
133 | //
134 | //

Events

135 | //
Ongoing Events
136 | //
137 | //
138 | //
139 | // {/* */} 140 | //
141 | //
142 | //
143 | // ); 144 | // } 145 | 146 | export default Project; 147 | -------------------------------------------------------------------------------- /src/components/ProjectMain.js: -------------------------------------------------------------------------------- 1 | import React, { useState } from "react"; 2 | import Project from "./Project"; 3 | import Slider from "./Slider/Slider.js"; 4 | import ProjectImg from "./../utils/images/Images.js"; 5 | import { useEffect } from "react"; 6 | import sanityClient from "../sanity/client"; 7 | 8 | function ProjectMain() { 9 | const [projectPosts, setProjectPosts] = useState([]); 10 | 11 | useEffect(() => { 12 | const query = `*[_type=='project'] { 13 | _id, 14 | title, 15 | mainImage{ 16 | asset->{ 17 | _id, 18 | url 19 | } 20 | }, 21 | description, 22 | repository 23 | }`; 24 | sanityClient 25 | .fetch(query) 26 | .then((data) => setProjectPosts(data)) 27 | .catch((err) => console.log(err.message)); 28 | }); 29 | return ( 30 | <> 31 | {/* Slider Props: 32 | 1. Image links (Only First four images are shown in slider) 33 | 2. ID of */} 34 | 35 | {projectPosts.map((project) => ( 36 | 44 | ))} 45 | 46 | ); 47 | } 48 | 49 | export default ProjectMain; 50 | -------------------------------------------------------------------------------- /src/components/Slider/Slider.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import "./slider.css"; 3 | import arrowButton from "../../utils/images/left_point_btn.svg"; 4 | 5 | const delay = 3500; // change to 3500 again 6 | 7 | export default function Slider(props) { 8 | const [index, setIndex] = React.useState(0); 9 | const timeoutRef = React.useRef(null); 10 | const pro = document.getElementsByClassName("projectdiv"); 11 | 12 | const projects = props.image.slice(0, Math.min(4, props.image.length)); 13 | 14 | // console.log(currentImage.default); // Image fixed! 15 | 16 | // reset Time out index is changed 17 | function resetTimeout() { 18 | if (timeoutRef.current) clearTimeout(timeoutRef.current); 19 | } 20 | 21 | // Distortion removed 22 | React.useEffect(() => { 23 | resetTimeout(); 24 | timeoutRef.current = setTimeout( 25 | () => 26 | setIndex((prevIndex) => 27 | prevIndex === projects.length - 1 ? 0 : prevIndex + 1 28 | ), 29 | delay 30 | ); 31 | 32 | return () => { 33 | resetTimeout(); 34 | }; 35 | }); 36 | 37 | return ( 38 |
39 | {/* Main Body of Slider */} 40 |
41 |
45 | {projects.map((_, index) => ( 46 |
47 | {`Event { 52 | document.getElementById(`${_.id}`).scrollIntoView({ 53 | behavior: "smooth", 54 | }); 55 | }} 56 | /> 57 |
58 | ))} 59 |
60 |
61 | 62 |
63 | 75 |
76 | 77 | {/* Dots below slider for moving slides */} 78 |
79 | {/* Number Showing Current Slide Number (Hide in case of small device) Small device width < 450px */} 80 |
81 | 0{index + 1} / 0{projects.length} 82 |
83 | 84 | {/* Previous arrow */} 85 | previous-arrow { 90 | setIndex((prevIndex) => 91 | prevIndex === 0 ? projects.length - 1 : prevIndex - 1 92 | ); 93 | }} 94 | /> 95 | 96 | {/* Dots */} 97 | {projects.map((_, id) => ( 98 |
{ 102 | setIndex(id); 103 | }} 104 | /> 105 | ))} 106 | 107 | {/* Next arrow */} 108 | next-arrow { 113 | setIndex((prevIndex) => 114 | prevIndex === projects.length - 1 ? 0 : prevIndex + 1 115 | ); 116 | }} 117 | /> 118 |
119 |
120 | ); 121 | } 122 | -------------------------------------------------------------------------------- /src/components/Slider/slider.css: -------------------------------------------------------------------------------- 1 | /* Slider component wrapper */ 2 | 3 | .slider-wrapper { 4 | max-height: 92vh; 5 | height: 92vh; 6 | } 7 | 8 | 9 | /* Slide Show*/ 10 | 11 | .slide-show { 12 | margin: 5px auto; 13 | overflow: hidden; 14 | max-width: 85vw; 15 | } 16 | 17 | /* Slide (Contain all items of announcement) */ 18 | 19 | .slide { 20 | display: inline-block; 21 | position: relative; 22 | height: 400px; 23 | width: 100%; 24 | margin: 15px 0px 5px 0px; 25 | } 26 | 27 | .slide-img 28 | { 29 | height:400px; 30 | width: 90vw; 31 | } 32 | 33 | /* More info button */ 34 | .more-info-btn { 35 | background-color: #fff; 36 | color: #00B4D8; 37 | border: none; 38 | cursor: pointer; 39 | padding: 12px 22px; 40 | 41 | font-weight: bold; 42 | } 43 | 44 | .more-info-btn-container { 45 | display: flex; 46 | position: relative; 47 | 48 | margin: 20px 0 20px 80vw; 49 | 50 | background: #fff; 51 | width: 110px; 52 | 53 | border: 6px solid #4ac0ee; 54 | color: #4ac0ee; 55 | font-weight: bold; 56 | font-size: large; 57 | text-transform: uppercase; 58 | text-align: center; 59 | 60 | transition: all 0.2s 0.2s ease-out; 61 | } 62 | 63 | .more-info-btn-container::after, 64 | .more-info-btn-container::before { 65 | position: absolute; 66 | width: 100%; 67 | max-width: 100%; 68 | top: 100%; 69 | left: -15px; 70 | bottom: -10px; 71 | content: ""; 72 | z-index: 1; 73 | transition: all 0.2s ease-out 0.2s; 74 | } 75 | 76 | .more-info-btn-container::before { 77 | background: #4ac0ee; 78 | top: 10px; 79 | height: 100%; 80 | width: 15px; 81 | } 82 | 83 | .more-info-btn-container::after { 84 | width: 100%; 85 | background: #4ac0ee; 86 | right: 0px; 87 | height: 15px; 88 | } 89 | 90 | /* Hovering effect on more button */ 91 | .more-info-btn:hover{ 92 | background-color: #4ac0ee; 93 | color: #fff; 94 | } 95 | 96 | .more-info-btn-container:hover { 97 | background: #4ac0ee; 98 | color: #fff; 99 | } 100 | 101 | .more-info-btn-container:hover:after, 102 | .more-info-btn-container:hover:before { 103 | top: 100%; 104 | left: -15px; 105 | bottom: 0px; 106 | } 107 | 108 | .more-info-btn-container:hover:before { 109 | top: 0px; 110 | left: 0px; 111 | width: 0px; 112 | } 113 | 114 | .more-info-btn-container:hover:after { 115 | right: 0px; 116 | left: 0px; 117 | height: 0px; 118 | } 119 | 120 | /* slider */ 121 | 122 | .slide-show-slider { 123 | white-space: nowrap; 124 | transition: ease 2000ms; 125 | } 126 | 127 | 128 | /* Button (Dots) */ 129 | 130 | .slide-show-dots { 131 | display: flex; 132 | text-align: center; 133 | justify-content: center; 134 | margin: 20px 0; 135 | } 136 | 137 | .slide-show-dot { 138 | display: inline-block; 139 | height: 8px; 140 | width: 8px; 141 | border-radius: 50%; 142 | cursor: pointer; 143 | margin: 15px 9px 7px 0px; 144 | background-color: #CAF0F8; 145 | } 146 | 147 | .slide-show-dot:hover{ 148 | background-color: #90E0EF; 149 | } 150 | 151 | .slide-show-dot.active { 152 | transform: scale3d(1.6,1.6,1.6); 153 | transition: ease-out 100ms; 154 | background-color: white; 155 | border: 1.5px solid #00B4D8; 156 | } 157 | 158 | /* Numbers Showing Count of slide */ 159 | .slide-num 160 | { 161 | font-size: x-large; 162 | font-weight: 600; 163 | align-self: center; 164 | justify-content: center; 165 | margin-left: 40px; 166 | } 167 | 168 | /* Buttons (Arrows) */ 169 | 170 | .btn-prev-slide, 171 | .btn-next-slide { 172 | height: 30px; 173 | width: 30px; 174 | cursor: pointer; 175 | margin-left: auto; 176 | margin-right:40px; 177 | border-radius: 50%; 178 | 179 | /* 3D View */ 180 | box-shadow: 0px 14px 11px -10px rgb(0 0 0 / 50%); 181 | } 182 | 183 | .btn-next-slide 184 | { 185 | margin-left: 40px; 186 | box-shadow: 0px -14px 11px -10px rgb(0 0 0 / 50%); 187 | transform: rotate(180deg); 188 | } 189 | 190 | .btn-next-slide:hover, 191 | .btn-prev-slide:hover { 192 | box-shadow: 0px -0 11px -10px rgb(0 0 0 / 50%); 193 | background-color: #e2e2e2; 194 | } 195 | 196 | /* Responsiveness - (Make Image width 100vw) and Hide Numberbers below it */ 197 | 198 | @media (max-width: 750px) { 199 | .btn-prev-slide{ 200 | margin-left: 30px; 201 | margin-right: 30px; 202 | } 203 | 204 | .slide-num{ 205 | margin: 0px 40px 0px 0px; 206 | } 207 | } 208 | 209 | @media (max-width: 550px) { 210 | .slide{ 211 | height:230px; 212 | } 213 | 214 | .slide-img{ 215 | height: 230px; 216 | } 217 | 218 | .slide-num{ 219 | visibility: hidden; 220 | font-size: 0px; 221 | } 222 | 223 | .btn-prev-slide, 224 | .btn-next-slide{ 225 | height: 40px; 226 | width: 40px; 227 | } 228 | 229 | .slide-show-dot{ 230 | height: 9px; 231 | width: 9px; 232 | } 233 | 234 | .slide-show-dot.active{ 235 | transform: scale3d(1.2, 1.2, 1.2); 236 | } 237 | 238 | .more-info-btn-container{ 239 | margin-left: 70vw; 240 | } 241 | } 242 | 243 | /* Responsive based on height */ 244 | @media (max-height: 600px) { 245 | .slide, 246 | .slide-img { 247 | height:200px; 248 | } 249 | } -------------------------------------------------------------------------------- /src/components/common/Footer/Footer.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Link } from 'react-router-dom'; 3 | import logoacm from "../../../utils/images/pec_acm_logo.jpg"; 4 | import styles from "./footer.module.css"; 5 | 6 | const Footer = () => { 7 | return ( 8 | <> 9 | 53 | 54 | ) 55 | } 56 | 57 | export default Footer -------------------------------------------------------------------------------- /src/components/common/Footer/footer.module.css: -------------------------------------------------------------------------------- 1 | .mainFooter { 2 | width: 100%; 3 | height: max-content; 4 | background-color: #5069ff; 5 | background-image: url(/static/media/Student.724ce49f.png); 6 | background-repeat: no-repeat; 7 | } 8 | 9 | .logo { 10 | grid-column: 2/3; 11 | justify-content: flex-start; 12 | align-items: center; 13 | } 14 | 15 | .logo img { 16 | max-width: 76.54px; 17 | max-height: 76.54px; 18 | font-size: 2.5rem; 19 | font-weight: 400; 20 | color: cyan; 21 | } 22 | 23 | .logo h2 { 24 | font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; 25 | letter-spacing: 0.3px; 26 | margin-top: 1rem; 27 | color: white; 28 | } 29 | 30 | .mainFooter span, 31 | .mainFooter a { 32 | color: white; 33 | } -------------------------------------------------------------------------------- /src/components/common/Header/header.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Space+Mono&display=swap'); 2 | 3 | * { 4 | margin:0; 5 | padding:0; 6 | box-sizing: border-box; 7 | font-family: 'Space Mono', monospace; 8 | } 9 | 10 | html { 11 | font-size: 62.5%; 12 | } 13 | 14 | a { 15 | text-decoration: none !important; 16 | color: inherit; 17 | } 18 | 19 | li { 20 | list-style: none; 21 | } 22 | 23 | 24 | /* navbar style */ 25 | 26 | .main-nav { 27 | width: 100%; 28 | height: 10rem; 29 | display: grid; 30 | grid-template-columns: 10rem 1fr 2fr 1fr 10rem; 31 | box-shadow: rgba(50, 50, 93, 0.25) 0px 50px 100px -20px, 32 | rgba(0, 0, 0, 0.3) 0px 30px 60px -30px; 33 | } 34 | .no-wrap{ 35 | white-space: nowrap; 36 | } 37 | .logo { 38 | display: grid; 39 | /* background-color: #3b5998; */ 40 | grid-column: 2/3; 41 | justify-content: flex-start; 42 | align-items: center; 43 | } 44 | 45 | .logo img{ 46 | max-width: 76.54px; 47 | max-height: 76.54px; 48 | font-size: 2.5rem; 49 | font-weight: 400; 50 | color: cyan; 51 | } 52 | 53 | .menu-link { 54 | grid-column: 3/4; 55 | } 56 | 57 | .menu-link ul { 58 | height: 10rem; 59 | display: flex; 60 | justify-content: space-around; 61 | align-items: center; 62 | } 63 | 64 | .social-media { 65 | grid-column: 4/5; 66 | } 67 | 68 | .social-media ul { 69 | height: 10rem; 70 | display: grid; 71 | grid-template-columns: 3fr repeat(4, 1fr); 72 | align-items: center; 73 | justify-content: flex-end; 74 | } 75 | 76 | .social-media ul li { 77 | text-align: right; 78 | } 79 | 80 | .social-media ul li:hover { 81 | transform: scale(1.5); 82 | } 83 | 84 | .social-media ul li:first-child { 85 | grid-column: 2/3; 86 | } 87 | 88 | /* ----------- menu parts ----------------- */ 89 | 90 | .menu-link ul li { 91 | font-size: 1.8rem; 92 | } 93 | 94 | .menu-link ul li:hover { 95 | transform: scale(1.3); 96 | } 97 | 98 | 99 | .social-media ul li { 100 | font-size: 3rem; 101 | transition: ease 400ms; 102 | } 103 | 104 | .social-media .hamburger-menu { 105 | display: none; 106 | } 107 | 108 | .facebook { 109 | color: #3b5998; 110 | } 111 | 112 | .instagram { 113 | color: #c32aa3; 114 | } 115 | 116 | .youtube { 117 | color: #ff0000; 118 | } 119 | 120 | .linkedin{ 121 | color:#0e76a8; 122 | } 123 | 124 | /* hover animation */ 125 | 126 | .hover-underline-animation { 127 | display: inline-block; 128 | position: relative; 129 | /* color: #0087ca; */ 130 | transition: ease 500ms; 131 | } 132 | 133 | .hover-underline-animation:after { 134 | content: ''; 135 | position: absolute; 136 | width: 100%; 137 | transform: scaleX(0); 138 | height: 2px; 139 | bottom: -5px; 140 | left: 0; 141 | background-color: #9AD0EC; 142 | transform-origin: bottom right; 143 | transition: transform 0.25s ease-out; 144 | } 145 | 146 | .hover-underline-animation:hover:after { 147 | transform: scaleX(1); 148 | transform-origin: bottom left; 149 | } 150 | 151 | 152 | /* responsive */ 153 | 154 | @media (max-width: 1080px) { 155 | .main-nav { 156 | height: 8rem; 157 | grid-template-columns: 2rem 3fr 3fr 1fr 2rem; 158 | } 159 | 160 | .logo, 161 | .menu-link ul, 162 | .social-media ul { 163 | height: 8rem; 164 | } 165 | .logo img{ 166 | max-width: 56.54px; 167 | max-height: 56.54px; 168 | } 169 | } 170 | 171 | /* responsive css style */ 172 | @media (max-width: 998px) { 173 | .main-nav { 174 | height: 7rem; 175 | grid-template-columns: 2rem 2fr 3fr 2rem 2rem; 176 | } 177 | 178 | .menu-link { 179 | display: none; 180 | } 181 | 182 | .logo, 183 | .social-media ul { 184 | height: 7rem; 185 | } 186 | 187 | .logo img{ 188 | max-height: auto; 189 | max-width: 2em; 190 | } 191 | 192 | .mobile-menu-link { 193 | grid-column: 2/4; 194 | position: relative; 195 | z-index: 99; 196 | } 197 | 198 | .mobile-menu-link { 199 | background-color: white; 200 | display: grid; 201 | grid-column: 2/5; 202 | align-items: center; 203 | padding-left: 3rem; 204 | transition: all 2s linear; 205 | transform-origin: top; 206 | box-shadow: rgba(50, 50, 93, 0.25) 0px 50px 100px -20px, 207 | rgba(0, 0, 0, 0.3) 0px 30px 60px -30px; 208 | } 209 | 210 | .mobile-menu-link ul { 211 | display: flex; 212 | justify-content: space-around; 213 | flex-direction: column; 214 | align-items: flex-start; 215 | height: 100%; 216 | } 217 | 218 | .mobile-menu-link ul li:first-child { 219 | transition-delay: 0.2s; 220 | } 221 | 222 | .social-media { 223 | grid-row: 1/2; 224 | grid-column: 3/5; 225 | justify-items: end; 226 | align-items: center; 227 | transition: all 2s linear; 228 | } 229 | 230 | .social-media .social-media-desktop { 231 | height: 0; 232 | display: none; 233 | } 234 | 235 | .social-media { 236 | height: 7rem; 237 | display: flex; 238 | justify-self: end; 239 | align-items: center; 240 | } 241 | 242 | .social-media .hamburger-menu { 243 | display: block; 244 | font-size: 2.5rem; 245 | } 246 | } 247 | 248 | @media (max-width: 798px) { 249 | .main-nav { 250 | height: 6rem; 251 | grid-template-columns: 1rem 2fr 1fr 1fr 1rem; 252 | } 253 | 254 | .logo, 255 | .social-media ul { 256 | height: 6rem; 257 | } 258 | 259 | .social-media { 260 | height: 6rem; 261 | display: flex; 262 | justify-self: end; 263 | align-items: center; 264 | } 265 | 266 | .social-media .hamburger-menu { 267 | display: block; 268 | font-size: 2.5rem; 269 | } 270 | } 271 | 272 | @media (max-width: 520px) { 273 | .main-nav { 274 | height: 6rem; 275 | grid-template-columns: 1rem 4fr 1fr 1fr rem; 276 | } 277 | 278 | .logo, 279 | .social-media ul { 280 | height: 6rem; 281 | } 282 | 283 | .logo h2 { 284 | font-size: 2rem; 285 | } 286 | 287 | .social-media { 288 | height: 6rem; 289 | display: flex; 290 | justify-self: end; 291 | align-items: center; 292 | } 293 | 294 | .social-media .hamburger-menu { 295 | display: block; 296 | font-size: 2.5rem; 297 | } 298 | 299 | /* hero section */ 300 | 301 | .hero-section h1 { 302 | font-size: 3.8rem; 303 | } 304 | } 305 | -------------------------------------------------------------------------------- /src/components/common/Header/header.js: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react'; 2 | import { Link } from 'react-router-dom'; 3 | 4 | import { FaFacebookSquare, FaInstagramSquare, FaYoutubeSquare, FaLinkedin} from 'react-icons/fa'; 5 | import { TiThMenuOutline } from 'react-icons/ti'; 6 | 7 | import logoacm from "../../../utils/images/pec_acm_logo.jpg"; 8 | 9 | import './header.css'; 10 | 11 | 12 | const Header = () => { 13 | const [showMediaIcons, setShowMediaIcons] = useState(false); 14 | 15 | return ( 16 | <> 17 | 49 | 50 | 51 | 52 | 53 | ) 54 | } 55 | 56 | 57 | export default Header; 58 | -------------------------------------------------------------------------------- /src/components/common/ScrollTopButton/ScrollTopButton.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect } from 'react'; 2 | import style from './ScrollTopButton.module.css'; 3 | import { HiArrowNarrowUp } from 'react-icons/hi'; 4 | 5 | const ScrollTopButton = () => { 6 | const handleShowHideBtn = () => { 7 | const el = document.querySelector(`.${style['btn-wrap']}`); 8 | let curr = 0; 9 | window.onscroll = () => { 10 | if (window.scrollY >= 200) { 11 | const rect = document.body.getBoundingClientRect().top; 12 | el.classList[rect < curr ? 'add' : 'remove'](style.active); 13 | 14 | curr = rect; 15 | } 16 | }; 17 | }; 18 | 19 | useEffect(() => { 20 | handleShowHideBtn(); 21 | }, []); 22 | 23 | return ( 24 |
25 | 36 |
37 | ); 38 | }; 39 | 40 | export default ScrollTopButton; 41 | -------------------------------------------------------------------------------- /src/components/common/ScrollTopButton/ScrollTopButton.module.css: -------------------------------------------------------------------------------- 1 | .btn-wrap { 2 | position: fixed; 3 | width: 80px; 4 | height: 80px; 5 | right: 0; 6 | bottom: 0; 7 | display: flex; 8 | justify-content: center; 9 | align-items: center; 10 | opacity: 0; 11 | z-index: -9; 12 | transform: translate(-40px, -40px); 13 | transition-delay: 0.3s; 14 | } 15 | 16 | .btn { 17 | background: #050c7a; 18 | width: 0; 19 | height: 0; 20 | border-radius: 50%; 21 | transition: cubic-bezier(.5,-.75,.7,2) 0.3s; 22 | box-shadow: #00000060 0px 5px 15px; 23 | cursor: pointer; 24 | overflow: hidden; 25 | } 26 | 27 | .btn:hover { 28 | background: #03095b; 29 | } 30 | 31 | .icon { 32 | color: white; 33 | margin: auto auto; 34 | font-size: 0; 35 | transition: font-size cubic-bezier(.5,-.75,.7,2) 0.3s; 36 | } 37 | 38 | /* if button is active */ 39 | .btn-wrap.active { 40 | transition-delay: 0s; 41 | opacity: 1; 42 | z-index: 9; 43 | } 44 | 45 | .btn-wrap.active .btn { 46 | width: 70px; 47 | height: 70px; 48 | } 49 | 50 | .btn-wrap.active .icon { 51 | font-size: 2rem; 52 | } 53 | -------------------------------------------------------------------------------- /src/data/blogslist.js: -------------------------------------------------------------------------------- 1 | export const Bloglist = [ 2 | { 3 | key:1, 4 | author: "Admin", 5 | date: "17 August", 6 | title: "Tourist deaths in Costa Rica jeopardize safe dest ination reputation all time.", 7 | tags: "travel, life style, technology, fashion", 8 | content: "Over yielding doesn't so moved green saw meat hath fish he him from given yielding lesser cattle were fruitful lights. Given let have, lesser their made him above gathered dominion sixth. Creeping deep said can't called second. Air created seed heaven sixth created living Over yielding doesn't so moved green saw meat hath fish he him from given yielding lesser cattle were fruitful lights. Given let have, lesser their made him above gathered dominion sixth. Creeping deep said can't called second. Air created seed heaven sixth created living Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas vitae scelerisque enim ligula venenatis dolor. Maecenas nisl est, ultrices nec congue eget, auctor vitae massa. Fusce luctus vestibulum augue ut aliquet. Nunc sagittis dictum nisi, sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum.", 9 | image: "https://images.immediate.co.uk/production/volatile/sites/4/2021/08/mountains-7ddde89.jpg?quality=90&resize=768,574" 10 | }, 11 | { 12 | key:2, 13 | author: "Admin", 14 | date: "17 June", 15 | title: "Tourist deaths in Costa Rica jeopardize safe dest ination reputation all time.", 16 | tags: "travel, life style, technology, fashion", 17 | content: "Over yielding doesn't so moved green saw meat hath fish he him from given yielding lesser cattle were fruitful lights. Given let have, lesser their made him above gathered dominion sixth. Creeping deep said can't called second. Air created seed heaven sixth created living Over yielding doesn't so moved green saw meat hath fish he him from given yielding lesser cattle were fruitful lights. Given let have, lesser their made him above gathered dominion sixth. Creeping deep said can't called second. Air created seed heaven sixth created living Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas vitae scelerisque enim ligula venenatis dolor. Maecenas nisl est, ultrices nec congue eget, auctor vitae massa. Fusce luctus vestibulum augue ut aliquet. Nunc sagittis dictum nisi, sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum.", 18 | image: "https://www.planetware.com/photos-large/AUS/australia-beautiful-places-sydney-harbour.jpg" 19 | }, 20 | { 21 | key:3, 22 | author: "Admin", 23 | date: "17 May", 24 | title: "Tourist deaths in Costa Rica jeopardize safe dest ination reputation all time.", 25 | tags: "travel, life style, technology, fashion", 26 | content: "Over yielding doesn't so moved green saw meat hath fish he him from given yielding lesser cattle were fruitful lights. Given let have, lesser their made him above gathered dominion sixth. Creeping deep said can't called second. Air created seed heaven sixth created living Over yielding doesn't so moved green saw meat hath fish he him from given yielding lesser cattle were fruitful lights. Given let have, lesser their made him above gathered dominion sixth. Creeping deep said can't called second. Air created seed heaven sixth created living Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas vitae scelerisque enim ligula venenatis dolor. Maecenas nisl est, ultrices nec congue eget, auctor vitae massa. Fusce luctus vestibulum augue ut aliquet. Nunc sagittis dictum nisi, sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum.", 27 | image: "https://cdn.theculturetrip.com/wp-content/uploads/2020/08/aoraki-mt-cook-new-zealand-e1597846479229.jpg" 28 | }, 29 | { 30 | key:4, 31 | author: "Admin", 32 | date: "17 April", 33 | title: "Tourist deaths in Costa Rica jeopardize safe dest ination reputation all time.", 34 | tags: "travel, life style, technology, fashion", 35 | content: "Over yielding doesn't so moved green saw meat hath fish he him from given yielding lesser cattle were fruitful lights. Given let have, lesser their made him above gathered dominion sixth. Creeping deep said can't called second. Air created seed heaven sixth created living Over yielding doesn't so moved green saw meat hath fish he him from given yielding lesser cattle were fruitful lights. Given let have, lesser their made him above gathered dominion sixth. Creeping deep said can't called second. Air created seed heaven sixth created living Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas vitae scelerisque enim ligula venenatis dolor. Maecenas nisl est, ultrices nec congue eget, auctor vitae massa. Fusce luctus vestibulum augue ut aliquet. Nunc sagittis dictum nisi, sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum.", 36 | image: "https://www.globalization-partners.com/wp-content/uploads/2014/06/globalpedia-hero-newzealand-1.jpg" 37 | } 38 | ] 39 | 40 | export default Bloglist; -------------------------------------------------------------------------------- /src/data/projectlist.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 0, 4 | "title": "ACM-CSS WEBSITE", 5 | "imgSrc": "pec_acm_logo.jpg", 6 | "description": "This is the official website of PEC ACM student chapter. This is an Open-Source project. Feel free to contribute in it.", 7 | "repo": "https://github.com/PEC-CSS/ACM-PEC-Website" 8 | }, 9 | { 10 | "id": 1, 11 | "title": "Stock Watchlist", 12 | "imgSrc": "https://image.cnbcfm.com/api/v1/image/106895886-1623424433335-gettyimages-1318384825-210464_7.jpeg?v=1623685977&w=1340&h=500", 13 | "description": "An open source project developed by ACM-CSS, where you can keep an eye on how the market changes day-to-day.", 14 | "repo": "https://github.com/PEC-CSS/Stock-Watchlist" 15 | }, 16 | { 17 | "id": 2, 18 | "title": "MovieDroid", 19 | "imgSrc": "https://via.placeholder.com/350", 20 | "description": "MovieDroid is a completely free and open source native android application that maintains an organized and categorized list of a user's favourite movies and TV shows. The app aims at helping a user keep track of the shows they have watched while keeping to up-to-date with the latest releases.", 21 | "repo": "https://github.com/PEC-CSS/MovieDroid" 22 | } 23 | ] 24 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | 4 | import {Provider} from 'react-redux'; 5 | import { createStore, applyMiddleware, compose } from 'redux'; 6 | import reduxThunk from 'redux-thunk'; 7 | 8 | import './index.css'; 9 | 10 | import App from './App'; 11 | import reducers from './utils/apis_redux/reducers'; 12 | 13 | const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ||compose; 14 | const store = createStore(reducers, 15 | composeEnhancers(applyMiddleware(reduxThunk))); 16 | 17 | 18 | ReactDOM.render( 19 | 20 | 21 | , 22 | document.getElementById('root') 23 | ); 24 | -------------------------------------------------------------------------------- /src/sanity/client.js: -------------------------------------------------------------------------------- 1 | import sanityClient from "@sanity/client"; 2 | 3 | export default sanityClient({ 4 | projectId: "9zrn54i9", // find this at manage.sanity.io or in your sanity.json 5 | dataset: "events", // this is from those question during 'sanity init' 6 | useCdn: true, 7 | }); 8 | 9 | // server https://pecacm.sanity.studio/ -------------------------------------------------------------------------------- /src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /src/utils/apis_redux/reducers/index.js: -------------------------------------------------------------------------------- 1 | import { combineReducers } from "redux"; 2 | 3 | export default combineReducers({ 4 | // reducers 5 | }); 6 | -------------------------------------------------------------------------------- /src/utils/helpers/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/src/utils/helpers/index.js -------------------------------------------------------------------------------- /src/utils/helpers/scrollToTop.jsx: -------------------------------------------------------------------------------- 1 | import { useEffect } from "react"; 2 | import { useLocation } from "react-router"; 3 | import React from "react"; 4 | 5 | const ScrollToTop = (props) => { 6 | const location = useLocation(); 7 | useEffect(() => { 8 | window.scrollTo(0, 0); 9 | }, [location]); 10 | 11 | return <>{props.children} 12 | }; 13 | 14 | export default ScrollToTop; 15 | -------------------------------------------------------------------------------- /src/utils/images/Images.js: -------------------------------------------------------------------------------- 1 | // Don't Change Anything Region START --------------------- 2 | 3 | function makeGDriveLinkUsable(s) 4 | { 5 | var new_link = s.slice(0, 25); 6 | new_link += "uc?export=view&id="; 7 | 8 | for(var i = 32; i < s.length; i++) 9 | { 10 | if (s[i] === '/') 11 | break; 12 | new_link += s[i]; 13 | } 14 | 15 | return new_link; 16 | } 17 | 18 | // ------------------------- Don't Change Anything Region ENDS 19 | 20 | 21 | // Paste drive Link and add it in the ProjectImg List 22 | // End name with a comma (Place links within quotes) 23 | // First 4 names will be displayed 24 | const ProjectImg = [ 25 | { 26 | src: 'https://drive.google.com/file/d/1ven0z8524cKmY3cnJLQyjhXuTVCsYD2o/view?usp=sharing', 27 | id: "webapp" 28 | }, 29 | 30 | { 31 | src: 'https://drive.google.com/file/d/1DsND2x20HvDsdY7Ve4PTfyGT-XSYhlPD/view?usp=sharing', 32 | id: "stock" 33 | }, 34 | ]; 35 | 36 | 37 | // Don't Change Anything Region STARTS --------------- 38 | 39 | for(var i = 0; i < ProjectImg.length; i++) 40 | ProjectImg[i].src = makeGDriveLinkUsable(ProjectImg[i].src); 41 | 42 | export default ProjectImg; 43 | 44 | // ------------------ Don't Change Anything Region ENDS -------------------------------------------------------------------------------- /src/utils/images/Nishant_puri.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/src/utils/images/Nishant_puri.JPG -------------------------------------------------------------------------------- /src/utils/images/Student.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/src/utils/images/Student.png -------------------------------------------------------------------------------- /src/utils/images/blog1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/src/utils/images/blog1.jpg -------------------------------------------------------------------------------- /src/utils/images/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/src/utils/images/home.png -------------------------------------------------------------------------------- /src/utils/images/left_point_btn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/utils/images/pec_acm_logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PEC-CSS/ACM-PEC-Website/b10b2b8d0ef310b196f7eac4873b98179fbd2876/src/utils/images/pec_acm_logo.jpg -------------------------------------------------------------------------------- /src/utils/stylesheets/About-Us-body.css: -------------------------------------------------------------------------------- 1 | @import url("https://fonts.googleapis.com/css2?family=Special+Elite&display=swap"); 2 | 3 | 4 | .Body1 { 5 | display: flex; 6 | flex-direction: column; 7 | background-color: black; 8 | } 9 | 10 | .heading { 11 | display: flex; 12 | flex-direction: column; 13 | align-items: center; 14 | gap: 4rem; 15 | width: 100%; 16 | max-height: 90vh; 17 | height: 90vh; 18 | background-color: black; 19 | padding: 10px; 20 | color: rgb(255, 255, 255); 21 | font-weight: 800; 22 | padding-top: 3%; 23 | } 24 | 25 | .mission { 26 | width: fit-content; 27 | height: max-content; 28 | font-size: 3.5rem; 29 | margin-top: 10%; 30 | align-self: center; 31 | font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; 32 | 33 | } 34 | 35 | .statement { 36 | width: 100; 37 | height: max-content; 38 | text-align: center; 39 | font-size: 4.5rem; 40 | align-self: center; 41 | margin-bottom: 2rem; 42 | font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; 43 | 44 | } 45 | 46 | /* <-----------------------------------------------------------------> */ 47 | .arrow { 48 | position: absolute; 49 | top: 85vh; 50 | left: 50%; 51 | transform: translate(-50%, -50%); 52 | } 53 | 54 | .arrow span { 55 | display: block; 56 | width: 30px; 57 | height: 30px; 58 | border-bottom: 5px solid #ffffff; 59 | border-right: 5px solid #ffffff; 60 | transform: rotate(45deg); 61 | margin: -10px; 62 | animation: animate 2s infinite; 63 | } 64 | 65 | .arrow span:nth-child(2) { 66 | animation-delay: -0.2s; 67 | } 68 | 69 | .arrow span:nth-child(3) { 70 | animation-delay: -0.4s; 71 | } 72 | 73 | @keyframes animate { 74 | 0% { 75 | opacity: 0; 76 | transform: rotate(45deg) translate(-20px, -20px); 77 | } 78 | 79 | 50% { 80 | opacity: 1; 81 | } 82 | 83 | 100% { 84 | opacity: 0; 85 | transform: rotate(45deg) translate(20px, 20px); 86 | } 87 | } 88 | 89 | /* <-------------------------------------------------------------------> */ 90 | .history { 91 | margin-left: 5%; 92 | margin-right: 5%; 93 | } 94 | 95 | .textbox1 { 96 | display: grid; 97 | grid-template-columns: 60% 40%; 98 | width: 100%; 99 | padding-left: 1rem; 100 | padding-right: 5rem; 101 | font-size: 1.75rem; 102 | background-color: black; 103 | } 104 | 105 | .heading1 { 106 | /* font-size: 3rem; 107 | padding-left: 5rem; 108 | font-family: Georgia, 'Times New Roman', Times, serif; 109 | font-weight: 600; 110 | width: max-content; 111 | color: rgb(241, 245, 245); */ 112 | font-size: 3rem; 113 | padding-left: 5rem; 114 | padding-top: 5rem; 115 | font-weight: 600; 116 | width: max-content; 117 | color: rgb(241, 245, 245); 118 | line-height: 1.5 !important; 119 | font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif !important; 120 | 121 | } 122 | 123 | .text1 { 124 | max-width: 90%; 125 | padding-left: 5rem; 126 | padding-right: 5rem; 127 | padding-bottom: 5rem; 128 | color: #ffffff; 129 | font-size: 2rem; 130 | text-align: justify; 131 | font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; 132 | 133 | letter-spacing: 0.3px; 134 | margin-top: 0; 135 | margin-bottom: 1rem; 136 | display: block; 137 | margin-block-start: 1em; 138 | margin-block-end: 1em; 139 | margin-inline-start: 0px; 140 | margin-inline-end: 0px; 141 | } 142 | 143 | .i1 { 144 | justify-content: center; 145 | align-items: center; 146 | } 147 | 148 | /* .img1::after { 149 | content: ""; 150 | clear: both; 151 | display: table; 152 | } */ 153 | 154 | /* <---------------------------------------------------------------------> */ 155 | 156 | .textbox2 { 157 | display: grid; 158 | grid-template-columns: 40% 60%; 159 | width: 100%; 160 | padding-left: 5rem; 161 | padding-right: 1rem; 162 | font-size: 1.75rem; 163 | background-color: black; 164 | } 165 | 166 | .heading2 { 167 | /* font-size: 3rem; 168 | padding-left: 1rem; 169 | font-family: Georgia, 'Times New Roman', Times, serif; 170 | font-weight: 500; 171 | width: max-content; 172 | color: rgb(241, 245, 245); */ 173 | font-size: 3rem; 174 | padding-left: 5rem; 175 | padding-top: 5rem; 176 | font-weight: 600; 177 | width: max-content; 178 | color: rgb(241, 245, 245); 179 | line-height: 1.5 !important; 180 | font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif !important; 181 | 182 | } 183 | 184 | .text2 { 185 | max-width: 90%; 186 | /* font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; */ 187 | padding-left: 5rem; 188 | padding-right: 5rem; 189 | padding-bottom: 5rem; 190 | color: #ffffff; 191 | font-size: 2rem; 192 | font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; 193 | 194 | letter-spacing: 0.3px; 195 | margin-top: 0; 196 | margin-bottom: 1rem; 197 | display: block; 198 | margin-block-start: 1em; 199 | margin-block-end: 1em; 200 | margin-inline-start: 0px; 201 | margin-inline-end: 0px; 202 | } 203 | 204 | 205 | 206 | .img2 { 207 | margin-top: 130px; 208 | width: 100%; 209 | max-height: 100%; 210 | float: right; 211 | border-radius: 2%; 212 | } 213 | 214 | /* .img1::after { 215 | content: ""; 216 | clear: both; 217 | display: table; 218 | } */ 219 | 220 | /* <---------------------------------------------------------------> */ 221 | 222 | .textbox3 { 223 | display: grid; 224 | grid-template-columns: 60% 40%; 225 | width: 100%; 226 | padding-left: 0.5rem; 227 | padding-right: 5rem; 228 | font-size: 1.75rem; 229 | background-color: black; 230 | } 231 | 232 | .heading3 { 233 | /* font-size: 3rem; 234 | padding-left: 1rem; 235 | font-family: Georgia, 'Times New Roman', Times, serif; 236 | font-weight: 500; 237 | width: max-content; 238 | color: rgb(241, 245, 245); */ 239 | font-size: 3rem; 240 | padding-left: 5rem; 241 | padding-top: 5rem; 242 | font-weight: 600; 243 | width: max-content; 244 | color: rgb(241, 245, 245); 245 | line-height: 1.5 !important; 246 | font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif !important; 247 | 248 | } 249 | 250 | .text3 { 251 | max-width: 90%; 252 | /* font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; */ 253 | padding-left: 5rem; 254 | padding-right: 5rem; 255 | padding-bottom: 5rem; 256 | color: #ffffff; 257 | font-size: 2rem; 258 | text-align: justify; 259 | font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; 260 | letter-spacing: 0.3px; 261 | margin-top: 0; 262 | margin-bottom: 1rem; 263 | display: block; 264 | margin-block-start: 1em; 265 | margin-block-end: 1em; 266 | margin-inline-start: 0px; 267 | margin-inline-end: 0px; 268 | } 269 | 270 | .img3 { 271 | width: 100%; 272 | max-height: 100%; 273 | float: right; 274 | border-radius: 2%; 275 | margin-top: 130px; 276 | } 277 | 278 | /* .img1::after { 279 | content: ""; 280 | clear: both; 281 | display: table; 282 | } */ 283 | 284 | /* <---------------------------------------------------------------> */ 285 | .Body2 { 286 | display: flex; 287 | flex-direction: column; 288 | } 289 | 290 | .box1 { 291 | display: flex; 292 | width: 100%; 293 | height: 15rem; 294 | align-items: center; 295 | justify-content: center; 296 | font-size: 4rem; 297 | background-color: white; 298 | font-weight: 600; 299 | line-height: 1.5 !important; 300 | font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif !important; 301 | 302 | } 303 | 304 | .box2 { 305 | display: flex; 306 | width: 100%; 307 | height: 55rem; 308 | padding-left: 0.5rem; 309 | padding-right: 0.5rem; 310 | font-size: 1.75rem; 311 | background-color: #2a2a72; 312 | background-image: linear-gradient(315deg, #2a2a72 0%, #009ffd 74%); 313 | } 314 | 315 | .box3 { 316 | display: flex; 317 | width: 100%; 318 | height: 55rem; 319 | padding-left: 0.5rem; 320 | padding-right: 0.5rem; 321 | font-size: 1.75rem; 322 | background-color: white; 323 | align-items: center; 324 | justify-content: center; 325 | } 326 | 327 | .left { 328 | width: 40%; 329 | display: flex; 330 | align-items: center; 331 | justify-content: flex-end; 332 | } 333 | 334 | .img4 { 335 | height: 27rem; 336 | width: 27rem; 337 | border-radius: 100%; 338 | } 339 | 340 | .img5, 341 | .img6, 342 | .img7, 343 | .img8 { 344 | height: 40rem; 345 | width: 20%; 346 | padding: 2rem; 347 | } 348 | 349 | .right { 350 | width: 60%; 351 | display: flex; 352 | flex-direction: column; 353 | justify-content: center; 354 | align-items: center; 355 | } 356 | 357 | .heading4 { 358 | font-size: 3rem; 359 | padding-left: 5rem; 360 | padding-top: 5rem; 361 | font-weight: 600; 362 | width: 100%; 363 | color: rgb(241, 245, 245); 364 | line-height: 1.5 !important; 365 | font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif !important; 366 | } 367 | 368 | .text4 { 369 | width: 100%; 370 | /* font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; */ 371 | padding-left: 5rem; 372 | padding-right: 20rem; 373 | color: #ffffff; 374 | font-size: 2rem; 375 | font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif !important; 376 | 377 | letter-spacing: 0.3px; 378 | margin-bottom: 0; 379 | margin-top: 0; 380 | display: block; 381 | margin-block-start: 1em; 382 | margin-block-end: 1em; 383 | margin-inline-start: 0px; 384 | margin-inline-end: 0px; 385 | } 386 | 387 | .btn1 { 388 | padding: 1.3em 2em; 389 | font-size: 14px; 390 | text-transform: uppercase; 391 | letter-spacing: 2.5px; 392 | font-weight: 500; 393 | color: #000; 394 | background-color: #aee1f9; 395 | background-image: linear-gradient(315deg, #aee1f9 0%, #f6ebe6 74%); 396 | 397 | border: none; 398 | border-radius: 45px; 399 | box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); 400 | transition: all 0.3s ease 0s; 401 | cursor: pointer; 402 | outline: none; 403 | width: 30rem; 404 | } 405 | 406 | .btn1:hover { 407 | background-color: rgb(8, 170, 170); 408 | box-shadow: 0px 15px 20px rgba(46, 229, 157, 0.4); 409 | color: #fff; 410 | transform: translateY(-7px); 411 | } 412 | 413 | .btn1:active { 414 | transform: translateY(-1px); 415 | } 416 | 417 | .btn1.selec { 418 | background-color: #f5bfa6; 419 | background-image: none; 420 | } 421 | 422 | .smallbox { 423 | /* border:1px solid black; */ 424 | width: 130rem; 425 | height: 50rem; 426 | } 427 | 428 | li { 429 | padding: 2rem; 430 | font-size: 2rem; 431 | font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; 432 | 433 | letter-spacing: 0.3px; 434 | } 435 | 436 | .col1 { 437 | display: flex; 438 | align-items: center; 439 | justify-content: center; 440 | width: 50%; 441 | } 442 | 443 | .ebs { 444 | display: flex; 445 | align-items: center; 446 | justify-content: center; 447 | } 448 | 449 | .btn-div { 450 | display: flex; 451 | justify-content: center; 452 | } 453 | 454 | .flip-card-inner { 455 | position: relative; 456 | width: 100%; 457 | height: 100%; 458 | text-align: center; 459 | transition: transform 0.8s; 460 | transform-style: preserve-3d; 461 | } 462 | 463 | .flip-card { 464 | margin-top: 2%; 465 | perspective: 1000px; 466 | /* Remove this if you don't want the 3D effect */ 467 | border-radius: 25px; 468 | background-color: #8ec5fc; 469 | background-image: linear-gradient(62deg, #8ec5fc 0%, #e0c3fc 100%); 470 | } 471 | 472 | .rotate { 473 | transform: rotateX(180deg); 474 | } 475 | 476 | .img1 { 477 | width: 100%; 478 | max-height: 100%; 479 | float: right; 480 | border-radius: 2%; 481 | margin-top: 130px; 482 | } 483 | 484 | .slide-left { 485 | display: flex; 486 | align-items: flex-start; 487 | justify-content: center; 488 | width: 100%; 489 | } 490 | 491 | .slide-right { 492 | width: 100%; 493 | overflow: hidden; 494 | } 495 | 496 | .slide-right p { 497 | animation: 2s slide-right; 498 | } 499 | 500 | .slide-right img { 501 | animation: 2s slide-right; 502 | } 503 | 504 | @keyframes slide-right { 505 | from { 506 | margin-left: -500px; 507 | } 508 | 509 | to { 510 | margin-left: 0%; 511 | } 512 | } 513 | 514 | .slide-left img { 515 | animation: 2s slide-left; 516 | } 517 | 518 | .slide-left p { 519 | animation: 2s slide-left; 520 | } 521 | 522 | @keyframes slide-left { 523 | from { 524 | margin-right: -500px; 525 | } 526 | 527 | to { 528 | margin-right: 0%; 529 | } 530 | } -------------------------------------------------------------------------------- /src/utils/stylesheets/BlogCard.css: -------------------------------------------------------------------------------- 1 | .blog-card-root{ 2 | width: 320px; 3 | height: 520px; 4 | margin: 10px 20px; 5 | padding: 15px; 6 | display: flex; 7 | flex-direction: column; 8 | border-radius: 10px; 9 | transition: transform 0.2s; 10 | box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 2px, rgba(0, 0, 0, 0.07) 0px 2px 4px, rgba(0, 0, 0, 0.07) 0px 4px 8px, rgba(0, 0, 0, 0.07) 0px 8px 16px, rgba(0, 0, 0, 0.07) 0px 16px 32px, rgba(0, 0, 0, 0.07) 0px 32px 64px; 11 | } 12 | 13 | .blog-card-content{ 14 | padding: 10px; 15 | flex-basis: 70%; 16 | display: flex; 17 | flex-direction: column; 18 | } 19 | 20 | .blog-card-img{ 21 | width: 290px; 22 | flex-basis: 30%; 23 | box-shadow: rgba(0, 0, 0, 0.04) 0px 3px 5px; 24 | } 25 | 26 | .blog-card-title{ 27 | font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; 28 | font-weight: bold; 29 | text-decoration: none; 30 | transition: all 0.3s ease-in-out; 31 | font-size: 18px; 32 | margin: 10px 0px; 33 | background-color: none; 34 | } 35 | 36 | .blog-card-description{ 37 | font-size: 16px; 38 | line-height: 30px; 39 | font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; 40 | color: rgb(148, 148, 148); 41 | } 42 | 43 | .blog-card-hr{ 44 | margin-top: auto; 45 | } 46 | 47 | .blog-card-date-content{ 48 | display: flex; 49 | flex-direction: row; 50 | align-items: center; 51 | margin: 10px 0px; 52 | } 53 | .calendar-img{ 54 | height: 20px; 55 | width: 20px; 56 | } 57 | 58 | .blog-card-date{ 59 | font-size: 14px; 60 | margin: 0px 10px; 61 | } 62 | 63 | @media screen and (max-width:1057px ) { 64 | .blog-card-root{ 65 | width: 100%; 66 | height: auto; 67 | min-height: 400px; 68 | } 69 | 70 | .blog-card-img{ 71 | width: 100%; 72 | height: auto; 73 | } 74 | } -------------------------------------------------------------------------------- /src/utils/stylesheets/Events.css: -------------------------------------------------------------------------------- 1 | h1{ 2 | display: block; 3 | } 4 | 5 | .event-wrapper{ 6 | background-color: skyblue; 7 | max-height: 90vh; 8 | height: 90vh; 9 | display: flex; 10 | justify-content: center; 11 | align-items: center; 12 | -webkit-box-orient: vertical; 13 | flex-direction: column; 14 | } 15 | .center{ 16 | align-items: center; 17 | /* align-self: center; */ 18 | z-index: 20; 19 | margin-left: 12.5%; 20 | 21 | } 22 | 23 | .title{ 24 | text-align: center; 25 | color: #fff; 26 | font-weight: 600; 27 | letter-spacing: 1px; 28 | font-size: 13vw; 29 | margin-bottom: 1px; 30 | } 31 | 32 | .events-section{ 33 | background-color: #f5f5f5; 34 | padding: 80px 0; 35 | display: block; 36 | } 37 | 38 | .event-container{ 39 | display: flex; 40 | flex-direction: column; 41 | align-items: center; 42 | width: 100%; 43 | padding-right: 30px; 44 | padding-left: 30px; 45 | 46 | } 47 | 48 | .event-card{ 49 | /* width: 80vw; */ 50 | display: block; 51 | width: 72vw; 52 | border-radius: 5px; 53 | overflow: hidden; 54 | box-shadow: 0 4px 8px rgb(31,31,31,0.2); 55 | margin-bottom: 50px; 56 | 57 | 58 | } 59 | 60 | .card-container{ 61 | display: flex !important; 62 | align-items: center !important; 63 | width: 100%; 64 | /* height: 100%; */ 65 | /* flex-wrap: wrap; */ 66 | margin-right: -15px; 67 | box-sizing: border-box; 68 | } 69 | 70 | .card-img{ 71 | padding-left: 0; 72 | padding-right: 0; 73 | flex: 0 0 40%; 74 | position: relative; 75 | width: 487px; 76 | max-width: 50%; 77 | display: block; 78 | overflow: hidden; 79 | position: relative; 80 | height: 487px; 81 | } 82 | 83 | .img-fluid{ 84 | max-width: 100%; 85 | width: 100%; 86 | height: 100%; 87 | } 88 | 89 | .card-content{ 90 | text-align: left; 91 | justify-content: flex-start; 92 | display: flex; 93 | flex-direction: column; 94 | padding: 20px 45px; 95 | width: 100%; 96 | } 97 | 98 | .event-date{ 99 | margin-bottom: 15px; 100 | font-size: 25px; 101 | word-spacing: -2.5px; 102 | font-weight: 500; 103 | align-items: center; 104 | color: #666; 105 | display: flex; 106 | } 107 | 108 | .timer-icon{ 109 | font-size: 20px; 110 | margin-right: 8px; 111 | } 112 | 113 | .event-heading{ 114 | font-size: 2.25vw; 115 | margin-bottom: 1.5vw; 116 | font-weight: bold; 117 | /* white-space: pre-line; */ 118 | line-height: 100%; 119 | } 120 | 121 | .event-details{ 122 | font-size: 1.5vw; 123 | overflow: hidden; 124 | } 125 | 126 | .date{ 127 | visibility: visible; 128 | } 129 | 130 | 131 | /* RESPONSIVE DESIGN FOR MOBILE */ 132 | 133 | /* MOBILE RESOLUTIONS such as IPHONE 5, SE 2016 */ 134 | 135 | /****** PORTRAIT *************/ 136 | @media only screen 137 | and (min-width : 300px) 138 | and (max-width : 358px) 139 | and (orientation: portrait) { 140 | 141 | .event-container { 142 | flex-direction: column; 143 | width: 100%; 144 | padding: 0; 145 | } 146 | .event-card { 147 | width: 100vw; 148 | } 149 | .card-img { 150 | max-width: none; 151 | flex: 0 0 60%; 152 | } 153 | .card-content { 154 | padding: 5px 15px; 155 | } 156 | .event-date { 157 | font-size: 14px; 158 | } 159 | .event-heading { 160 | font-size: 12px; 161 | } 162 | .event-details { 163 | font-size: 10px; 164 | } 165 | } 166 | /* MOBILE RESOLUTIONS such as IPHONE 13Pro until mid range */ 167 | 168 | @media only screen 169 | and (min-width : 359px) 170 | and (max-width : 480px) 171 | and (orientation: portrait) { 172 | .event-container { 173 | flex-direction: column; 174 | width: 100%; 175 | padding: 0; 176 | } 177 | .event-card { 178 | width: 100vw; 179 | } 180 | .card-img { 181 | max-width: none; 182 | flex: 0 0 60%; 183 | } 184 | .card-content { 185 | padding: 5px 15px; 186 | } 187 | .event-date { 188 | font-size: 18px; 189 | } 190 | .event-heading { 191 | font-size: 16px; 192 | } 193 | .event-details { 194 | font-size: 14px; 195 | } 196 | 197 | } 198 | 199 | /* RESPONSIVE DESIGN FOR TABLES */ 200 | /* TABLES RESOLUTIONS Ipad mini, Air4, Ipad Pro 11 */ 201 | 202 | /****** PORTRAIT *************/ 203 | @media only screen 204 | and (min-width : 569px) 205 | and (max-width : 834px) 206 | and (orientation: portrait) { 207 | 208 | .event-container { 209 | flex-direction: column; 210 | width: 100%; 211 | padding: 0; 212 | } 213 | .event-card { 214 | width: 100vw; 215 | } 216 | .card-img { 217 | max-width: none; 218 | flex: 0 0 70%; 219 | } 220 | .card-content { 221 | padding: 5px 15px; 222 | } 223 | .event-date { 224 | font-size: 25px; 225 | } 226 | .event-heading { 227 | font-size: 20px; 228 | } 229 | .event-details { 230 | font-size: 18px; 231 | } 232 | 233 | } 234 | 235 | -------------------------------------------------------------------------------- /src/utils/stylesheets/GroupCard.css: -------------------------------------------------------------------------------- 1 | .group-card-root { 2 | display: flex; 3 | flex-direction: row; 4 | flex-basis: 50%; 5 | margin: 10px 0px; 6 | } 7 | 8 | .group-card-title { 9 | font-weight: bold; 10 | font-size: 18px; 11 | font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; 12 | } 13 | 14 | .group-card-description { 15 | font-size: 16px; 16 | font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; 17 | color: rgb(148, 148, 148); 18 | } 19 | 20 | .group-card-image { 21 | height: 56px; 22 | width: 56px; 23 | margin: 0px 15px; 24 | padding: 5px; 25 | border-radius: 28px; 26 | background-color: rgb(168, 206, 221); 27 | } 28 | 29 | @media screen and (max-width:560px) { 30 | .group-card-root { 31 | flex-basis: 100%; 32 | } 33 | } -------------------------------------------------------------------------------- /src/utils/stylesheets/blogs.css: -------------------------------------------------------------------------------- 1 | .blogs-section { 2 | background-color: whitesmoke; 3 | font-size: larger; 4 | padding: 10.5rem; 5 | display: flex; 6 | flex-direction: column; 7 | align-items: center; 8 | justify-items: center; 9 | } 10 | 11 | .blog-container { 12 | background-color: white; 13 | /* border-top-right-radius: 5%; */ 14 | border-top-left-radius: 5%; 15 | margin-bottom: 10rem; 16 | } 17 | 18 | .blog-img { 19 | width: 100%; 20 | max-height: 80vh; 21 | border-top-left-radius: 5%; 22 | border-top-right-radius: 5%; 23 | } 24 | 25 | .blog-info { 26 | position: relative; 27 | display: flex; 28 | align-items: center; 29 | justify-content: center; 30 | background-color: white; 31 | width: max-content; 32 | margin-top: -6rem; 33 | padding-right: 2rem; 34 | border-top-right-radius: 4%; 35 | font-size: larger; 36 | } 37 | 38 | .blog-admin { 39 | padding: 2rem; 40 | display: flex; 41 | align-items: center; 42 | gap: 0.5rem; 43 | } 44 | 45 | .blog-date { 46 | padding: 2rem; 47 | display: flex; 48 | align-items: center; 49 | gap: 0.5rem; 50 | } 51 | 52 | .content-wrapper { 53 | margin: 2rem; 54 | padding: 2rem; 55 | } 56 | 57 | .blog-h1 { 58 | font-size: xx-large; 59 | margin: 10px 0px; 60 | } 61 | 62 | .blog-tags { 63 | font-size: medium; 64 | font-weight: bold; 65 | margin: 15px 0 10px 0; 66 | } 67 | 68 | .blog-content { 69 | padding-right: 4rem; 70 | } 71 | 72 | .read-or-hide { 73 | color: rgb(255, 118, 118); 74 | cursor: pointer; 75 | } 76 | -------------------------------------------------------------------------------- /src/utils/stylesheets/footer.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@100;200;300;400;500;600;700;800;900&display=swap'); 2 | 3 | .footer-main{ 4 | display: flex; 5 | justify-content: space-between; 6 | color: white; 7 | background-color: black; 8 | font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif; 9 | } 10 | 11 | .footer-i{ 12 | color: red; 13 | } 14 | 15 | .footer-left, .footer-right, .footer-center{ 16 | width: 33.33vw; 17 | border: 1px solid black; 18 | padding: 35px; 19 | } 20 | 21 | .footer-hr{ 22 | border: 0.3px solid #4c4c4c; 23 | margin: 15px 0px; 24 | } 25 | 26 | .lfooter-content, .rfooter-content{ 27 | line-height: 1.7; 28 | padding-bottom: 17px; 29 | font-family: 'Montserrat', sans-serif; 30 | color: #a7a4a4; 31 | font-size: 14px; 32 | 33 | } 34 | 35 | .contact-footer{ 36 | display: flex; 37 | padding: 10px 0px; 38 | align-items: center; 39 | } 40 | 41 | .contact-text-footer{ 42 | padding-left: 20px ; 43 | font-family: 'Montserrat', sans-serif; 44 | } 45 | 46 | 47 | .footer-inputbox{ 48 | height: 45px; 49 | display: flex; 50 | align-items: center; 51 | } 52 | .footer-input{ 53 | height: 100%; 54 | width: 80%; 55 | outline: none; 56 | border-top-left-radius: 5px; 57 | border-bottom-left-radius: 5px; 58 | border: none; 59 | padding: 1rem 2rem; 60 | } 61 | 62 | 63 | .footer-input-btn{ 64 | height: 100%; 65 | background-color: red; 66 | 67 | width: 20%; 68 | justify-content: center; 69 | align-items: center; 70 | display: flex; 71 | border-top-right-radius: 5px; 72 | border-bottom-right-radius: 5px; 73 | font-family: 'Montserrat', sans-serif; 74 | } 75 | 76 | .cfooter-content{ 77 | display: flex; 78 | flex-direction: column; 79 | align-items: center; 80 | } 81 | 82 | .cfooter-post{ 83 | width: 100%; 84 | display: flex; 85 | align-items: center; 86 | padding: 0px 18px; 87 | } 88 | 89 | .cfooter-text{ 90 | padding: 22px; 91 | } 92 | 93 | .cfooter-text-title,.cfooter-text-info{ 94 | font-family: 'Montserrat', sans-serif; 95 | padding: 3px 0px; 96 | } 97 | 98 | .cfooter-text-info{ 99 | color: #a7a4a4; 100 | } 101 | 102 | .footer-input-btn:hover{ 103 | cursor: pointer; 104 | } 105 | 106 | .img-footer{ 107 | height: 65px; 108 | width: 90px; 109 | } 110 | 111 | .cfooter-post:hover{ 112 | cursor: pointer; 113 | } 114 | 115 | @media screen and (max-width: 1023px) { 116 | 117 | .cfooter-post{ 118 | margin: 5px; 119 | } 120 | .cfooter-text, .cfooter-post{ 121 | padding: 0px 6px 0px 10px; 122 | } 123 | } 124 | 125 | @media screen and (max-width: 850px) { 126 | 127 | .footer-main{ 128 | flex-direction: column; 129 | } 130 | 131 | .footer-left, .footer-right, .footer-center{ 132 | width: 100%; 133 | } 134 | } -------------------------------------------------------------------------------- /src/utils/stylesheets/home.css: -------------------------------------------------------------------------------- 1 | .home { 2 | background-color: snow; 3 | height: 400px; 4 | display: flex; 5 | justify-content: center; 6 | align-items: center; 7 | } 8 | 9 | .home-content { 10 | font-size: 100px; 11 | margin-top: 12vh; 12 | } 13 | 14 | .home-wrapper { 15 | background-image: url("../images/home.png"); 16 | background-repeat: no-repeat; 17 | background-position: center center; 18 | background-size: cover; 19 | padding: 20rem 8rem; 20 | max-height: 80vh; 21 | display: flex; 22 | justify-content: center; 23 | align-items: center; 24 | -webkit-box-orient: vertical; 25 | flex-direction: column; 26 | } 27 | 28 | @keyframes float { 29 | 0% { 30 | /* box-shadow: 0 5px 15px 0px rgba(0, 0, 0, 0.6); */ 31 | transform: translate(0px); 32 | } 33 | 34 | 50% { 35 | /* box-shadow: 0 25px 15px 0px rgba(0, 0, 0, 0.2); */ 36 | transform: translate(15px, -20px); 37 | } 38 | 39 | 100% { 40 | /* box-shadow: 0 5px 15px 0px rgba(0, 0, 0, 0.6); */ 41 | transform: translate(0px); 42 | } 43 | } 44 | 45 | @keyframes float-rev { 46 | 0% { 47 | /* box-shadow: 0 5px 15px 0px rgba(0, 0, 0, 0.6); */ 48 | transform: translate(0px); 49 | } 50 | 51 | 50% { 52 | /* box-shadow: 0 25px 15px 0px rgba(0, 0, 0, 0.2); */ 53 | transform: translate(20px, 10px); 54 | } 55 | 56 | 100% { 57 | /* box-shadow: 0 5px 15px 0px rgba(0, 0, 0, 0.6); */ 58 | transform: translate(0px); 59 | } 60 | } 61 | 62 | .home-imgs { 63 | transform: translatey(0px); 64 | animation: float 4s ease-in-out infinite; 65 | } 66 | 67 | .home-imgs-2 { 68 | transform: translatex(0px); 69 | animation: float-rev 3s ease-in-out infinite; 70 | } 71 | 72 | .h1-title { 73 | text-align: center; 74 | color: #fff; 75 | font-weight: 700; 76 | letter-spacing: 1px; 77 | font-size: 9vh; 78 | margin-bottom: 1px; 79 | line-height: 8vh; 80 | } 81 | 82 | .home-wrapper-description { 83 | text-align: center; 84 | font-size: 2vw; 85 | padding: 40px 0; 86 | display: block; 87 | line-height: 7vh; 88 | } 89 | 90 | .home-content-title { 91 | margin-top: 50vh; 92 | text-align: center; 93 | padding-top: 2vh; 94 | font-size: 4rem; 95 | } 96 | 97 | .home-content-br { 98 | width: 7rem; 99 | margin: 0 auto; 100 | } 101 | 102 | .content-items { 103 | display: grid; 104 | padding: 0 2rem; 105 | grid-template-columns: 1fr 1fr 1fr; 106 | width: 100%; 107 | } 108 | 109 | .content-item { 110 | display: flex; 111 | flex-direction: row; 112 | padding: 5%; 113 | margin: 0 auto; 114 | 115 | } 116 | 117 | .content-item-number { 118 | color: #3f2b96; 119 | font-size: 6rem; 120 | font-weight: 800; 121 | margin-right: 0.5rem; 122 | 123 | } 124 | 125 | .content-item-para-title { 126 | width: 80%; 127 | height: 100%; 128 | 129 | 130 | } 131 | 132 | .content-item-title { 133 | font-size: 2rem; 134 | font-weight: 600; 135 | } 136 | 137 | .content-item-para { 138 | font-size: 1.5rem; 139 | 140 | } 141 | 142 | .c { 143 | display: flex; 144 | flex-direction: row; 145 | background-color: #fafafad9; 146 | box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px; 147 | } 148 | 149 | 150 | .groups-content { 151 | flex-basis: 50%; 152 | padding: 20px; 153 | } 154 | 155 | .groups-list { 156 | margin: 20px 0px; 157 | display: flex; 158 | flex-direction: row; 159 | flex-wrap: wrap; 160 | } 161 | 162 | .d { 163 | margin-top: 0; 164 | display: flex; 165 | flex-direction: row; 166 | background-color: #fafafad9; 167 | box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px; 168 | } 169 | 170 | .whowe-content { 171 | padding: 20px; 172 | flex-basis: 50%; 173 | } 174 | 175 | .whowe-info { 176 | font-size: 17px; 177 | ily: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-font-famserif; 178 | color: rgb(148, 148, 148); 179 | margin: 15px; 180 | line-height: 2.8rem; 181 | } 182 | 183 | .parallax-image { 184 | flex-basis: 50%; 185 | background-repeat: no-repeat; 186 | background-attachment: fixed; 187 | background-size: contain; 188 | min-height: 300px; 189 | } 190 | 191 | .groups-image { 192 | background-image: url("https://imageio.forbes.com/specials-images/imageserve/5f2da49df99ed4ddb7c00b9c/Software-developer-holds-a-pen-pointing-to-a-computer-screen--analyzing-the-code-/960x0.jpg?fit=bounds&format=jpg&width=960"); 193 | background-position: right; 194 | } 195 | 196 | .whowe-image { 197 | background-image: url('https://pm-powerconsulting.com/wp-content/uploads/2018/04/agileteam.jpg'); 198 | background-position: left; 199 | } 200 | 201 | .whowe-buttons { 202 | display: flex; 203 | flex-direction: row; 204 | padding: 20px; 205 | align-items: center; 206 | } 207 | 208 | .whowe-button { 209 | text-decoration: none; 210 | text-align: center; 211 | font-size: 12px; 212 | border: 2px solid; 213 | padding: 12px; 214 | border-radius: 5px; 215 | letter-spacing: 2px; 216 | font-weight: bold; 217 | text-transform: uppercase; 218 | font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; 219 | box-shadow: rgba(0, 0, 0, 0.3) 0px 5px 15px; 220 | transition: all 0.3s ease-in-out; 221 | } 222 | 223 | .whowe-team { 224 | margin-left: 20px; 225 | border-color: rgb(5, 12, 122); 226 | background-color: rgb(5, 12, 122); 227 | color: white; 228 | } 229 | 230 | .whowe-team:hover { 231 | background-color: rgb(3, 9, 91); 232 | color: white; 233 | border-color: rgb(3, 9, 91); 234 | } 235 | 236 | .f { 237 | margin-bottom: 40px; 238 | } 239 | 240 | .blogs-list { 241 | display: flex; 242 | flex-direction: row; 243 | align-items: center; 244 | justify-content: center; 245 | margin: 10px; 246 | } 247 | 248 | @media screen and (max-width: 768px) { 249 | .content-items { 250 | display: flex; 251 | flex-direction: column; 252 | } 253 | 254 | .content-item-para-title { 255 | width: 100%; 256 | height: 100%; 257 | margin: 0 auto; 258 | padding: 5%; 259 | } 260 | 261 | 262 | } 263 | 264 | @media screen and (max-width:1002px) { 265 | .c { 266 | flex-direction: column; 267 | } 268 | 269 | .d { 270 | flex-direction: column-reverse; 271 | } 272 | 273 | .groups-content { 274 | flex-basis: 100%; 275 | } 276 | 277 | .whowe-content { 278 | flex-basis: 100%; 279 | } 280 | 281 | .whowe-buttons { 282 | justify-content: center; 283 | } 284 | 285 | .parallax-image { 286 | background-position: center; 287 | background-size: cover; 288 | flex-basis: 100%; 289 | } 290 | 291 | .content-item { 292 | padding: 10px; 293 | } 294 | } 295 | 296 | @media screen and (max-width:1057px) { 297 | .blogs-list { 298 | flex-direction: column; 299 | } 300 | } -------------------------------------------------------------------------------- /src/utils/stylesheets/project.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@100;200;300;400;500;600;700;800;900&display=swap'); 2 | 3 | 4 | .project-card-h2{ 5 | font-size: 50px; 6 | margin-left: 10px; 7 | font-weight: boldest; 8 | } 9 | .project-card-text{ 10 | font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif; 11 | 12 | font-size: 17px; 13 | margin-left: 10px; 14 | } 15 | .project-card-h4{ 16 | font-size: 20px; 17 | margin-left: 10px; 18 | } 19 | 20 | .project-card-link{ 21 | padding-left: 6px; 22 | font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif; 23 | } 24 | .project-card-link:hover{ 25 | text-decoration: underline; 26 | } 27 | .project-card-desc{ 28 | padding: 30px; 29 | } 30 | .project-tile{ 31 | background-color: lightblue; 32 | display: inline-flex; 33 | margin: 30px 50px 30px 50px; 34 | align-items: center; 35 | width: 75%; 36 | margin-left: 12.5%; 37 | display: flex; 38 | z-index: 10; 39 | font-family: Arial, Helvetica, sans-serif; 40 | filter: drop-shadow(0 0 .2rem black); 41 | backdrop-filter: blur(10px); 42 | } 43 | 44 | .project-tile:hover{ 45 | filter: drop-shadow(0 0 1.3rem black); 46 | transform: scale(1.05); 47 | } 48 | @media screen and (max-width: 1024px) { 49 | .project-tile{ 50 | display: flow-root; 51 | } 52 | } 53 | @media screen and (max-width: 510px) { 54 | .project-project-card-img{ 55 | width: 250px; 56 | height: 250px; 57 | } 58 | .project-tile{ 59 | margin: auto auto 20px auto; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/utils/stylesheets/projectCard.css: -------------------------------------------------------------------------------- 1 | 2 | .card-content{ 3 | position:relative; 4 | overflow:hidden; 5 | } 6 | .more-btn__wrapper{ 7 | position:absolute; 8 | bottom:0; 9 | right:0; 10 | width:100%; 11 | padding:1.5rem; 12 | text-align:right; 13 | } 14 | .more-btn{ 15 | font-weight:bolder; 16 | font-size:1rem; 17 | color:#888; 18 | } 19 | .project-card-img{ 20 | width:300px; 21 | height:230px; 22 | } 23 | .projectdiv{ 24 | display:flex; 25 | justify-content:center; 26 | padding:2rem; 27 | } 28 | -------------------------------------------------------------------------------- /src/utils/stylesheets/slider.css: -------------------------------------------------------------------------------- 1 | /* Slide Show*/ 2 | 3 | .slide-show { 4 | margin: 5px auto; 5 | overflow: hidden; 6 | max-width: 85vw; 7 | } 8 | 9 | /* Slide (Contain all items of announcement) */ 10 | 11 | .slide { 12 | display: inline-block; 13 | position: relative; 14 | height: 400px; 15 | width: 100%; 16 | margin: 15px 0px 5px 0px; 17 | } 18 | 19 | .slide-img 20 | { 21 | height:400px; 22 | width: 90vw; 23 | } 24 | 25 | /* More info button */ 26 | .more-info-btn { 27 | background-color: #fff; 28 | color: #00B4D8; 29 | border: none; 30 | cursor: pointer; 31 | padding: 12px 27px; 32 | 33 | font-weight: bold; 34 | } 35 | 36 | .more-info-btn-container { 37 | display: flex; 38 | position: relative; 39 | 40 | margin: 20px 0 20px 80vw; 41 | 42 | background: #fff; 43 | width: 110px; 44 | 45 | border: 6px solid #4ac0ee; 46 | color: #4ac0ee; 47 | font-weight: bold; 48 | font-size: large; 49 | text-transform: uppercase; 50 | text-align: center; 51 | 52 | transition: all 0.2s 0.2s ease-out; 53 | } 54 | 55 | .more-info-btn-container::after, 56 | .more-info-btn-container::before { 57 | position: absolute; 58 | width: 100%; 59 | max-width: 100%; 60 | top: 100%; 61 | left: -15px; 62 | bottom: -10px; 63 | content: ""; 64 | z-index: 1; 65 | transition: all 0.2s ease-out 0.2s; 66 | } 67 | 68 | .more-info-btn-container::before { 69 | background: #4ac0ee; 70 | top: 10px; 71 | height: 100%; 72 | width: 15px; 73 | } 74 | 75 | .more-info-btn-container::after { 76 | width: 100%; 77 | background: #4ac0ee; 78 | right: 0px; 79 | height: 15px; 80 | } 81 | 82 | /* Hovering effect on more button */ 83 | .more-info-btn:hover{ 84 | background-color: #4ac0ee; 85 | color: #fff; 86 | } 87 | 88 | .more-info-btn-container:hover { 89 | background: #4ac0ee; 90 | color: #fff; 91 | } 92 | 93 | .more-info-btn-container:hover:after, 94 | .more-info-btn-container:hover:before { 95 | top: 100%; 96 | left: -15px; 97 | bottom: 0px; 98 | } 99 | 100 | .more-info-btn-container:hover:before { 101 | top: 0px; 102 | left: 0px; 103 | width: 0px; 104 | } 105 | 106 | .more-info-btn-container:hover:after { 107 | right: 0px; 108 | left: 0px; 109 | height: 0px; 110 | } 111 | 112 | /* slider */ 113 | 114 | .slide-show-slider { 115 | white-space: nowrap; 116 | transition: ease 2000ms; 117 | } 118 | 119 | 120 | /* Button (Dots) */ 121 | 122 | .slide-show-dots { 123 | display: flex; 124 | text-align: center; 125 | justify-content: center; 126 | margin: 20px 0; 127 | } 128 | 129 | .slide-show-dot { 130 | display: inline-block; 131 | height: 8px; 132 | width: 8px; 133 | border-radius: 50%; 134 | cursor: pointer; 135 | margin: 15px 9px 7px 0px; 136 | background-color: #CAF0F8; 137 | } 138 | 139 | .slide-show-dot:hover{ 140 | background-color: #90E0EF; 141 | } 142 | 143 | .slide-show-dot.active { 144 | transform: scale3d(1.6,1.6,1.6); 145 | transition: ease-out 100ms; 146 | background-color: white; 147 | border: 1.5px solid #00B4D8; 148 | } 149 | 150 | /* Numbers Showing Count of slide */ 151 | .slide-num 152 | { 153 | font-size: x-large; 154 | font-weight: 600; 155 | align-self: center; 156 | justify-content: center; 157 | margin-left: 40px; 158 | } 159 | 160 | /* Buttons (Arrows) */ 161 | 162 | .btn-prev-slide, 163 | .btn-next-slide { 164 | height: 30px; 165 | width: 30px; 166 | cursor: pointer; 167 | margin-left: auto; 168 | margin-right:40px; 169 | border-radius: 50%; 170 | 171 | /* 3D View */ 172 | box-shadow: 0px 14px 11px -10px rgb(0 0 0 / 50%); 173 | } 174 | 175 | .btn-next-slide 176 | { 177 | margin-left: 40px; 178 | box-shadow: 0px -14px 11px -10px rgb(0 0 0 / 50%); 179 | transform: rotate(180deg); 180 | } 181 | 182 | .btn-next-slide:hover, 183 | .btn-prev-slide:hover { 184 | box-shadow: 0px -0 11px -10px rgb(0 0 0 / 50%); 185 | background-color: #e2e2e2; 186 | } 187 | 188 | /* Responsiveness - (Make Image width 100vw) and Hide Numberbers below it */ 189 | 190 | @media (max-width: 750px) { 191 | .btn-prev-slide{ 192 | margin-left: 30px; 193 | margin-right: 30px; 194 | } 195 | 196 | .slide-num{ 197 | margin: 0px 40px 0px 0px; 198 | } 199 | } 200 | 201 | @media (max-width: 550px) { 202 | .slide{ 203 | height:230px; 204 | } 205 | 206 | .slide-img{ 207 | height: 230px; 208 | } 209 | 210 | .slide-num{ 211 | visibility: hidden; 212 | font-size: 0px; 213 | } 214 | 215 | .btn-prev-slide, 216 | .btn-next-slide{ 217 | height: 40px; 218 | width: 40px; 219 | } 220 | 221 | .slide-show-dot{ 222 | height: 9px; 223 | width: 9px; 224 | } 225 | 226 | .slide-show-dot.active{ 227 | transform: scale3d(1.2, 1.2, 1.2); 228 | } 229 | 230 | .more-info-btn-container{ 231 | margin-left: 70vw; 232 | } 233 | } 234 | 235 | /* Responsive based on height */ 236 | @media (max-height: 600px) { 237 | .slide, 238 | .slide-img { 239 | height:200px; 240 | } 241 | } -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: [ 4 | "./src/**/*.{js,jsx,ts,tsx}", 5 | "./src/*.{js,jsx,ts,tsx}", 6 | "./src/**/**/*.{js,jsx,ts,tsx}", 7 | "./src/**/**/**/*.{js,jsx,ts,tsx}", 8 | "./src/**/*.{js,jsx,ts,tsx}", 9 | ], 10 | theme: { 11 | extend: { 12 | colors: { 13 | 'Dorange': "#ef2853", 14 | 'Dblue': "#08104d", 15 | 'Lblue': "#ecf2fe", 16 | 'Mblue': "#273fdf", 17 | } 18 | }, 19 | }, 20 | plugins: [], 21 | } 22 | --------------------------------------------------------------------------------