<?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>Forem: Alaa</title>
    <description>The latest articles on Forem by Alaa (@alaaio).</description>
    <link>https://forem.com/alaaio</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%2F3477591%2F92dd55bc-5a12-414e-84b6-c9b563717a70.png</url>
      <title>Forem: Alaa</title>
      <link>https://forem.com/alaaio</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/alaaio"/>
    <language>en</language>
    <item>
      <title>Remember Their Names: A Powerful Memorial Web App for Palestinian Children</title>
      <dc:creator>Alaa</dc:creator>
      <pubDate>Sun, 07 Sep 2025 14:41:16 +0000</pubDate>
      <link>https://forem.com/alaaio/remember-their-names-a-powerful-memorial-web-app-for-palestinian-children-lij</link>
      <guid>https://forem.com/alaaio/remember-their-names-a-powerful-memorial-web-app-for-palestinian-children-lij</guid>
      <description>&lt;p&gt;In the face of ongoing tragedy, technology can serve as a powerful tool for remembrance and action. Today, I want to share a deeply meaningful project I built: &lt;strong&gt;"Remember Their Names"&lt;/strong&gt; - an interactive memorial web application that honors the Palestinian children who have lost their lives.&lt;/p&gt;

&lt;p&gt;🚀 &lt;strong&gt;&lt;a href="https://remember-their-names.netlify.app/" rel="noopener noreferrer"&gt;Experience the memorial here!&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Purpose Behind the Code 💔
&lt;/h2&gt;

&lt;p&gt;This isn't just another web app - it's a digital memorial that brings humanity to statistics. When numbers become overwhelming, names and faces make the loss real. Each floating name represents a child with dreams, a family, and a future that was taken away.&lt;/p&gt;

&lt;p&gt;The app displays names continuously floating upward, creating a powerful visual representation of the scale of loss while ensuring each name gets its moment of remembrance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔗 &lt;a href="https://remember-their-names.netlify.app/" rel="noopener noreferrer"&gt;Experience the memorial yourself&lt;/a&gt;&lt;/strong&gt; - but more importantly, consider taking action to help stop the ongoing tragedy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect &amp;amp; Follow 🤝
&lt;/h2&gt;

&lt;p&gt;This project represents the intersection of technology and social justice. If you're interested in more projects that use code for positive impact, check out my &lt;a href="https://github.com/alaa-io" rel="noopener noreferrer"&gt;GitHub profile&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Have you built any socially conscious applications? What challenges did you face when balancing technical excellence with meaningful purpose? Let me know in the comments! 👇&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; #react #typescript #frontend #ui #social-impact #animation #framer-motion #webdev #javascript #tailwindcss #memorial #palestine&lt;/p&gt;

</description>
      <category>react</category>
      <category>frontend</category>
      <category>webdev</category>
      <category>animation</category>
    </item>
    <item>
      <title>Building a Multi-Language Code Integration Component with React &amp; TypeScript 🚀</title>
      <dc:creator>Alaa</dc:creator>
      <pubDate>Sat, 06 Sep 2025 11:56:28 +0000</pubDate>
      <link>https://forem.com/alaaio/building-a-multi-language-code-integration-component-with-react-typescript-5ehp</link>
      <guid>https://forem.com/alaaio/building-a-multi-language-code-integration-component-with-react-typescript-5ehp</guid>
      <description>&lt;p&gt;Ever wanted to showcase your API or SDK across multiple programming languages in a beautiful, interactive way? I built a comprehensive SDK integration component that displays implementation examples for 12+ programming languages with framework-specific variations.&lt;/p&gt;

&lt;p&gt;🚀 &lt;strong&gt;&lt;a href="https://sdk-integration-component.netlify.app//" rel="noopener noreferrer"&gt;Try the live demo here!&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes Great SDK Integration UX? 🎯
&lt;/h2&gt;

&lt;p&gt;When developers visit your documentation or landing page, they want to see code examples that match their tech stack. A great SDK integration component should:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Support multiple languages&lt;/strong&gt; - From Node.js to Rust, Python to .NET&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Show framework variations&lt;/strong&gt; - Express vs Next.js vs NestJS for Node.js&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provide copy-paste ready code&lt;/strong&gt; - No placeholder values or incomplete examples&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Be visually appealing&lt;/strong&gt; - Clean syntax highlighting and smooth animations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remember user preferences&lt;/strong&gt; - Persist language and framework selections&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Tech Stack 🛠️
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Core technologies&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;TypeScript&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;Tailwind&lt;/span&gt; &lt;span class="nx"&gt;CSS&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nx"&gt;styling&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;shadcn&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;ui&lt;/span&gt; &lt;span class="nx"&gt;components&lt;/span&gt;  
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;Radix&lt;/span&gt; &lt;span class="nx"&gt;UI&lt;/span&gt; &lt;span class="nx"&gt;primitives&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;Framer&lt;/span&gt; &lt;span class="nx"&gt;Motion&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nx"&gt;animations&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;Simple&lt;/span&gt; &lt;span class="nx"&gt;Icons&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nx"&gt;language&lt;/span&gt; &lt;span class="nx"&gt;logos&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;Lucide&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nx"&gt;UI&lt;/span&gt; &lt;span class="nx"&gt;icons&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Key Features:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🌍 &lt;strong&gt;12+ Programming Languages&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Node.js, Python, PHP, Go, Ruby, Rust, Java, Elixir, .NET&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protocols&lt;/strong&gt;: REST API, SMTP&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Serverless&lt;/strong&gt;: Serverless functions support&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🎯 &lt;strong&gt;Framework-Specific Examples&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Each language includes 2-3 popular frameworks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Node.js&lt;/strong&gt;: Express, Next.js, NestJS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python&lt;/strong&gt;: Django, Flask, FastAPI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PHP&lt;/strong&gt;: Laravel, Symfony, CodeIgniter&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Go&lt;/strong&gt;: Gin, Echo, Fiber&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rust&lt;/strong&gt;: Actix, Axum, Warp&lt;/li&gt;
&lt;li&gt;And many more...&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🎨 &lt;strong&gt;Smart Visual States&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Language Selection&lt;/strong&gt;: Interactive tabs with language icons&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Framework Switching&lt;/strong&gt;: Nested tabs for framework variations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Syntax Highlighting&lt;/strong&gt;: Custom highlighting for keywords and strings&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Copy Functionality&lt;/strong&gt;: One-click code copying with visual feedback&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Performance Optimizations 🚀
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lazy Loading&lt;/strong&gt;: Code snippets are only rendered when needed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memoization&lt;/strong&gt;: Framework tabs are memoized to prevent unnecessary re-renders&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Efficient Animations&lt;/strong&gt;: Framer Motion with optimized transition settings&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Storage&lt;/strong&gt;: User preferences persist across sessions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Responsive Design 📱
&lt;/h2&gt;

&lt;p&gt;The component is fully responsive with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mobile-first approach&lt;/strong&gt; with horizontal scrolling for language tabs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible code blocks&lt;/strong&gt; that adapt to screen size&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Touch-friendly&lt;/strong&gt; interface elements&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimized typography&lt;/strong&gt; for different screen sizes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key Features Checklist ✅
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;12+ Programming Languages&lt;/strong&gt; with authentic icons&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Framework-Specific Examples&lt;/strong&gt; (3+ per language)&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Copy-to-Clipboard&lt;/strong&gt; functionality&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Syntax Highlighting&lt;/strong&gt; with custom color scheme&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Smooth Animations&lt;/strong&gt; using Framer Motion&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Persistent State&lt;/strong&gt; with localStorage&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Responsive Design&lt;/strong&gt; for all screen sizes&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;TypeScript Support&lt;/strong&gt; with full type safety&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Accessibility&lt;/strong&gt; with proper ARIA labels&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Theme Support&lt;/strong&gt; for light/dark modes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I Learned 🎓
&lt;/h2&gt;

&lt;p&gt;Building this component taught me several valuable lessons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;State Management Complexity&lt;/strong&gt;: Managing nested state (language → framework) requires careful consideration of validation and persistence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Icon Integration&lt;/strong&gt;: Using Simple Icons for consistent, high-quality language logos&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Animation Performance&lt;/strong&gt;: Balancing smooth animations with performance using Framer Motion's optimized settings&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Organization&lt;/strong&gt;: Structuring large code snippet objects in a maintainable way&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User Experience&lt;/strong&gt;: The importance of remembering user preferences and providing immediate visual feedback&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Result 🎉
&lt;/h2&gt;

&lt;p&gt;The final SDK integration component provides a comprehensive, interactive way to showcase API integrations across multiple programming languages. It's perfect for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;API Documentation&lt;/strong&gt; - Show SDK implementation examples&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Landing Pages&lt;/strong&gt; - Demonstrate multi-language SDK support&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer Portals&lt;/strong&gt; - Help developers get started quickly with your SDK&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open Source Projects&lt;/strong&gt; - Showcase community SDK support&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Connect &amp;amp; Follow 🤝
&lt;/h2&gt;

&lt;p&gt;Want to see more projects like this? Check out my &lt;a href="https://github.com/alaa-io" rel="noopener noreferrer"&gt;GitHub profile&lt;/a&gt; for more frontend challenges and full-stack projects!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This component was inspired by the elegant SDK integration showcase on the &lt;a href="https://resend.com/" rel="noopener noreferrer"&gt;Resend landing page&lt;/a&gt;, which demonstrates how to present multi-language code examples in a clean, developer-friendly interface.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;What's your experience with building SDK integration components? Have you tackled similar multi-language showcases? Let me know in the comments! 👇&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; #react #typescript #frontend #ui #sdk #integration #webdev #javascript #tailwindcss&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>ui</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Building a Dynamic Pricing Page Inspired by Resend: A Deep Dive</title>
      <dc:creator>Alaa</dc:creator>
      <pubDate>Wed, 03 Sep 2025 17:18:15 +0000</pubDate>
      <link>https://forem.com/alaaio/building-a-dynamic-pricing-page-inspired-by-resend-a-deep-dive-12d3</link>
      <guid>https://forem.com/alaaio/building-a-dynamic-pricing-page-inspired-by-resend-a-deep-dive-12d3</guid>
      <description>&lt;p&gt;Email service providers like Resend have mastered transparent, volume-based pricing. Their pricing page is clean, interactive, and helps users understand exactly what they'll pay. Today, I'll show you how I recreated this experience using React and TypeScript.&lt;/p&gt;

&lt;p&gt;🚀 &lt;strong&gt;&lt;a href="https://resend-pricing-component.netlify.app/" rel="noopener noreferrer"&gt;Try the live demo here!&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes Great Pricing UX? 🎯
&lt;/h2&gt;

&lt;p&gt;Resend's pricing page works because of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Volume-based transparency&lt;/strong&gt; - See exactly how pricing scales&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive exploration&lt;/strong&gt; - Slider lets users explore tiers
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart recommendations&lt;/strong&gt; - Interface highlights suitable plans&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual hierarchy&lt;/strong&gt; - Clear distinction between plan states&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Responsive design&lt;/strong&gt; - Works on all devices&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Tech Stack 🛠️
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Core technologies&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;TypeScript&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;Tailwind&lt;/span&gt; &lt;span class="nx"&gt;CSS&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;shadcn&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;ui&lt;/span&gt; &lt;span class="nx"&gt;components&lt;/span&gt;  
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;Radix&lt;/span&gt; &lt;span class="nx"&gt;UI&lt;/span&gt; &lt;span class="nx"&gt;primitives&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;Lucide&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="nx"&gt;icons&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Smart Visual States 🎨
&lt;/h2&gt;

&lt;p&gt;The interface guides users toward the right plan with different states:&lt;/p&gt;

&lt;h3&gt;
  
  
  Plan States:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🟢 &lt;strong&gt;Available&lt;/strong&gt; - Standard styling&lt;/li&gt;
&lt;li&gt;⭐ &lt;strong&gt;Recommended&lt;/strong&gt; - Green badge + highlight&lt;/li&gt;
&lt;li&gt;✨ &lt;strong&gt;Highlighted&lt;/strong&gt; - Gradient background
&lt;/li&gt;
&lt;li&gt;🔒 &lt;strong&gt;Unavailable&lt;/strong&gt; - Grayed out&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Pricing Card Component 🃏
&lt;/h2&gt;

&lt;p&gt;Reusable card handling multiple visual states:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;PricingCardProps&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;planName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;price&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;period&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;emailLimit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;features&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Feature&lt;/span&gt;&lt;span class="p"&gt;[];&lt;/span&gt;
  &lt;span class="nl"&gt;ctaText&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;highlighted&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="nx"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;recommended&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="nx"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;available&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="nx"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;onCtaClick&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;void&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;h3&gt;
  
  
  Visual Features:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Recommended badge&lt;/strong&gt; with gradient background&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feature icons&lt;/strong&gt; - green checks vs gray X's&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adaptive CTAs&lt;/strong&gt; - styling changes based on plan state&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smooth transitions&lt;/strong&gt; - hover effects and state changes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  URL State Management 🔗
&lt;/h2&gt;

&lt;p&gt;Everything syncs with URL parameters for shareability:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Update URL when volume changes&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;updateURL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;volume&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;URL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;href&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;searchParams&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;volume&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;volume&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
  &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;history&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replaceState&lt;/span&gt;&lt;span class="p"&gt;({},&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Listen for browser navigation&lt;/span&gt;
&lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handlePopState&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;setSelectedVolume&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;getVolumeFromURL&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;popstate&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handlePopState&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="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removeEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;popstate&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handlePopState&lt;/span&gt;&lt;span class="p"&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;h2&gt;
  
  
  What I Learned 🎓
&lt;/h2&gt;

&lt;p&gt;Building this pricing page taught me:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;User-Centric Design&lt;/strong&gt; - Help users find their right plan&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Elements&lt;/strong&gt; - Let users explore pricing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual Feedback&lt;/strong&gt; - Guide decisions with design&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Technical Excellence&lt;/strong&gt; - Smooth interactions matter&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility&lt;/strong&gt; - ARIA labels, keyboard nav, screen readers&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Result 🎉
&lt;/h2&gt;

&lt;p&gt;The final implementation creates a sophisticated, user-friendly interface that helps customers make informed decisions. Users never have to guess what they'll pay or which plan suits their needs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔗 &lt;a href="https://resend-pricing-component.netlify.app/" rel="noopener noreferrer"&gt;Check out the live demo&lt;/a&gt;&lt;/strong&gt; to see all these features in action!&lt;/p&gt;

&lt;p&gt;By making pricing transparent and interactive, you build trust and reduce friction in the conversion process.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Building effective pricing pages requires balancing visual appeal with functional clarity. The combination of React's component model, TypeScript's type safety, and Tailwind's utility classes creates a maintainable solution that scales.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect &amp;amp; Follow 🤝
&lt;/h2&gt;

&lt;p&gt;Want to see more projects like this? Check out my &lt;a href="https://github.com/alaa-io" rel="noopener noreferrer"&gt;GitHub profile&lt;/a&gt; for more frontend challenges and full-stack projects!&lt;/p&gt;

&lt;p&gt;What's your experience with pricing page UX? Have you built similar interactive components? Let me know in the comments! 👇&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; #react #typescript #frontend #ui #pricing #webdev #javascript #tailwindcss&lt;/p&gt;

</description>
      <category>react</category>
      <category>typescript</category>
      <category>ui</category>
      <category>frontend</category>
    </item>
  </channel>
</rss>
