{"id":23654939,"url":"https://github.com/User-Expreience-Content/react-readability-article-component","last_synced_at":"2025-09-01T06:32:30.808Z","repository":{"id":71599422,"uuid":"170000281","full_name":"User-Expreience-Content/react-readability-article-component","owner":"User-Expreience-Content","description":"Readability Concepts based on React components Article and Readability with flex configuration and wide range of the web-typography features.","archived":false,"fork":false,"pushed_at":"2020-04-06T09:06:04.000Z","size":753,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-23T19:45:23.161Z","etag":null,"topics":["accessibility","css","css-in-js","ligature","microformats","react","react-components","readability","rem","seo","styled-components","typography"],"latest_commit_sha":null,"homepage":"https://react-readability.netlify.com/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/User-Expreience-Content.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2019-02-10T16:41:58.000Z","updated_at":"2025-01-04T15:26:17.000Z","dependencies_parsed_at":"2023-04-08T19:04:11.878Z","dependency_job_id":null,"html_url":"https://github.com/User-Expreience-Content/react-readability-article-component","commit_stats":null,"previous_names":["user-expreience-content/react-readability-article-component","andreymatin/react-readability-article-component"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/User-Expreience-Content/react-readability-article-component","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/User-Expreience-Content%2Freact-readability-article-component","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/User-Expreience-Content%2Freact-readability-article-component/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/User-Expreience-Content%2Freact-readability-article-component/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/User-Expreience-Content%2Freact-readability-article-component/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/User-Expreience-Content","download_url":"https://codeload.github.com/User-Expreience-Content/react-readability-article-component/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/User-Expreience-Content%2Freact-readability-article-component/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273082410,"owners_count":25042282,"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-09-01T02:00:09.058Z","response_time":120,"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":["accessibility","css","css-in-js","ligature","microformats","react","react-components","readability","rem","seo","styled-components","typography"],"created_at":"2024-12-28T19:43:50.871Z","updated_at":"2025-09-01T06:32:30.783Z","avatar_url":"https://github.com/User-Expreience-Content.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# React readability and article components\n\nReadability Concepts based on React components Article and Readability\nwith flex configuration and wide range of the web-typography features.\n\n## Article Features\n\n- Responsive Header\n- Browsers: Firefox read view (@todo  SSR support)\n- Devices: iPhone Reader View support\n\n![iPhone Reader View](https://i.imgur.com/0gWdTLql.png)\n\n- CSS3: Flexible typography settings\n- CSS3: prefers-color-scheme support\n- CSS3: ligature support\n- Mobile: Dynamic reponsive view (depended of the container width calculations)\n- SEO: microformats support\n- Accessibility roles\n\n## Readability Features\n\n- crossbrowser full screen support\n- enlarged text and layout by REM\n- night theme\n- speech API\n- fetch API\n\n\n## Components\n\n- Article\n- Readability\n- ErrorHandler\n\n\n## Additional React Libraries\n\n| Title             | Library                              |\n|-------------------|--------------------------------------|\n| ~~Pug support~~   | ~~babel-plugin-transform-react-pug~~ |\n| Styled Components | styled-components                    |\n\n- https://www.styled-components.com/\n\n\n## Article Component\nHTML template SEO optimized by schema.org and microformats\n\n- ./components/app/style.js\n\n#### Basic CSS Variables\n\n| Variable          | Default | Description                  |\n|-------------------|---------|------------------------------|\n| --golden-ratio    | 1.618   | Golden Ratio                 |\n| --cpl             | 25      | Character Per Line (25 - 90) |\n| --basic-font-size | 62.5%   | For REM calculations         |\n\n\n#### Basic Typography Parameters\n\n```css\n:root {\n  /* \tMiscellaneous Constants */\n  --golden-ratio: ${goldenRatio};\n  --cpl: ${cpl};\n\n  /* Font */\n  --basic-font-size: 62.5%;\n\n  --header-font-family: Impact, Helvetica, sans-serif;\n  --header-font-size: 5rem;\n  /* --header-line-height: calc(var(--header-font-size) * var(--golden-ratio)); */\n\n  --entry-font-family: Calibri, 'Times New Roman', serif;\n  --entry-font-size: ${entryFontSize}rem;\n  --entry-spacer: 2rem;\n  --entry-line-height: ${entryLineHeigh}rem;\n\n  --entry-meta-font-size: 1.8rem;\n\n  --word-spacing: 0.05rem;\n  --letter-spacing: -0.03rem;\n\n  /* Container */\n  --container-width: ${containerWidth}rem;\n\n  /* Mobile */\n  --screen-padding: 0 2rem;\n}\n```\n\n#### Advanced Typography Parameters\n\n```css\n.typo-features {\n  /* font metrics */\n  --font: Calibri;\n  --fm-emSquare: 1;\n  --fm-capitalHeight: 0.68;\n  --fm-descender: 0.54;\n  --fm-ascender: 1.1;\n  --fm-linegap: 0;\n\n  /* compute needed values */\n  --lineheightNormal: (var(--fm-ascender) + var(--fm-descender) + var(--fm-linegap));\n  --distanceBottom: (var(--fm-descender));\n  --distanceTop: (var(--fm-ascender) - var(--fm-capitalHeight));\n  --contentArea: (var(--lineheightNormal) * var(--computedFontSize));\n  --valign: ((var(--distanceBottom) - var(--distanceTop)) * var(--computedFontSize));\n  --computedFontSize: (var(--capital-height) / var(--fm-capitalHeight));\n  --computedLineheight: ((var(--line-height) * var(--capital-height)) - var(--valign));\n\n  /* desired capital height and line-height */\n  --capital-height: ${entryFontSize}rem;\n  --line-height: var(--entry-line-height);\n\n  /* set font family */\n  font-family: var(--font);\n\n  /* set capital height to equal font-size */\n  font-size: calc(var(--computedFontSize) * 1rem / 10);\n\n  /* set computed line-height */\n  line-height: calc(var(--computedLineheight) * 1rem / 10);\n\n  text-align: justify;\n  -webkit-hyphens: auto;\n  -moz-hyphens: auto;\n  -ms-hyphens: auto;\n  hyphens: auto;\n}\n```\n\n\n## Readability Component\nConfiguration Parameters for content, layout and browser\n\n\n\n\n## Web Typography Formulas\n\n- Line Height = Font Size * Golden Ratio\n- Container Width = CPL * Line Height\n\n\n## CSS Classes Scope\n\n| Scope                       | Classes                                              |\n|-----------------------------|------------------------------------------------------|\n| Browser Readers (+ Firefox) | entry-content, entry-header, entry-title, entry-data |\n| Microformats \"h-entry\"      | e-content                                            |\n| Shema                       | name, description, articleBody                       |\n\n\n## Preferences\n\n- http://microformats.org/wiki/h-entry\n- https://schema.org/Article\n- https://www.readability.com/index.html\n- https://www.flaticon.com/packs/essential-set-2\n- https://github.com/sindresorhus/screenfull.js\n- https://opentype.js.org/font-inspector.html\n- http://iamvdo.me/en/blog/css-font-metrics-line-height-and-vertical-align\n- http://westonthayer.com/writing/intro-to-font-metrics/\n\n\n## Todo\n\n- [ ] readability: color modes (Light | Dark | Sepia)\n- [ ] readability: line-height configuration\n- [ ] readability: content-width configuration\n- [ ] readability: font-size configuration\n- [ ] readability: print view and print button\n- [ ] readability: San-serif / Serif Fonts\n- [ ] readability: no images\n- [ ] readability: audio commands\n- [ ] readability: pdf support\n- [ ] article: CSS3 ligature on / off\n- [ ] readability: Narrate button\n- [ ] article: html5 video support ( + youtube )\n- [ ] SEO: server-side content generation (SSR)\n- [ ] app: themes and fonts\n- [ ] app: Pug template engine support\n- [ ] app: AMP support\n- [ ] app: Flat / DB support\n- [ ] app: react-app-rewired\n- [ ] reader: export optimized content\n- [ ] article: quotes\n- [ ] article: slider\n- [ ] article: asides\n- [ ] article: footer structure (comments, pager navigation)\n- [ ] iframe: inner CSS","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FUser-Expreience-Content%2Freact-readability-article-component","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FUser-Expreience-Content%2Freact-readability-article-component","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FUser-Expreience-Content%2Freact-readability-article-component/lists"}