{"id":20309623,"url":"https://github.com/coder-abdo/frontend-mentor-contact-form","last_synced_at":"2026-05-09T01:39:54.125Z","repository":{"id":244608338,"uuid":"815406703","full_name":"coder-abdo/frontend-mentor-contact-form","owner":"coder-abdo","description":null,"archived":false,"fork":false,"pushed_at":"2024-06-16T05:03:54.000Z","size":144,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-14T11:58:19.894Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coder-abdo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-15T04:34:46.000Z","updated_at":"2024-06-16T05:03:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"cd91ebe2-5332-43ef-93ae-63c769c09b9f","html_url":"https://github.com/coder-abdo/frontend-mentor-contact-form","commit_stats":null,"previous_names":["coder-abdo/frontend-mentor-contact-form"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coder-abdo%2Ffrontend-mentor-contact-form","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coder-abdo%2Ffrontend-mentor-contact-form/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coder-abdo%2Ffrontend-mentor-contact-form/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coder-abdo%2Ffrontend-mentor-contact-form/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coder-abdo","download_url":"https://codeload.github.com/coder-abdo/frontend-mentor-contact-form/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241809604,"owners_count":20023786,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T17:28:07.311Z","updated_at":"2026-05-09T01:39:54.095Z","avatar_url":"https://github.com/coder-abdo.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Frontend Mentor - Contact form solution\n\nThis is a solution to the [Contact form challenge on Frontend Mentor](https://www.frontendmentor.io/challenges/contact-form--G-hYlqKJj). Frontend Mentor challenges help you improve your coding skills by building realistic projects.\n\n## Table of contents\n\n- [Overview](#overview)\n  - [The challenge](#the-challenge)\n  - [Screenshot](#screenshot)\n  - [Links](#links)\n- [My process](#my-process)\n  - [Built with](#built-with)\n  - [What I learned](#what-i-learned)\n  - [Continued development](#continued-development)\n  - [Useful resources](#useful-resources)\n- [Author](#author)\n- [Acknowledgments](#acknowledgments)\n\n**Note: Delete this note and update the table of contents based on what sections you keep.**\n\n## Overview\n\n### The challenge\n\nUsers should be able to:\n\n- Complete the form and see a success toast message upon successful submission\n- Receive form validation messages if:\n  - A required field has been missed\n  - The email address is not formatted correctly\n- Complete the form only using their keyboard\n- Have inputs, error messages, and the success message announced on their screen reader\n- View the optimal layout for the interface depending on their device's screen size\n- See hover and focus states for all interactive elements on the page\n\n### Screenshot\n\n![](./screenshot.jpg)\n\n### Links\n\nhttps://www.frontendmentor.io/solutions/contact-form-RnWQQtdNUZ\n\n- Solution URL: [frontendmentor solution](https://www.frontendmentor.io/solutions/contact-form-RnWQQtdNUZ)\n- Live Site URL: [github pages](https://coder-abdo.github.io/frontend-mentor-contact-form/)\n\n### Built with\n\n- Semantic HTML5 markup\n- CSS custom properties\n- Flexbox\n\n### What I learned\n\n```html\n\u003cspan class=\"message-error\" role=\"alert\"\u003e\u003c/span\u003e\n\u003cspan\n  class=\"terms-checkmark\"\n  role=\"checkbox\"\n  aria-checked=\"false\"\n  tabindex=\"0\"\n  aria-labelledby=\"terms check\"\n\u003e\u003c/span\u003e\n\u003cspan\n  class=\"checkmark\"\n  role=\"radio\"\n  aria-checked=\"false\"\n  tabindex=\"0\"\n  aria-labelledby=\"Support Request\"\n  data-value=\"Support Request\"\n\u003e\u003c/span\u003e\n```\n\n```css\n.terms input:checked ~ .terms-checkmark {\n  background-color: var(--med-green);\n}\n\n/* Checkmark indicator */\n.terms-checkmark:after {\n  content: \"\";\n  position: absolute;\n  display: none;\n}\n\n.terms input:checked ~ .terms-checkmark:after {\n  display: block;\n}\n\n.terms .terms-checkmark:after {\n  left: 7px;\n  top: 3px;\n  width: 5px;\n  height: 10px;\n  border: solid white;\n  border-width: 0 3px 3px 0;\n  -webkit-transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  transform: rotate(45deg);\n}\n```\n\n```js\nfunction validateEmail(email) {\n  const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n  return emailRegex.test(email);\n}\n```\n\n### Continued development\n\n1. Accessibility.\n2. HTML5 Semantic.\n\n### Useful resources\n\n- [MDN](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/radio_role) - This helped me for learn more about how to add an accessibility to span as a radio input. I really liked this pattern and will use it going forward.\n- [MDN](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/checkbox_role) - This is an amazing article which helped me learn more about how to add an accessibility to span as a checkbox input. I'd recommend it to anyone still learning this concept.\n\n## Author\n\n- Website - [Abdulmonaem](https://abdelmonaem-portfolio.vercel.app/)\n- Frontend Mentor - [@coder-abdo](https://www.frontendmentor.io/profile/coder-abdo)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoder-abdo%2Ffrontend-mentor-contact-form","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoder-abdo%2Ffrontend-mentor-contact-form","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoder-abdo%2Ffrontend-mentor-contact-form/lists"}