<?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: keshav jha</title>
    <description>The latest articles on DEV Community by keshav jha (@mekkj98).</description>
    <link>https://dev.to/mekkj98</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F368748%2Fccee7bcb-4746-4541-b5cc-dc43d849a0a3.jpeg</url>
      <title>DEV Community: keshav jha</title>
      <link>https://dev.to/mekkj98</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mekkj98"/>
    <language>en</language>
    <item>
      <title>I Rebuilt My Developer Portfolio Around the Work, Not the Tech Stack</title>
      <dc:creator>keshav jha</dc:creator>
      <pubDate>Tue, 06 Oct 2026 07:51:53 +0000</pubDate>
      <link>https://dev.to/mekkj98/i-rebuilt-my-developer-portfolio-around-the-work-not-the-tech-stack-46j9</link>
      <guid>https://dev.to/mekkj98/i-rebuilt-my-developer-portfolio-around-the-work-not-the-tech-stack-46j9</guid>
      <description>&lt;p&gt;I recently gave my developer portfolio a major update. I’m still iterating on it and improving things as I go, but I thought I’d share it now and get some feedback from others.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Portfolio: &lt;a href="https://keshavkjha.com" rel="noopener noreferrer"&gt;https://keshavkjha.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After 7+ years of building software, I realized my old way of presenting myself had a problem.&lt;/p&gt;

&lt;p&gt;Like many developer portfolios, it was easy to focus on things like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;React. Go. Python. Node.js. PostgreSQL. Kubernetes. AWS. Docker.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Those things matter.&lt;/p&gt;

&lt;p&gt;But they don't really explain what I do.&lt;/p&gt;

&lt;p&gt;A technology list doesn't show whether someone can take an unclear product idea, make technical decisions, build the system, ship it, debug the uncomfortable parts, deploy it, and continue owning it when real users arrive.&lt;/p&gt;

&lt;p&gt;That's what I wanted the new portfolio to communicate.&lt;/p&gt;

&lt;h2&gt;
  
  
  From "here are my skills" to "here is what I built"
&lt;/h2&gt;

&lt;p&gt;Most of my career has been product-oriented.&lt;/p&gt;

&lt;p&gt;I've worked on products ranging from fintech and logistics to SaaS, internal business systems, ecommerce, AI workflows, APIs, infrastructure, and customer-facing applications.&lt;/p&gt;

&lt;p&gt;So instead of making the portfolio primarily about technologies, I reorganized it around &lt;strong&gt;actual work and engineering ownership&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The new version currently includes 12 case studies.&lt;/p&gt;

&lt;p&gt;Some examples:&lt;/p&gt;

&lt;h3&gt;
  
  
  Visionboarder
&lt;/h3&gt;

&lt;p&gt;A social vision-board product where my work extends across the customer application, admin tooling, backend systems, AI features and workflows using open-source AI models, media processing, databases, infrastructure, and deployment.&lt;/p&gt;

&lt;p&gt;That includes models and systems around LTX-2.3, LTX-2.5, FLUX.1, FLUX.2, Z-Image Turbo, content moderation, NSFW detection, image/video generation, and related workflows.&lt;/p&gt;

&lt;p&gt;The wider stack includes things like Next.js, React, TypeScript, Go, Python, RabbitMQ, Redis, PostgreSQL, serverless AI model deployment on RunPod, Docker, Kubernetes, and CI/CD.&lt;/p&gt;

&lt;p&gt;But the interesting part isn't really the stack.&lt;/p&gt;

&lt;p&gt;It is owning the path from a product requirement all the way to a production system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kotak Gateway / Kotak Neo
&lt;/h3&gt;

&lt;p&gt;I worked on SDK and API-driven experiences for integrating investment and trading journeys into other products.&lt;/p&gt;

&lt;p&gt;This kind of work taught me a lot about building software where your own application isn't the only thing that matters.&lt;/p&gt;

&lt;p&gt;The integration experience, API contracts, reliability, communication between teams, backward compatibility, and developer experience become part of the product too.&lt;/p&gt;

&lt;h3&gt;
  
  
  SITA Operations Platform
&lt;/h3&gt;

&lt;p&gt;An internal product that helped move operational work away from spreadsheet-based coordination and into a proper application.&lt;/p&gt;

&lt;p&gt;Not every valuable engineering problem needs a new AI model or a complicated distributed architecture.&lt;/p&gt;

&lt;p&gt;Sometimes the most valuable system is the one that removes an inefficient workflow people have tolerated for years.&lt;/p&gt;

&lt;h3&gt;
  
  
  EasyGlobalShip
&lt;/h3&gt;

&lt;p&gt;A shipping platform for Indian ecommerce sellers covering areas such as rates, shipment booking, labels, customs documentation, and tracking.&lt;/p&gt;

&lt;p&gt;This was one of the projects that reinforced something I still strongly believe:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding the business problem often matters more than choosing an impressive technology.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And there are several other projects covering contract management, hospitality, workspace booking, internal audit systems, ecommerce, and different stages of my engineering journey.&lt;/p&gt;

&lt;h2&gt;
  
  
  My stack became wider because the problems became wider
&lt;/h2&gt;

&lt;p&gt;I started my career much closer to traditional web development.&lt;/p&gt;

&lt;p&gt;PHP.  WordPress. Laravel. JavaScript.&lt;/p&gt;

&lt;p&gt;Then the problems changed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Frontend applications became more complex.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I moved deeper into React and TypeScript.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backend requirements pushed me further into Node.js and Go.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI products&lt;/strong&gt; brought Python and model-serving workflows into the picture.&lt;/p&gt;

&lt;p&gt;Running those systems meant working more seriously with PostgreSQL, Redis, queues like RabbitMQ and Kafka, Docker, Kubernetes, OpenTofu, CI/CD, observability, and infrastructure.&lt;/p&gt;

&lt;p&gt;At some point I stopped thinking of myself primarily as a developer for a particular framework.&lt;/p&gt;

&lt;p&gt;The question became:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What does this product need in order to work well?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sometimes that's a React interface.&lt;/p&gt;

&lt;p&gt;Sometimes it's a Go service.&lt;/p&gt;

&lt;p&gt;Sometimes it's a Python worker running an AI model.&lt;/p&gt;

&lt;p&gt;Sometimes it's redesigning the database.&lt;/p&gt;

&lt;p&gt;Sometimes it's fixing the deployment system.&lt;/p&gt;

&lt;p&gt;And sometimes the correct answer is removing complexity rather than adding another service.&lt;/p&gt;

&lt;h2&gt;
  
  
  One thing AI has changed for me
&lt;/h2&gt;

&lt;p&gt;The last couple of years have obviously changed software development.&lt;/p&gt;

&lt;p&gt;For the past few months, I've been using AI much more heavily throughout my development workflow. Before that, I mostly used it for smaller fixes, research, and occasional assistance.&lt;/p&gt;

&lt;p&gt;But I don't think the interesting part is simply generating more code.&lt;/p&gt;

&lt;p&gt;The bigger advantage is shortening the distance between:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;idea → exploration → documentation / product standards → specs → implementation → validation → iteration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI can help investigate a codebase, generate repetitive implementation work, compare approaches, write tests, search for edge cases, review assumptions, and even challenge decisions.&lt;/p&gt;

&lt;p&gt;That gives me more room to think about architecture, product behaviour, failure modes, trade-offs, and the decisions that are difficult to automate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I still think engineering judgment becomes &lt;em&gt;more&lt;/em&gt; important in an AI-assisted development environment, not less.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Generating 5,000 lines of code is becoming cheap.&lt;/p&gt;

&lt;p&gt;Knowing whether those 5,000 lines should exist is still valuable.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I wanted this portfolio to show
&lt;/h2&gt;

&lt;p&gt;I didn't want the new site to say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Here are 30 technologies I know. Please hire me.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I wanted someone looking through it to understand how I actually work.&lt;/p&gt;

&lt;p&gt;Can I enter an existing product and understand it?&lt;/p&gt;

&lt;p&gt;Can I take ownership of something ambiguous?&lt;/p&gt;

&lt;p&gt;Can I work across frontend and backend?&lt;/p&gt;

&lt;p&gt;Can I build an API rather than only consume one?&lt;/p&gt;

&lt;p&gt;Can I deal with infrastructure and deployment?&lt;/p&gt;

&lt;p&gt;Can I integrate AI without turning the whole architecture into an AI demo?&lt;/p&gt;

&lt;p&gt;Can I work directly with founders, product owners, and engineering teams?&lt;/p&gt;

&lt;p&gt;Can I take something from an idea to production?&lt;/p&gt;

&lt;p&gt;Those are much more useful questions than whether I have used Framework X for exactly four or six years.&lt;/p&gt;

&lt;h2&gt;
  
  
  I'm also open to the right next project
&lt;/h2&gt;

&lt;p&gt;I'm currently open to &lt;strong&gt;remote opportunities and engineering engagements&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That can mean a focused contract, a longer-term product engagement, or the right senior full-stack / product engineering role.&lt;/p&gt;

&lt;p&gt;I'm particularly interested in work involving:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;building or scaling products&lt;/li&gt;
&lt;li&gt;backend and distributed systems&lt;/li&gt;
&lt;li&gt;Go, Python, TypeScript, and React&lt;/li&gt;
&lt;li&gt;AI-enabled products and workflows&lt;/li&gt;
&lt;li&gt;APIs and integrations&lt;/li&gt;
&lt;li&gt;ecommerce and commerce infrastructure&lt;/li&gt;
&lt;li&gt;developer tooling and internal systems&lt;/li&gt;
&lt;li&gt;infrastructure, CI/CD, and production engineering&lt;/li&gt;
&lt;li&gt;products where I can own a meaningful outcome rather than just close isolated tickets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm based in India and comfortable working with distributed teams across time zones.&lt;/p&gt;

&lt;p&gt;But I'm not trying to optimize purely for finding &lt;em&gt;any&lt;/em&gt; available work.&lt;/p&gt;

&lt;p&gt;I'm much more interested in finding products where engineering has a meaningful impact on what gets built and where ownership is valued.&lt;/p&gt;

&lt;p&gt;If you're building something interesting, need another experienced engineer on an existing system, or simply want to compare notes on product engineering, feel free to reach out.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://keshavkjha.com" rel="noopener noreferrer"&gt;https://keshavkjha.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>portfolio</category>
      <category>programming</category>
      <category>developers</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>keshav jha</dc:creator>
      <pubDate>Tue, 31 Dec 2024 13:52:01 +0000</pubDate>
      <link>https://dev.to/mekkj98/-42in</link>
      <guid>https://dev.to/mekkj98/-42in</guid>
      <description></description>
      <category>emptystring</category>
    </item>
    <item>
      <title>Seeking Opportunities as a Software Engineer</title>
      <dc:creator>keshav jha</dc:creator>
      <pubDate>Tue, 17 Sep 2024 12:50:56 +0000</pubDate>
      <link>https://dev.to/mekkj98/exploring-new-horizons-seeking-opportunities-as-a-software-engineer-55pn</link>
      <guid>https://dev.to/mekkj98/exploring-new-horizons-seeking-opportunities-as-a-software-engineer-55pn</guid>
      <description>&lt;p&gt;Hello Dev.to community,&lt;/p&gt;

&lt;p&gt;I hope this post finds you all in great spirits!&lt;/p&gt;

&lt;p&gt;I'm excited to share that I’m currently on the lookout for new opportunities as a Software Engineer. Over the past 3+ years, I’ve had the chance to work on a variety of intriguing projects, and I’d love to take this opportunity to reflect on my journey and the skills I bring to the table.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Journey Through Innovation
&lt;/h3&gt;

&lt;p&gt;My career has taken me through a range of experiences:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Advanced Trading Solutions&lt;/strong&gt;: I contributed to the development of an advanced trading solution for &lt;strong&gt;Kotak Securities&lt;/strong&gt;, enhancing their FinTech offerings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Travel Management Platform&lt;/strong&gt;: At &lt;strong&gt;Sita.in&lt;/strong&gt;, I helped build a modular UI that streamlined their travel management platform, driving operational efficiency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Social Media Application&lt;/strong&gt;: Most recently, I led the end-to-end development of a social media platform focused on vision boards, akin to Pinterest. This project allowed me to leverage my full stack skills, including integrating &lt;strong&gt;machine learning&lt;/strong&gt; for NSFW moderation and &lt;strong&gt;text-to-image AI&lt;/strong&gt; generation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Skills and Expertise
&lt;/h3&gt;

&lt;p&gt;Here’s a snapshot of the technologies and methodologies I’ve been working with:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HTML5,  CSS3, Talwindcss, SCSS, JavaScript, Typescript, Node.Js, Prisma.JS, React, Zustand, Redux, Redux Saga, Next.JS, Svelte, Sveltekit, GIT, AWS, Azure, Go(Golang),  SQL, RabbitMQ, REST APIs.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My experience spans creating scalable solutions, delving into cloud technologies, and building robust event-driven architectures. I’m passionate about crafting efficient, scalable solutions and continuously learning to stay at the cutting edge of technology.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I’m Looking For
&lt;/h3&gt;

&lt;p&gt;I am eager to connect with teams and projects that are driven by innovation and creativity. Whether you're looking for a full-time engineer or a contract-based role, I am open to exploring various opportunities where I can contribute my skills and grow further.&lt;/p&gt;

&lt;h3&gt;
  
  
  Let’s Connect
&lt;/h3&gt;

&lt;p&gt;If you’re interested in discussing potential opportunities or just want to chat about technology and development, feel free to reach out to me directly here on Dev.to or drop me an email at &lt;a href="mailto:keshavkumarjha890@gmail.com"&gt;keshavkumarjha890@gmail.com&lt;/a&gt; or connect with me on &lt;a href="https://www.linkedin.com/in/mekkj98/" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Resume: &lt;a href="https://www.linkedin.com/in/mekkj98/overlay/1722228688891/single-media-viewer?type=DOCUMENT&amp;amp;profileId=ACoAACOaZs8BeMZ38Tvr5_jyaOK8SM9SwEBgY14&amp;amp;lipi=urn%3Ali%3Apage%3Ad_flagship3_profile_view_base%3BouKelL4KTlSooH7CqzY5bA%3D%3D" rel="noopener noreferrer"&gt;Linkedin link&lt;/a&gt;&lt;br&gt;
Looking forward to connecting with you and exploring new horizons!&lt;/p&gt;

&lt;p&gt;Best regards,&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Keshav Jha&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>webdev</category>
    </item>
    <item>
      <title>leetcode: Median of Two Sorted Arrays Problem in C++</title>
      <dc:creator>keshav jha</dc:creator>
      <pubDate>Thu, 11 Apr 2024 14:08:03 +0000</pubDate>
      <link>https://dev.to/mekkj98/leetcodehard-median-of-two-sorted-arrays-problem-in-c-2i52</link>
      <guid>https://dev.to/mekkj98/leetcodehard-median-of-two-sorted-arrays-problem-in-c-2i52</guid>
      <description>&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;Finding the median of two sorted arrays efficiently. In this blog post, we'll explore how to solve this problem in C++, achieving a runtime complexity of O(log(m+n)).&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem Statement:
&lt;/h2&gt;

&lt;p&gt;Given two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays.&lt;/p&gt;

&lt;p&gt;The overall run time complexity should be O(log (m+n)).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example 1:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Input: nums1 = [1,3], nums2 = [2]&lt;br&gt;
Output: 2.00000&lt;br&gt;
Explanation: merged array = [1,2,3] and median is 2.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example 2:&lt;/strong&gt;&lt;br&gt;
Input: nums1 = [1,2], nums2 = [3,4]&lt;br&gt;
Output: 2.50000&lt;br&gt;
Explanation: merged array = [1,2,3,4] and median is (2 + 3) / 2 = 2.5.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Constraints:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;code&gt;nums1.length == m&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nums2.length == n&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;0 &amp;lt;= m &amp;lt;= 1000&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;0 &amp;lt;= n &amp;lt;= 1000&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;1 &amp;lt;= m + n &amp;lt;= 2000&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-106 &amp;lt;= nums1[i], nums2[i] &amp;lt;= 106&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Approach:
&lt;/h2&gt;

&lt;p&gt;To solve this problem efficiently, we'll utilise the binary search algorithm. The key insight is to partition the arrays &lt;code&gt;nums1&lt;/code&gt; and &lt;code&gt;nums2&lt;/code&gt; into two parts such that the elements on the left side are smaller than or equal to the elements on the right side. This partition should be such that the length of the left partition is equal to or one element larger than the length of the right partition.&lt;/p&gt;

&lt;h2&gt;
  
  
  Algorithm:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Ensure &lt;code&gt;nums1&lt;/code&gt; is not larger than &lt;code&gt;nums2&lt;/code&gt;. If it is, swap them.&lt;/li&gt;
&lt;li&gt;Initialize &lt;code&gt;low&lt;/code&gt; and &lt;code&gt;high&lt;/code&gt; as 0 and the length of &lt;code&gt;nums1&lt;/code&gt;, respectively.&lt;/li&gt;
&lt;li&gt;Perform a binary search on &lt;code&gt;nums1&lt;/code&gt; to find the correct partition &lt;code&gt;partN1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Calculate the corresponding partition &lt;code&gt;partN2&lt;/code&gt; in &lt;code&gt;nums2&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Determine the maximum elements (&lt;code&gt;mxLN1&lt;/code&gt; and &lt;code&gt;mxLN2&lt;/code&gt;) on the left side and the minimum elements (&lt;code&gt;minRN1&lt;/code&gt; and &lt;code&gt;minRN2&lt;/code&gt;) on the right side.&lt;/li&gt;
&lt;li&gt;Check if the partitioning is correct, ensuring that &lt;code&gt;mxLN1 &amp;lt;= minRN2&lt;/code&gt; and &lt;code&gt;mxLN2 &amp;lt;= minRN1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If the partitioning is correct, calculate the median based on the lengths of &lt;code&gt;nums1&lt;/code&gt; and &lt;code&gt;nums2&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Adjust &lt;code&gt;low&lt;/code&gt; and &lt;code&gt;high&lt;/code&gt; based on the comparison of &lt;code&gt;mxLN1&lt;/code&gt; and &lt;code&gt;minRN2&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Repeat the binary search until the correct partition is found.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Code C++
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="nl"&gt;public:&lt;/span&gt;
    &lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;findMedianSortedArrays&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vector&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;nums1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;vector&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;nums2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;unsigned&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nums1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nums2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kt"&gt;double&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&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="n"&gt;nums2&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;nums2&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;m&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="o"&gt;/&lt;/span&gt; &lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;nums2&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;m&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="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&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="n"&gt;nums1&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;nums1&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;n&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="o"&gt;/&lt;/span&gt; &lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;nums1&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;n&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="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;m&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="n"&gt;findMedianSortedArrays&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nums2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nums1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;low&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;high&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;low&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;high&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;partN1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;low&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;high&lt;/span&gt;&lt;span class="p"&gt;)&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="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;partN2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;partN1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

            &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;mxLN1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;partN1&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="n"&gt;INT_MIN&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;nums1&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;partN1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
            &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;minRN1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;partN1&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="n"&gt;INT_MAX&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;nums1&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;partN1&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

            &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;mxLN2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;partN2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="n"&gt;INT_MIN&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;nums2&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;partN2&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
            &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;minRN2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;partN2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="n"&gt;INT_MAX&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;nums2&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;partN2&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mxLN1&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;minRN2&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;mxLN2&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;minRN1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&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="n"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mxLN1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mxLN2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;minRN1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;minRN2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mxLN1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mxLN2&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;span class="k"&gt;else&lt;/span&gt; &lt;span class="nf"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mxLN1&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;minRN2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;high&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;partN1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;low&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;partN1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&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;span class="k"&gt;return&lt;/span&gt; &lt;span class="mf"&gt;0.0&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;
  
  
  Code Explanation:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;We handle edge cases where one of the arrays is empty or both arrays are empty.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We ensure that the length of &lt;code&gt;nums1&lt;/code&gt; is smaller or equal to the length of &lt;code&gt;nums2&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We perform a binary search to find the correct partition in &lt;code&gt;nums1&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We calculate the corresponding partition in &lt;code&gt;nums2&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We check if the partitioning is correct and calculate the median accordingly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We adjust the search space based on the comparison of elements.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Complexity Analysis:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Time Complexity: O(log(min(m, n))) - The binary search is performed on the smaller array.&lt;/li&gt;
&lt;li&gt;Space Complexity: O(1) - Only a constant amount of extra space is used.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;We discussed how to efficiently solve the median of two sorted arrays problem in C++ using a binary search approach. By partitioning the arrays intelligently, we were able to achieve a runtime complexity of O(log(m+n)).&lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>datastructures</category>
      <category>cpp</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Change Themes in Next.js 14 without Wrapping Children in Context .</title>
      <dc:creator>keshav jha</dc:creator>
      <pubDate>Wed, 10 Apr 2024 11:51:15 +0000</pubDate>
      <link>https://dev.to/mekkj98/implement-theme-provider-to-change-themes-without-wrapping-children-in-context-in-nextjsreactjs-1ak2</link>
      <guid>https://dev.to/mekkj98/implement-theme-provider-to-change-themes-without-wrapping-children-in-context-in-nextjsreactjs-1ak2</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In Web applications, theming plays a crucial role in providing a personalised and visually appealing user experience. One common approach is to use a &lt;code&gt;ThemeProvider&lt;/code&gt; Context to manage themes across the application. There is no problem with application's which is completely client side. This blog is specific to developer who is looking for a solution where there application is combination of client and server components and theming depends on &lt;code&gt;color-schema&lt;/code&gt; or &lt;code&gt;className&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;With the release of Next.js 14+, wrapping children in a Context will make children a client component. In this blog post, we'll explore how to implement a ThemeProvider which will help us to avoid wrapping complete application into a Context provider.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementing Theme Provider in Next.js 14+
&lt;/h2&gt;

&lt;p&gt;To implement the Theme Provider without wrapping children in Context, we'll follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Install Dependencies&lt;/strong&gt;: Ensure you have the necessary dependencies installed, including &lt;code&gt;next-themes&lt;/code&gt; for theme management and &lt;code&gt;cookies-next&lt;/code&gt; for cookies management.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Create Theme Provider Component&lt;/strong&gt;: Develop a custom &lt;code&gt;ThemeProvider&lt;/code&gt; component that handles theme switching and cookie management.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Integrate Theme Provider&lt;/strong&gt;: Integrate the &lt;code&gt;ThemeProvider&lt;/code&gt; component into your application layout to make sure client theming is synced with server on hydration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use Theme Switcher&lt;/strong&gt; : Integrate the &lt;code&gt;ThemeProvider&lt;/code&gt; component into your application to switch theme.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let's dive deeper into each step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Install Dependencies
&lt;/h2&gt;

&lt;p&gt;First, make sure you have &lt;code&gt;next-themes&lt;/code&gt; installed in your Next.js project. If not, you can install it using npm or yarn:&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;next-themes cookies-next
&lt;span class="c"&gt;# or&lt;/span&gt;
yarn add next-themes cookies-next
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 2: Create Theme Provider Component
&lt;/h2&gt;

&lt;p&gt;In your project, create a custom &lt;code&gt;ThemeProvider&lt;/code&gt; component that leverages &lt;code&gt;next-themes&lt;/code&gt; for theme management. This component will handle theme switching and cookie management for server-side rendering.&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;// components/context/theme.tsx&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;setCookie&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="s2"&gt;cookies-next&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ThemeProvider&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;useTheme&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="s2"&gt;next-themes&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ThemeProviderProps&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="s2"&gt;next-themes/dist/types&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useEffect&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="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Application theme provider&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;AppThemeProvider&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt; &lt;span class="p"&gt;}:&lt;/span&gt; &lt;span class="nx"&gt;ThemeProviderProps&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;ThemeProvider&lt;/span&gt; &lt;span class="na"&gt;enableColorScheme&lt;/span&gt; &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;props&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;AppThemeProviderHelper&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;ThemeProvider&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;span class="c1"&gt;// Helper component to set theme in cookie&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;AppThemeProviderHelper&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useTheme&lt;/span&gt;&lt;span class="p"&gt;();&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="nf"&gt;setCookie&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;__theme__&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;expires&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;365&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;"&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;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;AppThemeProvider&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 3: Integrate Theme Provider
&lt;/h2&gt;

&lt;p&gt;Now, integrate the &lt;code&gt;ThemeProvider&lt;/code&gt; component into your application layout in your &lt;code&gt;app/layout.tsx&lt;/code&gt; file or any child layout as per requirement:&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;MonaSans_Font&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="s2"&gt;@/assets/fonts/MonaSans&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;dynamic&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;next/dynamic&lt;/span&gt;&lt;span class="dl"&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;AppThemeProvider&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;dynamic&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;import&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@/components/context/theme&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;ssr&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;AppLayout&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="nx"&gt;children&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;span class="nl"&gt;children&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ReactNode&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;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;__theme__&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)?.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;system&lt;/span&gt;&lt;span class="dl"&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="nt"&gt;html&lt;/span&gt;
      &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;theme&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
      &lt;span class="na"&gt;lang&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"en"&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="nx"&gt;theme&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;system&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;colorScheme&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;theme&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;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;body&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;MonaSans_Font&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; flex flex-col h-full w-full overflow-hidden`&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;

        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AppThemeProvider&lt;/span&gt; 
           &lt;span class="na"&gt;attribute&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"class"&lt;/span&gt; 
           &lt;span class="na"&gt;defaultTheme&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;theme&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; 
           &lt;span class="na"&gt;enableSystem&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;body&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;html&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;h2&gt;
  
  
  Step 4: Integrate Theme Provider in Theme Switching
&lt;/h2&gt;

&lt;p&gt;A Tab's based switcher can be created as below to switch theme Using &lt;code&gt;AppThemeProvider&lt;/code&gt;.&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;use client&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;AppThemeProvider&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@/components/context/theme&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Tabs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;TabsList&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;TabsTrigger&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="s2"&gt;ui/components/tabs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useTheme&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="s2"&gt;next-themes&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;Tab&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;setTheme&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useTheme&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;Tabs&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"w-full"&lt;/span&gt; &lt;span class="na"&gt;onValueChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;setTheme&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;theme&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;TabsList&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"grid w-full grid-cols-3"&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;TabsTrigger&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"light"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Light&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;TabsTrigger&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;TabsTrigger&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"dark"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Dark&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;TabsTrigger&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;TabsTrigger&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"system"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;System&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;TabsTrigger&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;TabsList&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;Tabs&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;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;ThemeTabs&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;AppThemeProvider&lt;/span&gt; &lt;span class="na"&gt;attribute&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"class"&lt;/span&gt; &lt;span class="na"&gt;defaultTheme&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"system"&lt;/span&gt; &lt;span class="na"&gt;enableSystem&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;Tab&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;AppThemeProvider&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;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;ThemeTabs&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;Implementing a Theme Provider in Next.js 14+ without wrapping children in Context offers a cleaner and more efficient way to manage themes in your application without making complete application a client component. &lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>tailwindcss</category>
    </item>
    <item>
      <title>Leetcode: Reveal Cards In Increasing Order</title>
      <dc:creator>keshav jha</dc:creator>
      <pubDate>Wed, 10 Apr 2024 07:24:52 +0000</pubDate>
      <link>https://dev.to/mekkj98/reveal-cards-in-increasing-order-leetcode-950-32n5</link>
      <guid>https://dev.to/mekkj98/reveal-cards-in-increasing-order-leetcode-950-32n5</guid>
      <description>&lt;h2&gt;
  
  
  &lt;a href="https://leetcode.com/problems/reveal-cards-in-increasing-order/description/" rel="noopener noreferrer"&gt;Revealing a Deck of Cards in Increasing Order&lt;/a&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Description
&lt;/h3&gt;

&lt;p&gt;You are given an integer array deck. There is a deck of cards where every card has a unique integer. The integer on the ith card is deck[i].&lt;/p&gt;

&lt;p&gt;You can order the deck in any order you want. Initially, all the cards start face down (unrevealed) in one deck.&lt;/p&gt;

&lt;p&gt;You will do the following steps repeatedly until all cards are revealed:&lt;/p&gt;

&lt;p&gt;Take the top card of the deck, reveal it, and take it out of the deck.&lt;br&gt;
If there are still cards in the deck then put the next top card of the deck at the bottom of the deck.&lt;br&gt;
If there are still unrevealed cards, go back to step 1. Otherwise, stop.&lt;br&gt;
Return an ordering of the deck that would reveal the cards in increasing order.&lt;/p&gt;

&lt;p&gt;Note that the first entry in the answer is considered to be the top of the deck.&lt;/p&gt;

&lt;p&gt;Example 1:&lt;/p&gt;

&lt;p&gt;Input: deck = [17,13,11,2,3,5,7]&lt;br&gt;
Output: [2,13,3,11,5,17,7]&lt;br&gt;
Explanation: &lt;br&gt;
We get the deck in the order &lt;a href="https://dev.tothis%20order%20does%20not%20matter"&gt;17,13,11,2,3,5,7&lt;/a&gt;, and reorder it.&lt;br&gt;
After reordering, the deck starts as [2,13,3,11,5,17,7], where 2 is the top of the deck.&lt;br&gt;
We reveal 2, and move 13 to the bottom.  The deck is now [3,11,5,17,7,13].&lt;br&gt;
We reveal 3, and move 11 to the bottom.  The deck is now [5,17,7,13,11].&lt;br&gt;
We reveal 5, and move 17 to the bottom.  The deck is now [7,13,11,17].&lt;br&gt;
We reveal 7, and move 13 to the bottom.  The deck is now [11,17,13].&lt;br&gt;
We reveal 11, and move 17 to the bottom.  The deck is now [13,17].&lt;br&gt;
We reveal 13, and move 17 to the bottom.  The deck is now [17].&lt;br&gt;
We reveal 17.&lt;br&gt;
Since all the cards revealed are in increasing order, the answer is correct.&lt;br&gt;
Example 2:&lt;/p&gt;

&lt;p&gt;Input: deck = [1,1000]&lt;br&gt;
Output: [1,1000]&lt;/p&gt;

&lt;p&gt;Constraints:&lt;/p&gt;

&lt;p&gt;1 &amp;lt;= deck.length &amp;lt;= 1000&lt;br&gt;
1 &amp;lt;= deck[i] &amp;lt;= 106&lt;br&gt;
All the values of deck are unique.&lt;/p&gt;



&lt;p&gt;Revealing a deck of cards in increasing order can be a fascinating problem to solve efficiently. In this article, we'll explore an approach that utilises a specific pattern to reveal the cards in ascending order, considering a given initial ordering.&lt;/p&gt;
&lt;h3&gt;
  
  
  Approach
&lt;/h3&gt;

&lt;p&gt;By observing the behaviour from the bottom to the top of the sorted deck, I notice a repetitive process: pop the last element, place it at the beginning, and insert the next element from the original deck also at the beginning. This pattern ensures that the revealed deck ends up in increasing order.&lt;/p&gt;
&lt;h3&gt;
  
  
  Complexity Analysis
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Time Complexity&lt;/strong&gt;: Sorting the deck initially dominates the time complexity. We use the &lt;code&gt;sort()&lt;/code&gt; function, which typically employs an efficient sorting algorithm such as QuickSort. Therefore, the time complexity of sorting is O(n log n), where n is the size of the deck. However, if the deck is already sorted, the time complexity reduces to O(n) as there would be no need for sorting.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Space Complexity&lt;/strong&gt;: The space complexity is O(n) since we use an additional vector to store the revealed deck.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Implementation
&lt;/h3&gt;

&lt;p&gt;Here's a C++ implementation of the above approach:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="nl"&gt;public:&lt;/span&gt;
    &lt;span class="n"&gt;vector&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;deckRevealedIncreasing&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vector&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;deck&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Sort the deck in descending order&lt;/span&gt;
        &lt;span class="n"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;deck&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;begin&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;deck&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;greater&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

        &lt;span class="c1"&gt;// Initialize a vector to store the revealed deck&lt;/span&gt;
        &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;vector&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;revealedDeck&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;// Iterate through the sorted deck to reveal cards in increasing order&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;card&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;deck&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;revealedDeck&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;empty&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;revealedDeck&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;insert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;revealedDeck&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;begin&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;card&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="c1"&gt;// Pop the last card and place it at the beginning&lt;/span&gt;
                &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;lastCard&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;revealedDeck&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;back&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
                &lt;span class="n"&gt;revealedDeck&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pop_back&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
                &lt;span class="n"&gt;revealedDeck&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;insert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;revealedDeck&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;begin&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;lastCard&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
                &lt;span class="c1"&gt;// Insert the next card from the original deck at the beginning&lt;/span&gt;
                &lt;span class="n"&gt;revealedDeck&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;insert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;revealedDeck&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;begin&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;card&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;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;revealedDeck&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;p&gt;By following this approach, we can efficiently reveal a deck of cards in increasing order based on a given initial ordering.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stats
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftt0cyj4v7h800vqn9ax0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftt0cyj4v7h800vqn9ax0.png" alt="LeetCode Performance for above solution" width="708" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>leetcode</category>
      <category>dsa</category>
      <category>programming</category>
    </item>
    <item>
      <title>Can i get a review or tips for my portfolio website?</title>
      <dc:creator>keshav jha</dc:creator>
      <pubDate>Mon, 04 May 2020 08:46:49 +0000</pubDate>
      <link>https://dev.to/mekkj98/can-i-get-a-review-or-tips-for-my-portfolio-website-4dd6</link>
      <guid>https://dev.to/mekkj98/can-i-get-a-review-or-tips-for-my-portfolio-website-4dd6</guid>
      <description>&lt;p&gt;Hello everyone!&lt;/p&gt;

&lt;p&gt;I'm graduating this year and got hired by a company through campus placement. But due to quarantine(coronavirus) joining is to be delayed. &lt;/p&gt;

&lt;p&gt;So I decided to work as a freelancer developer and joined Upwork. But so far got one project only. Then due to lack of works, I decided to build a small personal website for myself. So i can get more projects but no luck.&lt;/p&gt;

&lt;p&gt;LINK: &lt;a href="https://keshakjha.com" rel="noopener noreferrer"&gt;https://keshakjha.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's built using HTML,CSS(SCSS),JQuery(masonry) and hosted on netlify.&lt;/p&gt;

&lt;p&gt;I want you guys to review my portfolio and tell me, where do i lack or can improve. Also any suggestion for self improvement to get better opportunities are welcome.&lt;/p&gt;

&lt;p&gt;Thanks in advance.&lt;/p&gt;

</description>
      <category>portfolio</category>
      <category>webdev</category>
      <category>website</category>
      <category>review</category>
    </item>
  </channel>
</rss>
