<?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: Nav B.</title>
    <description>The latest articles on DEV Community by Nav B. (@rawjson).</description>
    <link>https://dev.to/rawjson</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%2F2016605%2F70b68f9f-f30b-401d-953f-fb1643942298.jpeg</url>
      <title>DEV Community: Nav B.</title>
      <link>https://dev.to/rawjson</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rawjson"/>
    <language>en</language>
    <item>
      <title>Creating a Shooting Star Border Animation with Tailwind CSS</title>
      <dc:creator>Nav B.</dc:creator>
      <pubDate>Tue, 03 Sep 2024 14:43:17 +0000</pubDate>
      <link>https://dev.to/rawjson/creating-a-shooting-star-border-animation-with-tailwind-css-1hf7</link>
      <guid>https://dev.to/rawjson/creating-a-shooting-star-border-animation-with-tailwind-css-1hf7</guid>
      <description>&lt;p&gt;In this blog post, we'll create a captivating "shooting star" border animation using Tailwind CSS. This effect gives a glowing, animated border to an input field that can catch the user's attention—perfect for call-to-action sections like email sign-ups or important notifications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Before diving into the code, you can check out the live demo of the effect here: &lt;a href="https://play.tailwindcss.com/k1J7tBWshm?size=684x664" rel="noopener noreferrer"&gt;View in Tailwind Playground&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Concept
&lt;/h2&gt;

&lt;p&gt;The animation is achieved using Tailwind CSS's utility classes and pseudo-elements. We'll use Tailwind's &lt;code&gt;after&lt;/code&gt; pseudo-class to create a conic gradient animation that spins around the input field, giving the illusion of a shooting star tracing the border.&lt;/p&gt;

&lt;h2&gt;
  
  
  HTML and Tailwind CSS Setup
&lt;/h2&gt;

&lt;p&gt;Below is the HTML structure and Tailwind CSS classes needed to create this effect:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"flex h-screen bg-black"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"z-10 m-auto overflow-hidden p-0.5"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"after:transparent relative h-14 w-[500px] rounded-md border border-white/50 bg-black after:absolute after:-inset-[1px] after:-z-10 after:h-full after:w-full after:animate-[spin_4s_infinite] after:bg-[conic-gradient(var(--tw-gradient-stops))] after:from-transparent after:from-40% after:via-50% after:to-blue-600 after:to-100%"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Join the waitlist, enter your email.."&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"h-full w-full bg-transparent px-4 text-lg text-white placeholder:text-white/40 focus:outline-none"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Breaking Down the Code
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Container Setup
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"flex h-screen bg-black"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;We start by creating a flex container that centers the content both vertically and horizontally with &lt;code&gt;h-screen&lt;/code&gt; (full height) and &lt;code&gt;bg-black&lt;/code&gt; (black background).&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Wrapper for Input Field
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"z-10 m-auto overflow-hidden p-0.5"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;The input field is wrapped inside a &lt;code&gt;div&lt;/code&gt; that has &lt;code&gt;z-10&lt;/code&gt; to ensure it is above the animated border, &lt;code&gt;m-auto&lt;/code&gt; to center it within the flex container, and &lt;code&gt;overflow-hidden&lt;/code&gt; to contain the animated border within its bounds.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Input Field with Animated Border
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"after:transparent relative h-14 w-[500px] rounded-md border border-white/50 bg-black ..."&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;The main input field is set to a fixed width of &lt;code&gt;500px&lt;/code&gt; and height of &lt;code&gt;14&lt;/code&gt; Tailwind units.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;border-white/50&lt;/code&gt; class adds a semi-transparent border, while &lt;code&gt;rounded-md&lt;/code&gt; gives it rounded corners.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;bg-black&lt;/code&gt; sets the background color to black, blending it with the container.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Creating the Animation
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;  after:absolute after:-inset-[1px] after:-z-10 after:h-full after:w-full after:animate-[spin_4s_infinite] after:bg-[conic-gradient(var(--tw-gradient-stops))] after:from-transparent after:from-40% after:via-50% after:to-blue-600 after:to-100%"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;after&lt;/code&gt; pseudo-element is used to create the conic gradient that will animate around the border.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;after:-inset-[1px]&lt;/code&gt; slightly expands the gradient beyond the input's border, and &lt;code&gt;after:absolute&lt;/code&gt; positions it absolutely to cover the entire input area.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;after:animate-[spin_4s_infinite]&lt;/code&gt; adds a custom spin animation that completes one full rotation every 4 seconds.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;after:bg-[conic-gradient...]&lt;/code&gt; creates the gradient effect. We use the &lt;code&gt;from-transparent&lt;/code&gt; and &lt;code&gt;to-blue-600&lt;/code&gt; classes to define the color stops, giving a fading effect that mimics a shooting star.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Input Field Styling
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;  &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Join the waitlist, enter your email.."&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"h-full w-full bg-transparent px-4 text-lg text-white placeholder:text-white/40 focus:outline-none"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;The input itself is transparent (&lt;code&gt;bg-transparent&lt;/code&gt;) and takes up the full height and width of its parent.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;text-lg&lt;/code&gt; class sizes the text, while &lt;code&gt;text-white&lt;/code&gt; and &lt;code&gt;placeholder:text-white/40&lt;/code&gt; ensure that the text and placeholder are visible against the dark background.&lt;/li&gt;
&lt;li&gt;Finally, &lt;code&gt;focus:outline-none&lt;/code&gt; removes the default focus outline to maintain the custom styling.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;With just a few lines of Tailwind CSS and the power of pseudo-elements, you can create eye-catching effects like this shooting star border animation. This effect is not only aesthetically pleasing but also easy to implement and customize for your own projects. Feel free to tweak the colors, timing, and other properties to fit your design needs!&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;/p&gt;

&lt;p&gt;Cover Photo by &lt;a href="href="&gt;Juskteez Vu&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/shooting-star-under-blue-sky-TIrXot28Znc?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tailwindcss</category>
      <category>css</category>
      <category>html</category>
      <category>animation</category>
    </item>
    <item>
      <title>Observing target position in React: Seamless scroll detection and dynamic content styling</title>
      <dc:creator>Nav B.</dc:creator>
      <pubDate>Mon, 02 Sep 2024 16:23:05 +0000</pubDate>
      <link>https://dev.to/rawjson/observing-target-position-in-react-seamless-scroll-detection-and-dynamic-content-styling-666</link>
      <guid>https://dev.to/rawjson/observing-target-position-in-react-seamless-scroll-detection-and-dynamic-content-styling-666</guid>
      <description>&lt;p&gt;Have you ever been lost while scrolling through a long piece of content, wondering where you are in the grand scheme of things? We’ve all been there. To make things easier, I’ve created a simple npm package that helps you keep track of your position on the page by updating the table of contents (TOC) as you scroll. Whether you’re working on a documentation website or a project with multiple sections, this package is here to help.&lt;/p&gt;

&lt;p&gt;See demo &lt;a href="https://target-observer-demo.vercel.app/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Visit homepage &lt;a href="https://www.npmjs.com/package/target-observer" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  What’s Inside the Package?
&lt;/h4&gt;

&lt;p&gt;This package comes with three components and one hook that make it easy to integrate scroll tracking into your site:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;InViewProvider&lt;/strong&gt;: This is like the brain of the operation. It keeps track of which section is currently in view and makes sure everything stays in sync. Just wrap it around the part of your app where you want to enable scroll tracking.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Target&lt;/strong&gt;: Think of this as the tag you put on each section of your content. By wrapping your sections with the &lt;code&gt;Target&lt;/code&gt; component, you’re telling the package, “Hey, keep an eye on this!”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ObserveZone&lt;/strong&gt;: This is the space where all the action happens. It is an invisible component that watches your content and the Target, ensuring the TOC updates as you scroll.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;useInView&lt;/strong&gt;: A handy hook that lets you know when a section is in view. This is perfect for triggering animations, lazy loading content, or anything else you want to happen when a section comes into view.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Why You Might Find This Useful
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Keep Users on Track&lt;/strong&gt;: When users scroll through your content, they can easily see which section they’re reading because the TOC updates automatically. No more getting lost in long pages!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Versatile Use Cases&lt;/strong&gt;: While it’s great for documentation sites, you can also use this package for other things like triggering animations when certain sections come into view, lazy loading content to save resources, or even making API calls as users scroll.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Easy to Implement&lt;/strong&gt;: The package is designed to be straightforward. With just a few components and a hook, you can add it to your React projects without much hassle.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Possible Use Cases
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Documentation Sites&lt;/strong&gt;: Perfect for linking TOC items with content sections, so users always know where they are.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Animations and Effects&lt;/strong&gt;: Want to add some flair? Use the &lt;code&gt;useInView&lt;/code&gt; hook to trigger animations when a section enters the viewport.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lazy Loading Content&lt;/strong&gt;: Save on load times by loading components only when they’re needed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dynamic API Calls&lt;/strong&gt;: Fetch data or load content dynamically as users scroll through the page.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  How to Get Started
&lt;/h4&gt;

&lt;p&gt;It’s super easy to get this package up and running. First, install it via npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;target-observer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, use the components in your project like this:&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="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;InViewProvider&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ObserveZone&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;useInView&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;target-observer&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;DocumentationPage&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;InViewProvider&lt;/span&gt; &lt;span class="na"&gt;targetIds&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;section1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;section2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;relative&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
       &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;ObserveZone&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
         &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;TableOfContents&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
         &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
           &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Target&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"section1"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Section1&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Target&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
           &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Target&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"section2"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Section2&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Target&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
           &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="cm"&gt;/* Add more sections as needed */&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
         &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;InViewProvider&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And that’s it! With these few lines of code, your TOC will update as users scroll, making navigation a breeze.&lt;/p&gt;

&lt;h4&gt;
  
  
  Wrap-Up
&lt;/h4&gt;

&lt;p&gt;This npm package is a simple yet effective way to enhance your website’s navigation. Whether you're working on documentation or any other content-heavy project, this tool helps keep things organized and user-friendly. I hope you find it as useful as I do!&lt;/p&gt;

&lt;p&gt;Cover Photo by &lt;a href="https://unsplash.com/@worldsbetweenlines?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash" rel="noopener noreferrer"&gt;Patrick Hendry&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/a-telescope-sitting-on-top-of-a-hill-under-a-night-sky-Y0Aync7Axbk?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>reacthook</category>
      <category>react</category>
      <category>javascript</category>
      <category>npm</category>
    </item>
  </channel>
</rss>
