{"id":31766327,"url":"https://github.com/ayokanmi-adejola/article-preview-component","last_synced_at":"2025-10-10T00:33:10.605Z","repository":{"id":308992247,"uuid":"1005574710","full_name":"Ayokanmi-Adejola/Article-preview-component","owner":"Ayokanmi-Adejola","description":"A responsive article preview component, developed as a Frontend Mentor challenge using HTML, CSS, and JavaScript, featuring a clean layout  that accurately displays article information and includes an interactive share toggle.","archived":false,"fork":false,"pushed_at":"2025-06-20T12:54:29.000Z","size":236,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-30T00:00:33.278Z","etag":null,"topics":["css3","flexbox","html5","mobile-first-workflow","vanilla-js"],"latest_commit_sha":null,"homepage":"https://article-preview-component-lac-pi.vercel.app","language":"HTML","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/Ayokanmi-Adejola.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,"zenodo":null}},"created_at":"2025-06-20T12:53:27.000Z","updated_at":"2025-09-06T18:45:42.000Z","dependencies_parsed_at":"2025-08-09T05:51:01.866Z","dependency_job_id":"30d48204-3a6a-4fec-aa1e-9cbabfaaeacb","html_url":"https://github.com/Ayokanmi-Adejola/Article-preview-component","commit_stats":null,"previous_names":["ayokanmi-adejola/article-preview-component"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Ayokanmi-Adejola/Article-preview-component","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayokanmi-Adejola%2FArticle-preview-component","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayokanmi-Adejola%2FArticle-preview-component/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayokanmi-Adejola%2FArticle-preview-component/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayokanmi-Adejola%2FArticle-preview-component/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ayokanmi-Adejola","download_url":"https://codeload.github.com/Ayokanmi-Adejola/Article-preview-component/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayokanmi-Adejola%2FArticle-preview-component/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002358,"owners_count":26083356,"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","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["css3","flexbox","html5","mobile-first-workflow","vanilla-js"],"created_at":"2025-10-10T00:30:27.701Z","updated_at":"2025-10-10T00:33:10.598Z","avatar_url":"https://github.com/Ayokanmi-Adejola.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Frontend Mentor - Article preview component solution\n\nThis is a solution to the [Article preview component challenge on Frontend Mentor](https://www.frontendmentor.io/challenges/article-preview-component-dYBN_pYFT). Frontend Mentor challenges help you improve your coding skills by building realistic projects.\n\n\n\n## Overview\n\n### The challenge\n\nUsers should be able to:\n\n- View the optimal layout for the component depending on their device's screen size\n- See the social media share links when they click the share icon\n\n### Screenshot\n\n![Desktop Design](./design/desktop-design.jpg)\n![Mobile Design](./design/mobile-design.jpg)\n\n\n\n## My process\n\n### Built with\n\n- Semantic HTML5 markup\n- CSS custom properties\n- Flexbox\n- CSS Grid\n- Mobile-first workflow\n- Vanilla JavaScript\n- Responsive design principles\n\n### What I learned\n\nThis project helped me practice several key frontend development concepts:\n\n1. **Responsive Design**: Implementing a layout that works seamlessly across mobile and desktop devices using CSS media queries.\n\n2. **Interactive Components**: Creating a share tooltip that appears/disappears with smooth transitions and proper event handling.\n\n3. **CSS Positioning**: Using absolute positioning for the share tooltip with proper z-index management.\n\nHere are some code snippets I'm particularly proud of:\n\n```css\n.share-tooltip {\n  position: absolute;\n  bottom: 60px;\n  right: 0;\n  background: hsl(217, 19%, 35%);\n  opacity: 0;\n  pointer-events: none;\n  transition: opacity 0.2s;\n}\n\n.share-tooltip.active {\n  opacity: 1;\n  pointer-events: auto;\n}\n```\n\n```js\nfunction toggleShare(e) {\n  e.stopPropagation();\n  const tooltip = document.getElementById('shareTooltip');\n  tooltip.classList.toggle('active');\n\n  if (tooltip.classList.contains('active')) {\n    document.addEventListener('click', hideTooltipOnClick);\n  } else {\n    document.removeEventListener('click', hideTooltipOnClick);\n  }\n}\n```\n\n### Continued development\n\nAreas I want to continue focusing on in future projects:\n\n- **Accessibility**: Adding proper ARIA labels and keyboard navigation support\n- **CSS Architecture**: Exploring methodologies like BEM for better CSS organization\n- **JavaScript Frameworks**: Implementing similar components using React or Vue.js\n- **Animation**: Adding more sophisticated animations and micro-interactions\n\n### Useful resources\n\n- [CSS-Tricks Flexbox Guide](https://css-tricks.com/snippets/css/a-guide-to-flexbox/) - This helped me understand flexbox layout for the responsive design.\n- [MDN Web Docs - Event Handling](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener) - Great resource for understanding event listeners and proper cleanup.\n\n## Author\n\n- Frontend Mentor - [@Ayokanmi-Adejola](https://www.frontendmentor.io/profile/Ayokanmi-Adejola)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fayokanmi-adejola%2Farticle-preview-component","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fayokanmi-adejola%2Farticle-preview-component","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fayokanmi-adejola%2Farticle-preview-component/lists"}