<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Muhannad Abdelrazek</title>
    <description>The latest articles on DEV Community by Muhannad Abdelrazek (@muhnad).</description>
    <link>https://dev.to/muhnad</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F136440%2F73432573-4493-4ada-b298-bd62f7628e1e.jpeg</url>
      <title>DEV Community: Muhannad Abdelrazek</title>
      <link>https://dev.to/muhnad</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/muhnad"/>
    <language>en</language>
    <item>
      <title>Ubiquitous Types: Introduction to Algebraic Data Types</title>
      <dc:creator>Muhannad Abdelrazek</dc:creator>
      <pubDate>Wed, 22 Dec 2021 18:23:13 +0000</pubDate>
      <link>https://dev.to/muhnad/ubiquitous-types-introduction-to-algebraic-data-types-pjd</link>
      <guid>https://dev.to/muhnad/ubiquitous-types-introduction-to-algebraic-data-types-pjd</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Ubiquitous: present, appearing, or found everywhere.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;most of the time we as humans are able to recognize and label things in the same way “most probably”. the small example about our ability to do that recently is the most annoying fraud checking system “reCAPTCHA” yeah, the one that’s always asking you to select and label some kind of type in every action we usually do these days on the internet to validate you’re a human.&lt;/p&gt;

&lt;p&gt;the model of reCAPTCHA is so easy it just showing to you a type and asks you to select this type from the recommended images.&lt;/p&gt;

&lt;p&gt;So labeling things is something we naturally do, we are used to labeling things around us in a way that makes them distinguishable.&lt;/p&gt;

&lt;p&gt;the same process happens with programming as well. everytime you think and write a program you almost try to find the similarities between things then you have to label, composing those similarities.&lt;/p&gt;

&lt;p&gt;in the Functional programming universe, everything is around &lt;code&gt;functions&lt;/code&gt;. the function is simple it's just a small kind of box that accepts input and produces output. input -&amp;gt; output.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--19hGL_eo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ls8eyi9zpc9js3h46b51.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--19hGL_eo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ls8eyi9zpc9js3h46b51.png" alt="Diagram represent the function process. in the Diagram there are 3 boxes in the same line sequence. the 1st one shows the function input then the 2nd one shows the function the the 3rd one point of to the function output" width="880" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;the (input -&amp;gt; output) description is called type signature. the type signature is just the definition of the function input and output.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Signature -&amp;gt; multiplay2 :: Number -&amp;gt; Number&lt;/span&gt;
&lt;span class="c1"&gt;// Which Means that the multiplay2 function takes and &lt;/span&gt;
&lt;span class="c1"&gt;// expect to pass parameter(input) from type Number and&lt;/span&gt;
&lt;span class="c1"&gt;// produce(output a value from type Number.&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;multiplay2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Signature -&amp;gt; sum:: (Number, Number) -&amp;gt; Number&lt;/span&gt;
&lt;span class="c1"&gt;// Which Means that the sum function takes and expect to&lt;/span&gt;
&lt;span class="c1"&gt;// pass 2 parameter(input) from type Number&lt;/span&gt;
&lt;span class="c1"&gt;// and produce(output) a value from type Number.&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So we could define type as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;it’s just a given label or name for some values that could be used as input or output for function.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;the insight and understanding of the function from just reading a type signature are powerful. being able to express, recognize the function itself without going into the function details that’s one of the powerful things that type signature provides.&lt;/p&gt;

&lt;p&gt;so the type is just a name for any kind of thing that could be used as input or output for functions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Algebraic Data Types
&lt;/h2&gt;

&lt;p&gt;Wikipedia's definition: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;an &lt;strong&gt;algebraic data type&lt;/strong&gt; is a kind of composite type,  i.e., a type formed by combining other types.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So basically the algebraic data type is just a composition of types. composition means putting things together so you can combine a couple of things to make a bigger thing.&lt;/p&gt;

&lt;p&gt;the common types in algebraic data types are “&lt;strong&gt;Product type&lt;/strong&gt;” which basically represented by “&lt;strong&gt;AND&lt;/strong&gt;ing” things together and “&lt;strong&gt;Sum type&lt;/strong&gt;”  which basically represented by “&lt;strong&gt;OR&lt;/strong&gt;ing” things together.&lt;/p&gt;

&lt;h3&gt;
  
  
  Product type:
&lt;/h3&gt;

&lt;p&gt;Product type is a compound for other types. and shortly speaking Product type is just like the “AND” operator. you need every type to make a new one.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;FruitSalad&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="na"&gt;apple&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;AppleKinds&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="na"&gt;banana&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;BananaKinds&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="na"&gt;orange&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;OrangeKinds&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ffz699Xd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lfseowvijouvs263si2d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ffz699Xd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lfseowvijouvs263si2d.png" alt='Diagram for product type shows the function sequence started from the function input to the function and on the end the function output. the function input is represented by showing 3 boxes, 1st box has 2 apple, 2nd one has 2 banana, 3rd one has 2 orange. then the function output is 8 fruit salad. diagram shows the type signature "type FruitSalad = Apple AND Banana AND Orange". the equation for this is "2 apple * 2 banana * 2 Orange = 8 fruit salad"' width="880" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The naming Product and equation comes from mathematics, type theory, category theory,  &lt;a href="https://en.wikipedia.org/wiki/Cartesian_product"&gt;Cartesian product&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Sum type:
&lt;/h3&gt;

&lt;p&gt;Sum type is a type where your value must be one of the choices types. and shortly speaking Sum type is just like the “OR” operator. you need either this or that type, not both.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;FruitSnack&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Apple&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;Banana&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;Orange&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pGuCs-bR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z8nkdh7tgk6uz3oba8l0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pGuCs-bR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z8nkdh7tgk6uz3oba8l0.png" alt='Diagram for sum type shows the function sequence started from the function input to the function and on the end the function output. the function input is represented by showing 3 boxes, 1st box has 2 apple, 2nd one has 2 banana, 3rd one has 2 orange. then the function output is 6 fruit snack. diagram shows the type signature "type FruitSalad = Apple OR Banana OR Orange". the equation for this is "2 apple + 2 banana + 2 Orange = 6 fruit snack"' width="880" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The naming Sum and equation comes from mathematics, type theory, category theory, &lt;a href="https://en.wikipedia.org/wiki/Disjoint_union"&gt;Disjoint union&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;if you’re working with a strongly typed language you will find yourself dealing with composing types and algebraic data types as well.&lt;/p&gt;

&lt;p&gt;below is a naive example of composed types:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;Amount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;Currency&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;USD&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;EUR&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;CardType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Visa&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;MasterCard&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;CardNumber&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;CreditCardInfo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;CardType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;CardType&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;CardNumber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;CardNumber&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;Payment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;Amount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Amount&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;Currency&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Currency&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;CreditCardInfo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;CreditCardInfo&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the main points from this article are to just simplify the concept of Product, Sum types. not meant to implement functions and models around both types might in next articles to write more about how to use both to build types model that works with domains driven.&lt;/p&gt;

&lt;p&gt;note: usually the elimination of choices in Sum type needs to implement a matching pattern to eliminate the choices.&lt;/p&gt;

&lt;h3&gt;
  
  
  Recap:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;type signature is just the definition of the function input and output.&lt;/li&gt;
&lt;li&gt;algebraic data type is just a composition of types.&lt;/li&gt;
&lt;li&gt;the types that are built using AND are called Product types.&lt;/li&gt;
&lt;li&gt;the types that are built using Or are called Sum types.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>typescript</category>
      <category>javascript</category>
      <category>ddd</category>
      <category>algebraic</category>
    </item>
    <item>
      <title>Skip Navigation - Accessibility</title>
      <dc:creator>Muhannad Abdelrazek</dc:creator>
      <pubDate>Thu, 14 Feb 2019 10:21:34 +0000</pubDate>
      <link>https://dev.to/muhnad/skip-navigation---accessibility-42pj</link>
      <guid>https://dev.to/muhnad/skip-navigation---accessibility-42pj</guid>
      <description>&lt;h1&gt;
  
  
  What is the Skip navigation?
&lt;/h1&gt;

&lt;p&gt;Skip navigation is a way to provides the links to keyboard &amp;amp; screenreader users that helps them to jump to the main content area or any specific area on website.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Muhnad" rel="noopener noreferrer"&gt;
        Muhnad
      &lt;/a&gt; / &lt;a href="https://github.com/Muhnad/skip-links" rel="noopener noreferrer"&gt;
        skip-links
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      React component that helps you to add skip navigation links. https://skiplinks.surge.sh
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Skip links&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;React component that helps you to add skip navigation links.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Read about skip links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.w3.org/TR/WCAG20-TECHS/G1.html" rel="nofollow noopener noreferrer"&gt;skip to main content&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://webaim.org/techniques/skipnav/" rel="nofollow noopener noreferrer"&gt;skip navigation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Install&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;  npm install -S skip-links&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Usage&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Import component&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;  &lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-v"&gt;SkipLinks&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'skip-links'&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Call component and pass &lt;code&gt;props&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;  &lt;span class="pl-en"&gt;render&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
    &lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;links&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-kos"&gt;[&lt;/span&gt;
      &lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-c1"&gt;title&lt;/span&gt;: &lt;span class="pl-s"&gt;'Skip to main content'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-c1"&gt;to&lt;/span&gt;: &lt;span class="pl-s"&gt;'main'&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
      &lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-c1"&gt;title&lt;/span&gt;: &lt;span class="pl-s"&gt;'Skip to footer'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-c1"&gt;to&lt;/span&gt;: &lt;span class="pl-s"&gt;'footer'&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt;
    &lt;span class="pl-kos"&gt;]&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

    &lt;span class="pl-k"&gt;return&lt;/span&gt; &lt;span class="pl-kos"&gt;(&lt;/span&gt;
      &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;SkipLinks&lt;/span&gt; &lt;span class="pl-c1"&gt;links&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-s1"&gt;links&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-c1"&gt;/&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="pl-kos"&gt;)&lt;/span&gt;
  &lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Props&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Prop&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;required&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;links&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Array&lt;/td&gt;
&lt;td&gt;True&lt;/td&gt;
&lt;td&gt;Add links you need to show as object have &lt;code&gt;title&lt;/code&gt; and &lt;code&gt;to&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Shape of array:&lt;/p&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;  &lt;span class="pl-kos"&gt;[&lt;/span&gt;
    &lt;span class="pl-kos"&gt;{&lt;/span&gt;
      &lt;span class="pl-c1"&gt;title&lt;/span&gt;: &lt;span class="pl-v"&gt;String&lt;/span&gt; &lt;span class="pl-v"&gt;Required&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-c"&gt;// Text you need to show&lt;/span&gt;
      &lt;span class="pl-c1"&gt;to&lt;/span&gt;: &lt;span class="pl-v"&gt;String&lt;/span&gt; &lt;span class="pl-v"&gt;Required&lt;/span&gt; &lt;span class="pl-c"&gt;//  Destination ID without hash '#'&lt;/span&gt;
    &lt;span class="pl-kos"&gt;}&lt;/span&gt;
  &lt;span class="pl-kos"&gt;]&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Q&amp;amp;A&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;How to customize the skip links
&lt;ol&gt;
&lt;li&gt;you can pass style attribute directly to your…&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Muhnad/skip-links" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


</description>
      <category>a11y</category>
      <category>react</category>
      <category>componetns</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
