<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Samachar]]></title><description><![CDATA[A newsletter about Sama, by Sama.]]></description><link>https://www.blog.sama.live</link><image><url>https://substackcdn.com/image/fetch/$s_!5Ijz!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa2446af-3cd6-4e5d-8b99-0437e4dd380e_1280x1280.png</url><title>Samachar</title><link>https://www.blog.sama.live</link></image><generator>Substack</generator><lastBuildDate>Sat, 04 Apr 2026 07:06:50 GMT</lastBuildDate><atom:link href="https://www.blog.sama.live/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Sama]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[samablog@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[samablog@substack.com]]></itunes:email><itunes:name><![CDATA[Sama]]></itunes:name></itunes:owner><itunes:author><![CDATA[Sama]]></itunes:author><googleplay:owner><![CDATA[samablog@substack.com]]></googleplay:owner><googleplay:email><![CDATA[samablog@substack.com]]></googleplay:email><googleplay:author><![CDATA[Sama]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Beyond Border-Radius]]></title><description><![CDATA[Implementing iOS-Style Squircles in React with CSS Houdini]]></description><link>https://www.blog.sama.live/p/beyond-border-radius</link><guid isPermaLink="false">https://www.blog.sama.live/p/beyond-border-radius</guid><dc:creator><![CDATA[Guruprasad Meena]]></dc:creator><pubDate>Sun, 09 Nov 2025 16:49:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_M_s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90598656-d6a7-4323-99ad-192fb1b2c4cb_1280x1596.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Introduction: The Problem with Perfect Circles</h2><p>As frontend developers, we&#8217;ve all used <code>border-radius</code> countless times. It&#8217;s simple, it works, and it&#8217;s supported everywhere. But have you ever noticed that heavily rounded corners on larger UI elements look&#8230; off? Not quite as polished as you&#8217;d expect in a premium application?</p><p>The issue isn&#8217;t with your design skills&#8212;it&#8217;s mathematics.</p><p>Standard CSS <code>border-radius</code> creates circular arcs with <strong>constant curvature</strong>. At the point where this curved corner meets the straight edge, there&#8217;s a <strong>discontinuity</strong>&#8212;the curvature jumps abruptly from zero to 1/r. While this is barely noticeable on small elements, it becomes increasingly jarring at larger sizes, creating a harsh, &#8220;cut off&#8221; appearance rather than a smooth, organic flow.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_M_s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90598656-d6a7-4323-99ad-192fb1b2c4cb_1280x1596.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_M_s!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90598656-d6a7-4323-99ad-192fb1b2c4cb_1280x1596.png 424w, https://substackcdn.com/image/fetch/$s_!_M_s!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90598656-d6a7-4323-99ad-192fb1b2c4cb_1280x1596.png 848w, https://substackcdn.com/image/fetch/$s_!_M_s!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90598656-d6a7-4323-99ad-192fb1b2c4cb_1280x1596.png 1272w, https://substackcdn.com/image/fetch/$s_!_M_s!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90598656-d6a7-4323-99ad-192fb1b2c4cb_1280x1596.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_M_s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90598656-d6a7-4323-99ad-192fb1b2c4cb_1280x1596.png" width="1280" height="1596" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/90598656-d6a7-4323-99ad-192fb1b2c4cb_1280x1596.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1596,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot 2025-11-03 at 10.34.18 AM&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot 2025-11-03 at 10.34.18 AM" title="Screenshot 2025-11-03 at 10.34.18 AM" srcset="https://substackcdn.com/image/fetch/$s_!_M_s!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90598656-d6a7-4323-99ad-192fb1b2c4cb_1280x1596.png 424w, https://substackcdn.com/image/fetch/$s_!_M_s!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90598656-d6a7-4323-99ad-192fb1b2c4cb_1280x1596.png 848w, https://substackcdn.com/image/fetch/$s_!_M_s!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90598656-d6a7-4323-99ad-192fb1b2c4cb_1280x1596.png 1272w, https://substackcdn.com/image/fetch/$s_!_M_s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90598656-d6a7-4323-99ad-192fb1b2c4cb_1280x1596.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Enter <strong>squircles</strong>&#8212;the smooth rounded rectangles that Apple has used throughout iOS since 2013. In this article, I&#8217;ll walk you through implementing true squircles in React using CSS Houdini&#8217;s Paint API, sharing the technical decisions and mathematical foundations behind our <code>TabSwitcher</code> component.</p><h2>What Exactly Is a Squircle?</h2><p>The term &#8220;squircle&#8221; is a portmanteau of <strong>square + circle</strong>, but the mathematics behind it are far more elegant than the name suggests.</p><h3>Mathematical Foundation: The Superellipse</h3><p>Squircles belong to a family of curves called <strong>superellipses</strong> (also known as <strong>Lam&#233; curves</strong>), named after French mathematician Gabriel Lam&#233; (1795-1870).</p><p><strong>General Formula:</strong></p><pre><code><code>|x/a|&#8319; + |y/b|&#8319; = 1</code>
</code></pre><p>Where:</p><ul><li><p><code>a</code> and <code>b</code> are the semi-major and semi-minor axes</p></li><li><p><code>n</code> is the exponent that determines the curve&#8217;s character</p></li></ul><p><strong>The Shape Spectrum:</strong></p><ul><li><p><code>n = 1</code>: Diamond (rhombus)</p></li><li><p><code>n = 2</code>: Circle or ellipse</p></li><li><p><code>n &#8776; 4</code>: <strong>Squircle</strong> (most common in UI)</p></li><li><p><code>n = 5.2</code>: Apple&#8217;s iOS icon shape (with modifications)</p></li><li><p><code>n &#8594; &#8734;</code>: Rectangle with sharp corners</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!b0PP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99016085-d508-4fa0-a21e-a82fd2ef54dc_1956x1658.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b0PP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99016085-d508-4fa0-a21e-a82fd2ef54dc_1956x1658.png 424w, https://substackcdn.com/image/fetch/$s_!b0PP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99016085-d508-4fa0-a21e-a82fd2ef54dc_1956x1658.png 848w, https://substackcdn.com/image/fetch/$s_!b0PP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99016085-d508-4fa0-a21e-a82fd2ef54dc_1956x1658.png 1272w, https://substackcdn.com/image/fetch/$s_!b0PP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99016085-d508-4fa0-a21e-a82fd2ef54dc_1956x1658.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b0PP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99016085-d508-4fa0-a21e-a82fd2ef54dc_1956x1658.png" width="1456" height="1234" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99016085-d508-4fa0-a21e-a82fd2ef54dc_1956x1658.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1234,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot 2025-11-03 at 10.38.40 AM&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot 2025-11-03 at 10.38.40 AM" title="Screenshot 2025-11-03 at 10.38.40 AM" srcset="https://substackcdn.com/image/fetch/$s_!b0PP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99016085-d508-4fa0-a21e-a82fd2ef54dc_1956x1658.png 424w, https://substackcdn.com/image/fetch/$s_!b0PP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99016085-d508-4fa0-a21e-a82fd2ef54dc_1956x1658.png 848w, https://substackcdn.com/image/fetch/$s_!b0PP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99016085-d508-4fa0-a21e-a82fd2ef54dc_1956x1658.png 1272w, https://substackcdn.com/image/fetch/$s_!b0PP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99016085-d508-4fa0-a21e-a82fd2ef54dc_1956x1658.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The magic happens around <code>n = 4</code>. At this value, you get a shape that:</p><ul><li><p>Has <strong>variable curvature</strong> that tightens as it approaches the corner&#8217;s deepest point</p></li><li><p>Gradually approaches zero curvature where it meets the straight edges</p></li><li><p>Creates a mathematically continuous, smooth transition</p></li><li><p>Looks more &#8220;natural&#8221; and &#8220;organic&#8221; to the human eye</p></li></ul><h3>Why Apple Chose Squircles</h3><p>When Apple redesigned iOS 7 in 2013, they made a conscious decision to use squircles for every app icon and UI element. Their reasoning?</p><ol><li><p><strong>Visual Harmony</strong>: Squircles maintain better visual balance across different element sizes</p></li><li><p><strong>Organic Feel</strong>: The variable curvature mimics curves found in nature</p></li><li><p><strong>Premium Perception</strong>: The subtle sophistication signals attention to detail</p></li><li><p><strong>Scalability</strong>: Works equally well at 40px and 400px</p></li></ol><p>This wasn&#8217;t just a design fad&#8212;it became an industry standard. Today, failing to use smooth corners can make an interface feel dated or &#8220;cheap&#8221; to users familiar with iOS.</p><h2>The CSS Houdini Solution</h2><p>So how do we implement squircles on the web? CSS alone can&#8217;t create superellipse curves&#8212;it&#8217;s limited to circles and ellipses for corner rounding. We need something more powerful.</p><h3>Enter CSS Houdini Paint API</h3><p>The <strong>CSS Houdini Paint API</strong> (officially the CSS Painting API Level 1) allows JavaScript to programmatically generate images that are integrated directly into the browser&#8217;s rendering engine. Think of it as a way to extend CSS with custom drawing logic.</p><p><strong>Key Characteristics:</strong></p><ul><li><p><strong>Worklets</strong>: Lightweight scripts that run during the render pipeline, off the main thread</p></li><li><p><strong>Thread-safe</strong>: Designed for parallelism (browsers create 2+ instances)</p></li><li><p><strong>First-cycle rendering</strong>: Included in initial paint, no FOUC (Flash of Unstyled Content)</p></li><li><p><strong>Hardware-accelerated</strong>: Leverages GPU where available</p></li></ul><p><strong>The Workflow:</strong></p><pre><code><code>1. Load worklet    &#8594;    2. Register paint    &#8594;    3. Use in CSS    &#8594;    4. Browser renders
   (once, in HTML)        (automatic)              (via custom properties)    (on each frame)
</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vUtk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd675fc5-a27a-43b3-b098-53074800f207_1752x1678.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vUtk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd675fc5-a27a-43b3-b098-53074800f207_1752x1678.png 424w, https://substackcdn.com/image/fetch/$s_!vUtk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd675fc5-a27a-43b3-b098-53074800f207_1752x1678.png 848w, https://substackcdn.com/image/fetch/$s_!vUtk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd675fc5-a27a-43b3-b098-53074800f207_1752x1678.png 1272w, https://substackcdn.com/image/fetch/$s_!vUtk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd675fc5-a27a-43b3-b098-53074800f207_1752x1678.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vUtk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd675fc5-a27a-43b3-b098-53074800f207_1752x1678.png" width="1456" height="1395" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bd675fc5-a27a-43b3-b098-53074800f207_1752x1678.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1395,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot 2025-11-03 at 10.42.06 AM&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot 2025-11-03 at 10.42.06 AM" title="Screenshot 2025-11-03 at 10.42.06 AM" srcset="https://substackcdn.com/image/fetch/$s_!vUtk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd675fc5-a27a-43b3-b098-53074800f207_1752x1678.png 424w, https://substackcdn.com/image/fetch/$s_!vUtk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd675fc5-a27a-43b3-b098-53074800f207_1752x1678.png 848w, https://substackcdn.com/image/fetch/$s_!vUtk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd675fc5-a27a-43b3-b098-53074800f207_1752x1678.png 1272w, https://substackcdn.com/image/fetch/$s_!vUtk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd675fc5-a27a-43b3-b098-53074800f207_1752x1678.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Browser Support Reality Check</h3><p><strong>Native Support</strong> (as of 2024):</p><ul><li><p>&#9989; Chrome/Edge 65+ (March 2018)</p></li><li><p>&#9989; Opera 52+</p></li><li><p>&#9989; Safari 15.4+ (March 2022)</p></li><li><p>&#10060; Firefox (not yet supported, but <a href="https://github.com/GoogleChromeLabs/css-paint-polyfill">polyfill available</a>)</p></li></ul><p>For production use, this covers ~85% of global browser traffic (excluding Firefox). The good news? Squircles degrade gracefully&#8212;unsupported browsers simply show elements without the mask, maintaining functionality.</p><h2>Implementation: TabSwitcher Component</h2><p>Let&#8217;s dive into the actual implementation. Our <code>TabSwitcher</code> component creates an iOS-style segmented control with smooth animated transitions between tabs.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V6xs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a34c6c-3c4c-4a8e-b948-edc4c10c798b_800x164.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V6xs!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a34c6c-3c4c-4a8e-b948-edc4c10c798b_800x164.gif 424w, https://substackcdn.com/image/fetch/$s_!V6xs!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a34c6c-3c4c-4a8e-b948-edc4c10c798b_800x164.gif 848w, https://substackcdn.com/image/fetch/$s_!V6xs!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a34c6c-3c4c-4a8e-b948-edc4c10c798b_800x164.gif 1272w, https://substackcdn.com/image/fetch/$s_!V6xs!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a34c6c-3c4c-4a8e-b948-edc4c10c798b_800x164.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V6xs!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a34c6c-3c4c-4a8e-b948-edc4c10c798b_800x164.gif" width="800" height="164" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/89a34c6c-3c4c-4a8e-b948-edc4c10c798b_800x164.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:164,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;ScreenRecording2025-11-03at11.20.42AM-ezgif.com-video-to-gif-converter (1)&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="ScreenRecording2025-11-03at11.20.42AM-ezgif.com-video-to-gif-converter (1)" title="ScreenRecording2025-11-03at11.20.42AM-ezgif.com-video-to-gif-converter (1)" srcset="https://substackcdn.com/image/fetch/$s_!V6xs!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a34c6c-3c4c-4a8e-b948-edc4c10c798b_800x164.gif 424w, https://substackcdn.com/image/fetch/$s_!V6xs!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a34c6c-3c4c-4a8e-b948-edc4c10c798b_800x164.gif 848w, https://substackcdn.com/image/fetch/$s_!V6xs!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a34c6c-3c4c-4a8e-b948-edc4c10c798b_800x164.gif 1272w, https://substackcdn.com/image/fetch/$s_!V6xs!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a34c6c-3c4c-4a8e-b948-edc4c10c798b_800x164.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h3>Step 1: Load the Squircle Worklet</h3><p>First, we load the <code>css-houdini-squircle</code> library in our <code>public/index.html</code>:</p><pre><code><code>&lt;!-- public/index.html --&gt;
&lt;head&gt;
  &lt;!-- ... other head content ... --&gt;

  &lt;!-- CSS Houdini Squircle --&gt;
  &lt;script&gt;
    if (&#8221;paintWorklet&#8221; in CSS) {
      CSS.paintWorklet.addModule(
        &#8220;https://www.unpkg.com/css-houdini-squircle/squircle.min.js&#8221;
      );
    }
  &lt;/script&gt;
&lt;/head&gt;
</code></code></pre><p><strong>Key points:</strong></p><ul><li><p><strong>Feature detection</strong>: <code>&#8220;paintWorklet&#8221; in CSS</code> checks for support</p></li><li><p><strong>CDN loading</strong>: Using unpkg for automatic updates and caching</p></li><li><p><strong>Early loading</strong>: In <code>&lt;head&gt;</code> before render to ensure worklet is available</p></li><li><p><strong>Size</strong>: ~3-5KB minified (negligible performance impact)</p></li></ul><h3>Step 2: The Container</h3><p>The outer container establishes the tab switcher&#8217;s overall shape:</p><pre><code><code>// src/assets/uiComponents/Navigations/TabSwitcher.js

&lt;div
  className=&#8221;inline-flex items-center gap-0.5 p-1 relative bg-gray-200&#8221;
  role=&#8221;tablist&#8221;
  style={{
    maskImage: &#8216;paint(squircle)&#8217;,
    WebkitMaskImage: &#8216;paint(squircle)&#8217;,
    &#8216;--squircle-radius&#8217;: &#8216;8px&#8217;,
    &#8216;--squircle-smooth&#8217;: &#8216;0.35&#8217;
  }}
&gt;
</code></code></pre><p><strong>Breakdown:</strong></p><ul><li><p><code>maskImage: &#8216;paint(squircle)&#8217;</code>: Invokes our custom paint worklet</p></li><li><p><code>WebkitMaskImage</code>: Webkit prefix for Safari compatibility</p></li><li><p><code>--squircle-radius: 8px</code>: Corner radius (similar to border-radius)</p></li><li><p><code>--squircle-smooth: 0.35</code>: Smoothness factor (0.1 = subtle, 1.0 = dramatic)</p></li></ul><p>The <code>maskImage</code> property applies the squircle shape as a mask&#8212;anything outside the squircle boundary becomes transparent.</p><h3>Step 3: The Sliding Indicator</h3><p>This is where it gets interesting. The active tab indicator uses a <strong>different smoothness value</strong> for visual emphasis:</p><pre><code><code>&lt;div
  className=&#8221;absolute h-8 shadow-sm transition-transform duration-500 ease-in-out&#8221;
  style={{
    background: accentColor,
    maskImage: &#8216;paint(squircle)&#8217;,
    WebkitMaskImage: &#8216;paint(squircle)&#8217;,
    &#8216;--squircle-radius&#8217;: &#8216;6px&#8217;,
    &#8216;--squircle-smooth&#8217;: &#8216;0.45&#8217;,  // More pronounced than container!
    width: `calc((100% - ${(tabs.length - 1) * 2}px - 8px) / ${tabs.length})`,
    transform: `translateX(calc(${activeTab} * 100% + ${activeTab * 2}px))`,
  }}
/&gt;
</code></code></pre><p><strong>Design Decisions:</strong></p><ol><li><p><strong>Smaller radius (6px vs 8px)</strong>: Creates a subtle inset effect&#8212;the indicator sits comfortably within the container</p></li><li><p><strong>Higher smoothness (0.45 vs 0.35)</strong>: The active indicator has more pronounced smooth corners, making it feel more &#8220;special&#8221; and drawing focus</p></li><li><p><strong>Dynamic width calculation</strong>: Accounts for gaps between tabs (2px each) and container padding (8px total)</p></li><li><p><strong>Transform-based animation</strong>: Smooth 500ms sliding using CSS transforms (hardware-accelerated)</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SNR_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06f3065a-e490-4ac7-8bca-6d43a403666a_2072x1692.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SNR_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06f3065a-e490-4ac7-8bca-6d43a403666a_2072x1692.png 424w, https://substackcdn.com/image/fetch/$s_!SNR_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06f3065a-e490-4ac7-8bca-6d43a403666a_2072x1692.png 848w, https://substackcdn.com/image/fetch/$s_!SNR_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06f3065a-e490-4ac7-8bca-6d43a403666a_2072x1692.png 1272w, https://substackcdn.com/image/fetch/$s_!SNR_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06f3065a-e490-4ac7-8bca-6d43a403666a_2072x1692.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SNR_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06f3065a-e490-4ac7-8bca-6d43a403666a_2072x1692.png" width="1456" height="1189" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06f3065a-e490-4ac7-8bca-6d43a403666a_2072x1692.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1189,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot 2025-11-03 at 10.49.48 AM&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot 2025-11-03 at 10.49.48 AM" title="Screenshot 2025-11-03 at 10.49.48 AM" srcset="https://substackcdn.com/image/fetch/$s_!SNR_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06f3065a-e490-4ac7-8bca-6d43a403666a_2072x1692.png 424w, https://substackcdn.com/image/fetch/$s_!SNR_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06f3065a-e490-4ac7-8bca-6d43a403666a_2072x1692.png 848w, https://substackcdn.com/image/fetch/$s_!SNR_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06f3065a-e490-4ac7-8bca-6d43a403666a_2072x1692.png 1272w, https://substackcdn.com/image/fetch/$s_!SNR_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06f3065a-e490-4ac7-8bca-6d43a403666a_2072x1692.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_09H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708a1ad8-2f14-4fc6-b560-f9d24e362b85_2074x1388.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_09H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708a1ad8-2f14-4fc6-b560-f9d24e362b85_2074x1388.png 424w, https://substackcdn.com/image/fetch/$s_!_09H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708a1ad8-2f14-4fc6-b560-f9d24e362b85_2074x1388.png 848w, https://substackcdn.com/image/fetch/$s_!_09H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708a1ad8-2f14-4fc6-b560-f9d24e362b85_2074x1388.png 1272w, https://substackcdn.com/image/fetch/$s_!_09H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708a1ad8-2f14-4fc6-b560-f9d24e362b85_2074x1388.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_09H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708a1ad8-2f14-4fc6-b560-f9d24e362b85_2074x1388.png" width="1456" height="974" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/708a1ad8-2f14-4fc6-b560-f9d24e362b85_2074x1388.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:974,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot 2025-11-03 at 10.50.06 AM&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot 2025-11-03 at 10.50.06 AM" title="Screenshot 2025-11-03 at 10.50.06 AM" srcset="https://substackcdn.com/image/fetch/$s_!_09H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708a1ad8-2f14-4fc6-b560-f9d24e362b85_2074x1388.png 424w, https://substackcdn.com/image/fetch/$s_!_09H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708a1ad8-2f14-4fc6-b560-f9d24e362b85_2074x1388.png 848w, https://substackcdn.com/image/fetch/$s_!_09H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708a1ad8-2f14-4fc6-b560-f9d24e362b85_2074x1388.png 1272w, https://substackcdn.com/image/fetch/$s_!_09H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708a1ad8-2f14-4fc6-b560-f9d24e362b85_2074x1388.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Step 4: The Tab Buttons</h3><pre><code><code>{tabs.map((tab, index) =&gt; {
  const isActive = activeTab === index;
  return (
    &lt;button
      key={tab?.id || index}
      onClick={() =&gt; setActiveTab(index)}
      className={`relative z-10 flex items-center justify-center gap-1.5
        whitespace-nowrap border-none bg-transparent h-8 px-3 w-auto
        transition-colors duration-300 ease-in-out overflow-hidden ${
        isActive ? &#8220;text-white&#8221; : &#8220;text-gray-400 hover:text-gray-600&#8221;
      }`}
      role=&#8221;tab&#8221;
      aria-selected={isActive}
      title={tab?.label}
    &gt;
      &lt;span className=&#8221;text-base&#8221;&gt;{tab?.icon}&lt;/span&gt;
      &lt;span className={`text-xs font-medium whitespace-nowrap
        transition-[max-width] duration-500 ease-in-out ${
        isActive || showLabelsOnInactive ? &#8216;max-w-full&#8217; : &#8216;max-w-0&#8217;
      }`}&gt;
        {tab?.label}
      &lt;/span&gt;
    &lt;/button&gt;
  );
})}
</code></code></pre><p><strong>Technical highlights:</strong></p><ul><li><p><code>z-10</code>: Ensures buttons sit above the sliding indicator</p></li><li><p>Color transitions sync with indicator animation (300ms vs 500ms for subtle lag effect)</p></li><li><p>Label expansion uses <code>max-width</code> transition (more performant than <code>width: auto</code>)</p></li><li><p>Proper ARIA attributes for accessibility</p></li></ul><h3>Complete Component</h3><p>Here&#8217;s the full <code>TabSwitcher</code> component:</p><pre><code><code>const TabSwitcher = ({
  tabs = [],
  activeTab,
  setActiveTab,
  accentColor = &#8220;#3b82f6&#8221;,
  showLabelsOnInactive = false
}) =&gt; {
  return (
    &lt;div className=&#8221;flex items-center justify-start w-full px-6 py-2&#8221;&gt;
      {/* Container with squircle mask */}
      &lt;div
        className=&#8221;inline-flex items-center gap-0.5 p-1 relative bg-gray-200&#8221;
        role=&#8221;tablist&#8221;
        style={{
          maskImage: &#8216;paint(squircle)&#8217;,
          WebkitMaskImage: &#8216;paint(squircle)&#8217;,
          &#8216;--squircle-radius&#8217;: &#8216;8px&#8217;,
          &#8216;--squircle-smooth&#8217;: &#8216;0.35&#8217;
        }}
      &gt;
        {/* Sliding background with enhanced squircle */}
        &lt;div
          className=&#8221;absolute h-8 shadow-sm transition-transform duration-500 ease-in-out&#8221;
          style={{
            background: accentColor,
            maskImage: &#8216;paint(squircle)&#8217;,
            WebkitMaskImage: &#8216;paint(squircle)&#8217;,
            &#8216;--squircle-radius&#8217;: &#8216;6px&#8217;,
            &#8216;--squircle-smooth&#8217;: &#8216;0.45&#8217;,
            width: `calc((100% - ${(tabs.length - 1) * 2}px - 8px) / ${tabs.length})`,
            transform: `translateX(calc(${activeTab} * 100% + ${activeTab * 2}px))`,
          }}
        /&gt;

        {/* Tab buttons */}
        {tabs.map((tab, index) =&gt; {
          const isActive = activeTab === index;
          return (
            &lt;button
              key={tab?.id || index}
              onClick={() =&gt; setActiveTab(index)}
              className={`relative z-10 flex items-center justify-center gap-1.5
                whitespace-nowrap border-none bg-transparent h-8 px-3 w-auto
                transition-colors duration-300 ease-in-out overflow-hidden ${
                isActive ? &#8220;text-white&#8221; : &#8220;text-gray-400 hover:text-gray-600&#8221;
              }`}
              role=&#8221;tab&#8221;
              aria-selected={isActive}
              title={tab?.label}
            &gt;
              &lt;span className=&#8221;text-base&#8221;&gt;{tab?.icon}&lt;/span&gt;
              &lt;span className={`text-xs font-medium whitespace-nowrap
                transition-[max-width] duration-500 ease-in-out ${
                isActive || showLabelsOnInactive ? &#8216;max-w-full&#8217; : &#8216;max-w-0&#8217;
              }`}&gt;
                {tab?.label}
              &lt;/span&gt;
            &lt;/button&gt;
          );
        })}
      &lt;/div&gt;
    &lt;/div&gt;
  );
};

export default TabSwitcher;
</code></code></pre><p><strong>Usage:</strong></p><pre><code><code>import TabSwitcher from &#8216;@/assets/uiComponents/Navigations/TabSwitcher&#8217;;

function ExpenseManagement() {
  const [activeTab, setActiveTab] = useState(0);

  const tabs = [
    { id: 1, label: &#8220;All&#8221;, icon: &lt;FilterIcon /&gt; },
    { id: 2, label: &#8220;Pending&#8221;, icon: &lt;ClockIcon /&gt; },
    { id: 3, label: &#8220;Approved&#8221;, icon: &lt;CheckIcon /&gt; }
  ];

  return (
    &lt;TabSwitcher
      tabs={tabs}
      activeTab={activeTab}
      setActiveTab={setActiveTab}
      accentColor=&#8221;#10b981&#8221;
      showLabelsOnInactive={false}
    /&gt;
  );
}
</code></code></pre><h2>Understanding the Parameters</h2><p>The <code>css-houdini-squircle</code> library exposes several CSS custom properties:</p><h3>&#8211;squircle-radius</h3><p><strong>Type:</strong> <code>&lt;length&gt;</code> (px, rem, em, etc.)<br><strong>Default:</strong> <code>8px</code><br><strong>Supports:</strong> 1-4 values (like <code>padding</code>)</p><p>Controls the corner radius size, similar to <code>border-radius</code>.</p><pre><code><code>&#8216;--squircle-radius&#8217;: &#8216;12px&#8217;              // All corners
&#8216;--squircle-radius&#8217;: &#8216;12px 8px&#8217;          // Top/bottom, left/right
&#8216;--squircle-radius&#8217;: &#8216;12px 8px 12px 8px&#8217; // Top, right, bottom, left
</code></code></pre><h3>&#8211;squircle-smooth</h3><p><strong>Type:</strong> <code>&lt;number&gt;</code><br><strong>Default:</strong> <code>1</code><br><strong>Range:</strong> <code>0.1</code> to <code>1.0</code></p><p>Controls the smoothness of the curve&#8212;essentially how &#8220;squircle-y&#8221; it is.</p><p><strong>Visual effect:</strong></p><ul><li><p><code>0.1-0.2</code>: Minimal smoothing, closer to circular corners</p></li><li><p><code>0.3-0.4</code>: Balanced, professional smoothness (our choice)</p></li><li><p><code>0.5-0.7</code>: Pronounced smooth effect</p></li><li><p><code>0.8-1.0</code>: Maximum squircle effect, very soft corners<br></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9e4F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5487d60-721b-4f21-8eae-d406657b1fd5_1502x1646.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9e4F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5487d60-721b-4f21-8eae-d406657b1fd5_1502x1646.png 424w, https://substackcdn.com/image/fetch/$s_!9e4F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5487d60-721b-4f21-8eae-d406657b1fd5_1502x1646.png 848w, https://substackcdn.com/image/fetch/$s_!9e4F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5487d60-721b-4f21-8eae-d406657b1fd5_1502x1646.png 1272w, https://substackcdn.com/image/fetch/$s_!9e4F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5487d60-721b-4f21-8eae-d406657b1fd5_1502x1646.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9e4F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5487d60-721b-4f21-8eae-d406657b1fd5_1502x1646.png" width="1456" height="1596" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5487d60-721b-4f21-8eae-d406657b1fd5_1502x1646.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1596,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot 2025-11-03 at 11.50.50 AM&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot 2025-11-03 at 11.50.50 AM" title="Screenshot 2025-11-03 at 11.50.50 AM" srcset="https://substackcdn.com/image/fetch/$s_!9e4F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5487d60-721b-4f21-8eae-d406657b1fd5_1502x1646.png 424w, https://substackcdn.com/image/fetch/$s_!9e4F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5487d60-721b-4f21-8eae-d406657b1fd5_1502x1646.png 848w, https://substackcdn.com/image/fetch/$s_!9e4F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5487d60-721b-4f21-8eae-d406657b1fd5_1502x1646.png 1272w, https://substackcdn.com/image/fetch/$s_!9e4F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5487d60-721b-4f21-8eae-d406657b1fd5_1502x1646.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qzli!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41990d5b-a7ab-4b23-a0c0-5cf5c58ae9ca_800x593.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qzli!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41990d5b-a7ab-4b23-a0c0-5cf5c58ae9ca_800x593.gif 424w, https://substackcdn.com/image/fetch/$s_!qzli!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41990d5b-a7ab-4b23-a0c0-5cf5c58ae9ca_800x593.gif 848w, https://substackcdn.com/image/fetch/$s_!qzli!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41990d5b-a7ab-4b23-a0c0-5cf5c58ae9ca_800x593.gif 1272w, https://substackcdn.com/image/fetch/$s_!qzli!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41990d5b-a7ab-4b23-a0c0-5cf5c58ae9ca_800x593.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qzli!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41990d5b-a7ab-4b23-a0c0-5cf5c58ae9ca_800x593.gif" width="800" height="593" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41990d5b-a7ab-4b23-a0c0-5cf5c58ae9ca_800x593.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:593,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;ScreenRecording2025-11-03at11.00.52AM-ezgif.com-optimize (1)&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="ScreenRecording2025-11-03at11.00.52AM-ezgif.com-optimize (1)" title="ScreenRecording2025-11-03at11.00.52AM-ezgif.com-optimize (1)" srcset="https://substackcdn.com/image/fetch/$s_!qzli!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41990d5b-a7ab-4b23-a0c0-5cf5c58ae9ca_800x593.gif 424w, https://substackcdn.com/image/fetch/$s_!qzli!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41990d5b-a7ab-4b23-a0c0-5cf5c58ae9ca_800x593.gif 848w, https://substackcdn.com/image/fetch/$s_!qzli!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41990d5b-a7ab-4b23-a0c0-5cf5c58ae9ca_800x593.gif 1272w, https://substackcdn.com/image/fetch/$s_!qzli!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41990d5b-a7ab-4b23-a0c0-5cf5c58ae9ca_800x593.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Individual Corner Control</h3><p>For asymmetric designs:</p><pre><code><code>&#8216;--squircle-radius-top-left&#8217;: &#8216;12px&#8217;
&#8216;--squircle-radius-top-right&#8217;: &#8216;12px&#8217;
&#8216;--squircle-radius-bottom-left&#8217;: &#8216;4px&#8217;
&#8216;--squircle-radius-bottom-right&#8217;: &#8216;4px&#8217;
</code></code></pre><h3>Advanced: Outline Mode</h3><p>Instead of mask mode, you can use squircles as strokes:</p><pre><code><code>style={{
  background: &#8216;paint(squircle)&#8217;,
  &#8216;--squircle-radius&#8217;: &#8216;10px&#8217;,
  &#8216;--squircle-smooth&#8217;: &#8216;0.5&#8217;,
  &#8216;--squircle-outline&#8217;: &#8216;2px&#8217;,  // Stroke width
  &#8216;--squircle-fill&#8217;: &#8216;#3b82f6&#8217;  // Stroke color
}}
</code></code></pre><h2>Design Philosophy: When to Use Squircles</h2><p>Squircles aren&#8217;t a wholesale replacement for <code>border-radius</code>. Strategic use is key.</p><h3>&#9989; Use Squircles When:</h3><ol><li><p><strong>Prominent UI elements</strong> - Cards, modals, panels that are focal points</p></li><li><p><strong>Large rounded corners</strong> - Where border-radius discontinuity becomes visible (typically &gt;12px radius)</p></li><li><p><strong>iOS-style interfaces</strong> - Especially if targeting iPhone users or matching iOS design language</p></li><li><p><strong>Premium, polished feel</strong> - When attention to detail signals quality</p></li><li><p><strong>Animated elements</strong> - The smooth curves look better in motion</p></li></ol><p><strong>Examples from our codebase:</strong></p><ul><li><p>TabSwitcher navigation (primary interaction element)</p></li><li><p>ExpenseDetails panels (large containers with 20px radius)</p></li><li><p>Table headers (subtle premium touch)</p></li></ul><h3>&#10060; Use Standard border-radius When:</h3><ol><li><p><strong>Small elements</strong> - Buttons, badges, chips with &lt;6px radius (difference is imperceptible)</p></li><li><p><strong>Maximum browser compatibility</strong> - If you can&#8217;t use a polyfill for Firefox</p></li><li><p><strong>Performance-critical</strong> - Low-end devices or hundreds of elements</p></li><li><p><strong>Utility components</strong> - Internal tools, admin panels where aesthetics are secondary</p></li></ol><h3>Our Hybrid Approach</h3><p>Our codebase has <strong>239 occurrences</strong> of <code>border-radius</code> across 54 files, but only <strong>3 files</strong> use squircles. This demonstrates strategic enhancement:</p><ul><li><p><strong>Hero components</strong> and <strong>primary interactions</strong> get squircles</p></li><li><p><strong>Utility elements</strong> and <strong>less prominent components</strong> use border-radius</p></li><li><p>Balances performance, compatibility, and visual excellence</p></li></ul><h2>Performance Considerations</h2><h3>The Good News</h3><ol><li><p><strong>Off-Main-Thread Rendering</strong>: Worklets run in parallel with your JavaScript&#8212;no blocking</p></li><li><p><strong>Hardware Accelerated</strong>: Browser&#8217;s rendering engine handles the worklet, GPU acceleration where available</p></li><li><p><strong>First-Paint Inclusion</strong>: No Flash of Unstyled Content (FOUC)</p></li><li><p><strong>Better Than Alternatives</strong>: More performant than SVG masks, clip-path, or multiple DOM elements</p></li></ol><h3>Potential Concerns</h3><ol><li><p><strong>Initial Load</strong>: ~3-5KB worklet download (one-time, cached)</p></li><li><p><strong>Bezier Calculations</strong>: More complex than simple border-radius, but negligible on modern devices</p></li><li><p><strong>Browser Support</strong>: Requires feature detection and fallback strategy</p></li></ol><h3>Performance Testing Results</h3><p>In our testing:</p><ul><li><p><strong>No measurable FPS impact</strong> on 60fps animations (our 500ms tab transitions remain smooth)</p></li><li><p><strong>Negligible CPU overhead</strong> compared to border-radius</p></li><li><p><strong>No increase in paint time</strong> for our use case (3-10 squircle elements per page)</p></li></ul><p><strong>Recommendation</strong>: Use squircles freely for visible elements, but avoid on:</p><ul><li><p>Frequently re-rendered elements (e.g., scroll-synchronized animations with 100+ items)</p></li><li><p>Low-end device targets</p></li><li><p>Server-side rendered critical content (though it works, border-radius is safer)</p></li></ul><h2>Behind the Scenes: How the Worklet Works</h2><p>For the technically curious, here&#8217;s what&#8217;s happening inside the <code>css-houdini-squircle</code> worklet:</p><h3>Internal Algorithm</h3><ol><li><p><strong>Distance Scaling</strong>: All radii are multiplied by <strong>1.8</strong> internally</p><ul><li><p>This constant creates the characteristic squircle curve</p></li><li><p>Different from border-radius which uses 1:1 ratio</p></li></ul></li><li><p><strong>Bezier Approximation</strong>: The superellipse curve is approximated using canvas <code>bezierCurveTo()</code> methods</p><ul><li><p>The <code>--squircle-smooth</code> parameter controls bezier control point distance</p></li><li><p>Value is multiplied by 10 for curve calculation</p></li></ul></li><li><p><strong>Constraint Validation</strong>:</p><ul><li><p>Maximum radius automatically capped to prevent overflow</p></li><li><p>Auto-constrains to half the smallest dimension if needed</p></li></ul></li></ol><p><strong>Simplified pseudo-code:</strong></p><pre><code><code>// Inside the paint worklet (conceptual)
class SquirclePainter {
  paint(ctx, geom, properties) {
    const radius = properties.get(&#8217;--squircle-radius&#8217;);
    const smooth = properties.get(&#8217;--squircle-smooth&#8217;);

    // Scale radius for squircle effect
    const scaledRadius = radius * 1.8;

    // Calculate bezier control points
    const controlDistance = smooth * 10;

    // Draw path with bezier curves
    ctx.beginPath();
    ctx.moveTo(scaledRadius, 0);

    // Top right corner
    ctx.bezierCurveTo(
      geom.width - controlDistance, 0,
      geom.width, controlDistance,
      geom.width, scaledRadius
    );

    // ... other corners ...

    ctx.closePath();
    ctx.fill();
  }
}
</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FJ22!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f486086-3408-41bf-806f-a86fe93e5e4c_1478x1668.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FJ22!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f486086-3408-41bf-806f-a86fe93e5e4c_1478x1668.png 424w, https://substackcdn.com/image/fetch/$s_!FJ22!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f486086-3408-41bf-806f-a86fe93e5e4c_1478x1668.png 848w, https://substackcdn.com/image/fetch/$s_!FJ22!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f486086-3408-41bf-806f-a86fe93e5e4c_1478x1668.png 1272w, https://substackcdn.com/image/fetch/$s_!FJ22!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f486086-3408-41bf-806f-a86fe93e5e4c_1478x1668.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FJ22!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f486086-3408-41bf-806f-a86fe93e5e4c_1478x1668.png" width="1456" height="1643" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f486086-3408-41bf-806f-a86fe93e5e4c_1478x1668.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1643,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot 2025-11-03 at 11.46.43 AM&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot 2025-11-03 at 11.46.43 AM" title="Screenshot 2025-11-03 at 11.46.43 AM" srcset="https://substackcdn.com/image/fetch/$s_!FJ22!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f486086-3408-41bf-806f-a86fe93e5e4c_1478x1668.png 424w, https://substackcdn.com/image/fetch/$s_!FJ22!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f486086-3408-41bf-806f-a86fe93e5e4c_1478x1668.png 848w, https://substackcdn.com/image/fetch/$s_!FJ22!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f486086-3408-41bf-806f-a86fe93e5e4c_1478x1668.png 1272w, https://substackcdn.com/image/fetch/$s_!FJ22!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f486086-3408-41bf-806f-a86fe93e5e4c_1478x1668.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Real-World Impact: Why This Matters</h2><h3>The Subtle Power of Details</h3><p>Design is a compounding game. Individual refinements might seem trivial, but they accumulate to create an overall perception of quality. Users might not consciously notice your squircles, but they&#8217;ll feel the difference.</p><p>Studies in design psychology show that:</p><ul><li><p>Softer, organic curves reduce visual stress and feel &#8220;warmer&#8221;</p></li><li><p>Attention to subtle details signals trustworthiness and professionalism</p></li><li><p>Consistency with familiar patterns (iOS) creates subconscious comfort</p></li></ul><h3>Industry Adoption</h3><p>Squircles have moved from Apple-exclusive to industry standard:</p><ul><li><p><strong>Blinkit</strong> (Indian grocery delivery) implemented continuous corners across their iOS app</p></li><li><p><strong>Figma</strong> has built-in corner smoothing (value of 60 replicates iOS squircles)</p></li><li><p><strong>Modern design systems</strong> increasingly specify squircles for premium products</p></li></ul><h3>The W3C Proposal</h3><p>There&#8217;s active discussion (<a href="https://github.com/w3c/csswg-drafts/issues/10653">CSSWG Issue #10653</a>) to add native squircle support to CSS:</p><pre><code><code>/* Proposed syntax */
border-radius: 8px smooth(0.6);
</code></code></pre><p>The fact that this is under consideration shows squircles aren&#8217;t a fad&#8212;they&#8217;re becoming a web standard.</p><h2>Practical Implementation Checklist</h2><p>Before shipping squircles to production:</p><h3>Setup</h3><ul><li><p>Add worklet loading to <code>index.html</code> with feature detection</p></li><li><p>Test in Chrome/Edge, Safari, and Firefox (for fallback)</p></li><li><p>Verify no console errors in unsupported browsers</p></li><li><p>Check CDN caching is working (Network tab should show 304 on reload)</p></li></ul><h3>Implementation</h3><ul><li><p>Use <code>maskImage</code> and <code>WebkitMaskImage</code> for compatibility</p></li><li><p>Start with conservative smoothness values (0.3-0.4)</p></li><li><p>Test various element sizes to find optimal radius</p></li><li><p>Ensure proper stacking context (z-index) for layered squircles</p></li></ul><h3>Performance</h3><ul><li><p>Profile with Chrome DevTools Performance tab</p></li><li><p>Verify animations run at 60fps</p></li><li><p>Test on low-end devices or throttled CPU</p></li><li><p>Limit usage to &lt;20 squircle elements per page initially</p></li></ul><h3>Accessibility</h3><ul><li><p>Confirm no impact on screen readers (squircles are purely visual)</p></li><li><p>Verify keyboard navigation still works</p></li><li><p>Check color contrast isn&#8217;t affected by mask</p></li></ul><h3>Fallback</h3><ul><li><p>Design graceful degradation for Firefox (normal rectangles okay?)</p></li><li><p>Consider <a href="https://github.com/GoogleChromeLabs/css-paint-polyfill">css-paint-polyfill</a> if Firefox support critical</p></li><li><p>Document browser support in your design system</p></li></ul><h2>Advanced Variations</h2><h3>Nested Squircles</h3><p>Create depth with layered squircles at different smoothness levels:</p><pre><code><code>&lt;div style={{
  maskImage: &#8216;paint(squircle)&#8217;,
  &#8216;--squircle-radius&#8217;: &#8216;20px&#8217;,
  &#8216;--squircle-smooth&#8217;: &#8216;0.3&#8217;
}}&gt;
  &lt;div style={{
    maskImage: &#8216;paint(squircle)&#8217;,
    &#8216;--squircle-radius&#8217;: &#8216;16px&#8217;,
    &#8216;--squircle-smooth&#8217;: &#8216;0.5&#8217;  // Inner layer is smoother
  }}&gt;
    Content
  &lt;/div&gt;
&lt;/div&gt;
</code></code></pre><h3>Asymmetric Corners</h3><p>Different radii for visual hierarchy:</p><pre><code><code>style={{
  maskImage: &#8216;paint(squircle)&#8217;,
  &#8216;--squircle-radius-top-left&#8217;: &#8216;20px&#8217;,
  &#8216;--squircle-radius-top-right&#8217;: &#8216;20px&#8217;,
  &#8216;--squircle-radius-bottom-left&#8217;: &#8216;4px&#8217;,
  &#8216;--squircle-radius-bottom-right&#8217;: &#8216;4px&#8217;,
  &#8216;--squircle-smooth&#8217;: &#8216;0.4&#8217;
}}
</code></code></pre><h3>Animation-Aware Smoothness</h3><p>Increase smoothness during animations for more dramatic effect:</p><pre><code><code>const [isAnimating, setIsAnimating] = useState(false);

&lt;div style={{
  maskImage: &#8216;paint(squircle)&#8217;,
  &#8216;--squircle-radius&#8217;: &#8216;12px&#8217;,
  &#8216;--squircle-smooth&#8217;: isAnimating ? &#8216;0.7&#8217; : &#8216;0.35&#8217;,
  transition: &#8216;--squircle-smooth 300ms ease-out&#8217;
}}&gt;
</code></code></pre><p><strong>Note:</strong> CSS custom property transitions aren&#8217;t widely supported yet, but this technique works in Chrome/Edge.</p><h2>Comparing Approaches</h2><h3>Alternative Methods We Considered</h3><p>Before settling on CSS Houdini, we evaluated other approaches:</p><p><strong>1. SVG Masks</strong></p><pre><code><code>&lt;svg style={{ position: &#8216;absolute&#8217;, width: 0, height: 0 }}&gt;
  &lt;defs&gt;
    &lt;clipPath id=&#8221;squircle&#8221;&gt;
      &lt;path d=&#8221;M...&#8221; /&gt;
    &lt;/clipPath&gt;
  &lt;/defs&gt;
&lt;/svg&gt;
&lt;div style={{ clipPath: &#8216;url(#squircle)&#8217; }}&gt;...&lt;/div&gt;
</code></code></pre><p>&#10060; Requires manually calculating SVG paths for each size<br>&#10060; Additional DOM elements<br>&#10060; Harder to make responsive</p><p><strong>2. Canvas-Based Rendering</strong></p><pre><code><code>const drawSquircle = (ctx, x, y, w, h, r) =&gt; {
  // Manual bezier curve calculations
};
</code></code></pre><p>&#10060; Requires React canvas library<br>&#10060; Breaks semantic HTML<br>&#10060; Accessibility issues</p><p><strong>3. Multiple Border-Radius Elements</strong></p><pre><code><code>&lt;div className=&#8221;corner-tl&#8221; /&gt;
&lt;div className=&#8221;corner-tr&#8221; /&gt;
{/* ... 4 corner elements ... */}
</code></code></pre><p>&#10060; DOM bloat<br>&#10060; Complexity<br>&#10060; Still uses circular arcs</p><p><strong>CSS Houdini won</strong> because it&#8217;s:</p><ul><li><p>&#9989; Dynamic and responsive</p></li><li><p>&#9989; Clean, semantic HTML</p></li><li><p>&#9989; Performant (off-main-thread)</p></li><li><p>&#9989; Easy to maintain</p></li><li><p>&#9989; Future-proof (potential native support)</p></li></ul><h2>Conclusion: Small Details, Big Impact</h2><p>Implementing squircles in our TabSwitcher component was more than a visual upgrade&#8212;it was a statement about our commitment to craft. In an industry where &#8220;good enough&#8221; often wins, these subtle refinements separate premium products from mediocre ones.</p><p><strong>Key Takeaways:</strong></p><ol><li><p><strong>Squircles are mathematically superior</strong> for visual continuity&#8212;variable curvature beats constant curvature</p></li><li><p><strong>CSS Houdini makes them practical</strong> for production with off-main-thread rendering</p></li><li><p><strong>Strategic use matters</strong>&#8212;enhance primary elements, not everything</p></li><li><p><strong>Browser support is solid</strong> for 85%+ of users, with graceful degradation</p></li><li><p><strong>The industry is moving this direction</strong>&#8212;W3C proposal, Figma support, iOS ubiquity</p></li></ol><p>The <code>css-houdini-squircle</code> library weighs just 3-5KB and requires minimal setup. For the visual polish it provides, that&#8217;s an exceptional ROI.</p><p>As we continue building modern web applications, we should ask: why settle for the limitations of circular corners when we can deliver the organic smoothness users have come to expect from premium interfaces?</p><h2>Resources &amp; Further Reading</h2><p><strong>Implementation:</strong></p><ul><li><p><a href="https://www.npmjs.com/package/css-houdini-squircle">css-houdini-squircle on npm</a></p></li><li><p><a href="https://www.w3.org/TR/css-paint-api-1/">CSS Paint API Specification</a></p></li><li><p><a href="https://github.com/GoogleChromeLabs/css-paint-polyfill">CSS Paint Polyfill (Firefox support)</a></p></li></ul><p><strong>Theory:</strong></p><ul><li><p><a href="https://pavellaptev.medium.com/squircle-css-houdini-tutorial-e7ac04e3fb43">The Squircle Curve - Pavel Laptev</a></p></li><li><p><a href="https://en.wikipedia.org/wiki/Superellipse">Superellipse on Wikipedia</a></p></li><li><p><a href="https://www.figma.com/community/plugin/762108200486620713/iOS-Corner-Smoothing">iOS Corner Radius - Figma Research</a></p></li></ul><p><strong>W3C Discussion:</strong></p><ul><li><p><a href="https://github.com/w3c/csswg-drafts/issues/10653">CSSWG Issue #10653: Add &#8216;corner-smoothing&#8217; to CSS</a></p></li></ul><p><strong>Design Philosophy:</strong></p><ul><li><p><a href="https://www.apple.com/newsroom/2013/06/apple-unveils-ios-7/">Apple&#8217;s iOS 7 Design Changes</a></p></li><li><p><a href="https://applypixels.com/blog/ios-app-icon-superellipse">Why iOS App Icons Are Squircles</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Samachar]]></title><description><![CDATA[Team Sama's blog]]></description><link>https://www.blog.sama.live/p/coming-soon</link><guid isPermaLink="false">https://www.blog.sama.live/p/coming-soon</guid><dc:creator><![CDATA[Sama]]></dc:creator><pubDate>Sun, 09 Nov 2025 11:00:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4pih!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1dd56f-d5d1-48aa-b3b2-8aeef2bdc2c5_1280x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>With nearly <a href="https://theprint.in/india/pending-cases-in-courts-near-5-crore-mark-law-minister-says-several-initiatives-taken-for-expeditious-disposal/1364317/">5 crore cases</a> pending in Indian Courts, expediting justice delivery and increasing access is a pressing need. This humble blog is an attempt to raise awareness about ODR as well as to give you a peek into life inside India&#8217;s largest ODR Institution.<br><br>From technical breakdowns of Sama&#8217;s platform to Changelogs to founder&#8217;s musings, Samachar is a home for reporting on all things Sama.<br><br>Subscribe to get full access to the newsletter. Never miss an update.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.blog.sama.live/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.blog.sama.live/subscribe?"><span>Subscribe now</span></a></p><h3><strong>Stay up-to-date</strong></h3><p>You won&#8217;t have to worry about missing anything. Every new edition of the newsletter goes directly to your inbox.</p><h3><strong>Join the crew</strong></h3><p>Be part of a community of people who share your interests by joining our <a href="https://join.slack.com/t/samacommunity/shared_invite/zt-38krxsp8n-dIGLAUyKsh_vWxKqig_P9g">Slack Community</a>.</p>]]></content:encoded></item><item><title><![CDATA[Web Accessibility: A Key to Inclusivity and Diversity]]></title><description><![CDATA[Web accessibility has become more crucial since the internet has become a necessity for daily life.]]></description><link>https://www.blog.sama.live/p/web-accessibility-a-key-to-inclusivity-and-diversity</link><guid isPermaLink="false">https://www.blog.sama.live/p/web-accessibility-a-key-to-inclusivity-and-diversity</guid><dc:creator><![CDATA[Sama]]></dc:creator><pubDate>Tue, 11 Apr 2023 04:37:56 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/3c891629-3962-4165-bae6-a056f8d087f1_640x428.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hEPh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d5784b-6858-427a-85fc-ffa8c856a6f4_640x428.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hEPh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d5784b-6858-427a-85fc-ffa8c856a6f4_640x428.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hEPh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d5784b-6858-427a-85fc-ffa8c856a6f4_640x428.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hEPh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d5784b-6858-427a-85fc-ffa8c856a6f4_640x428.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hEPh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d5784b-6858-427a-85fc-ffa8c856a6f4_640x428.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hEPh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d5784b-6858-427a-85fc-ffa8c856a6f4_640x428.jpeg" width="640" height="428" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/27d5784b-6858-427a-85fc-ffa8c856a6f4_640x428.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:428,&quot;width&quot;:640,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Web Accessibility&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Web Accessibility" title="Web Accessibility" srcset="https://substackcdn.com/image/fetch/$s_!hEPh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d5784b-6858-427a-85fc-ffa8c856a6f4_640x428.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hEPh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d5784b-6858-427a-85fc-ffa8c856a6f4_640x428.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hEPh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d5784b-6858-427a-85fc-ffa8c856a6f4_640x428.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hEPh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d5784b-6858-427a-85fc-ffa8c856a6f4_640x428.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by&nbsp;<a href="https://unsplash.com/@untodesign_?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Daniel Ali</a>&nbsp;on&nbsp;<a href="https://unsplash.com/photos/ju1yFZkrxVg?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>Web accessibility has become more crucial since the internet has become a necessity for daily life. Making web information and apps usable by persons with disabilities, such as visual, auditory, or motor impairments, is referred to as accessibility.</p><p>Everyone can have equal access to information and services on the internet if accessibility is kept in mind. Web accessibility is crucial because utilizing the internet presents considerable challenges for those with disabilities.</p><p>People with motor disabilities may need assistive technology like speech recognition software to interact with web material, whereas people with visual impairments may rely on screen readers to browse websites. These people may encounter difficulties and be unable to access vital information and services online without effective accessibility.</p><p>The significance of web accessibility, recommended practices for producing accessible web content, and how to test your website for accessibility are all covered in this article.</p><h2>The Importance of Web Accessibility</h2><p>In addition to being required by law, web accessibility is also morally right. You can guarantee that everybody, regardless of their capabilities, may access the information and services you offer by making your website accessible.</p><p>Additionally, accessible websites can broaden your audience, boost user interaction, and increase search engine rankings.</p><h2>Recommended practices</h2><p>The Web Content Accessibility Guidelines (WCAG) are a detailed list of suggestions for making sure that all users can access content on the web. The recommendations are broken up into four main groups: Perceivable, Operable, Understandable, and Robust.</p><p><strong>Perceivable</strong><br>Assuring all users that web material is perceivable is called &#8220;perception.&#8221; You should provide captions for movies, alternative text for photos, and transcripts for audio recordings. Users who have trouble seeing can benefit from using colors with a lot of contrast and avoiding content that flashes or flickers.</p><p><strong>Operable</strong><br>&#8220;Operable&#8221; refers to making web information simple for all users to use. For instance, giving keyboard shortcuts, staying away from pop-ups, and using clear, succinct links might make it simpler for visitors with motor disabilities to use your website.</p><p><strong>Understandable</strong><br>Making sure that web material is understandable for all users. Users with cognitive impairments can benefit from strategies including utilizing plain language, minimizing jargon, and offering directions for challenging tasks.</p><p><strong>Robust<br></strong>Being robust implies making sure that web information can be accessed by a variety of hardware and software. For instance, ensuring that assistive technology can correctly comprehend web content requires utilizing acceptable HTML and avoiding proprietary technologies.</p><h2>Web accessibility testing:</h2><p>A website that is inclusive and accessible to users with disabilities must undergo web accessibility testing.</p><p><strong>Manual Testing<br></strong>Manual testing is one of the best techniques to check for web accessibility. Testing your website with assistive technology like screen readers, speech recognition programs, and keyboard-only navigation is part of this process.</p><p>You can find accessibility problems that automated methods might miss if you test with assistive technologies. Even though manual testing takes time, it offers insightful feedback and can point out usability problems that automated methods might overlook.</p><p>To gain input on your website&#8217;s accessibility, you can also interact with actual people who have disabilities.</p><p><strong>Automated Testing<br></strong>You can rapidly and effectively find accessibility problems with the aid of automated testing. The Web Accessibility Evaluation Tool (WAVE) and the Accessibility Insights for Web Browser plugin are two automated tools that may check your website for accessibility concerns. These tools can spot problems including missing form labels, inappropriate heading layout, and missing alternate text for photos.</p><p>Although automated testing can assist you in finding accessibility problems, it&#8217;s crucial to remember that it cannot replace manual testing. Automated tools might overlook some problems and signal false positives.</p><p><strong>User Testing<br></strong>Testing your website with actual people who have disabilities is known as user testing. User testing can offer insightful input on the usability and accessibility of your website. It can assist you in finding problems that manual testing or automated techniques might miss.</p><p>Depending on your requirements and budget, user testing can be carried out locally or remotely. Through advocacy organizations, social media, or websites that link usability testers and people with disabilities, you can find potential users with disabilities.</p><h2>Conclusion</h2><p>Modern web development must include web accessibility as a key component. You can make sure that all users can access your content and services by adhering to accessibility requirements and evaluating your website for accessibility.</p><p>Because of this, your community might grow, and your search engine rankings might go up. We can increase inclusivity and guarantee that everyone has equal access to online resources by making the web more accessible.</p><p>The post <a href="https://imwpost.com/web-accessibility-a-key-to-inclusivity-and-diversity/">Web Accessibility: A Key to Inclusivity and Diversity</a> appeared first on <a href="https://imwpost.com">THE IMW POST</a>.</p>]]></content:encoded></item><item><title><![CDATA[ How to ensure that Online Arbitration Clauses are Valid?]]></title><description><![CDATA[Hello everyone, sharing the first article from Sama experiences in Online Dispute Resolution (ODR) which will be relevant for enterprises using online agreements.]]></description><link>https://www.blog.sama.live/p/how-to-ensure-that-online-arbitration-clauses-are-valid</link><guid isPermaLink="false">https://www.blog.sama.live/p/how-to-ensure-that-online-arbitration-clauses-are-valid</guid><dc:creator><![CDATA[Sama]]></dc:creator><pubDate>Thu, 30 Jun 2022 10:25:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5Ijz!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa2446af-3cd6-4e5d-8b99-0437e4dd380e_1280x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hello everyone, sharing the first article from Sama experiences in Online Dispute Resolution (ODR) which will be relevant for enterprises using online agreements.</p><ol><li><p><strong>Background</strong></p></li></ol><p>As we know from repeated Indian Supreme Court Rulings that lack of a valid arbitration clause is a clear ground for challenging the arbitration award and nullifying the full arbitration process.</p><p>What makes the clause invalid, especially in the context of online arbitration? Autonomy is the cornerstone of an arbitration process, and not getting clear consent to an arbitration clause from the customer, makes the arbitration clause null and void.</p><p>Most of our clients are switching to Online Arbitration Clauses by amending their Terms and Conditions or Dispute Resolution Policy on their respective websites, where consents are taken through clickwrap agreements.</p><p><em>Understanding how the courts assess online agreements is a crucial way to protect your business from risk. Yet 34% of online agreements were not enforced in court thanks to nonoptimal screen design, lack of evidence, and/or poor version control. How can your company design online agreements for enforceability?</em></p><p><strong>What are Clickwrap Agreements?</strong></p><p>A clickwrap contract is a popular type of a digital contract. It is an agreement which is between a user and a company. A user must click a box or button before they download content, make a purchase, or use a website. The Salient features of Clickwrap Contracts are:</p><ul><li><p>Clickwrap Contracts are unilateral Contracts. They contain standard terms and conditions which multiple users online agree on before using the websites or products.</p></li><li><p>Unique identification of Clickwrap Contract are buttons like:</p></li><li><p>I accept</p></li><li><p>I agree</p></li><li><p>Ok</p></li><li><p>I consent</p></li><li><p>Clickwrap Contracts usually relate to terms and conditions, usage, privacy related terms, or End-user license Contracts (EULS).</p></li><li><p>Users can opt-out of the contract by clicking on the cancel button, I disagree, or by closing the sites.</p></li></ul><p><strong>Enforceability of Clickwrap Agreements</strong></p><p><strong>Foreign</strong></p><ul><li><p><em><strong><a href="https://www.lexisnexis.com/community/casebrief/p/casebrief-feldman-v-google-inc">Feldman v. Google</a>,&nbsp;Inc. &#8211; 513 F. Supp. 2d 229 (E.D. Pa. 2007)</strong></em></p></li></ul><p>While upholding the enforceability of the Clickwrap Contract court presented with &#8220;reasonable notice of the terms and manifested assent of the Contract.&#8221; While Plaintiff argued that he did not enter into any kind of contract with the defendant, the court held that there could be no purchase without agreeing to the terms and conditions of the Contract while purchasing the advertisement &#8220;Adwords&#8221; program.</p><ul><li><p><em><strong><a href="https://www.lexisnexis.com/community/casebrief/p/casebrief-specht-v-netscape-commc-ns-corp">Specht v. Netscape Communications Corporation</a>,&nbsp;</strong>306 F.3d 17 (2d Cir. 2002)</em></p></li></ul><p>Court held in the present case that Clickwrap Contracts are enforceable only when they are clearly and conspicuously posted on the website whereas in the present case Netscape posted the Contract inconspicuously.</p><ul><li><p><em><strong><a href="https://cyber.harvard.edu/ilaw/Contract/hotmail.html">Hotmail Corporation v. Van Money Pie</a>, 1998 WL 388389 (N.D.Cal.)</strong></em></p></li></ul><p>In this case, the court held that clicking on the &#8220;I agree&#8221; button at the end of the terms and conditions leads to the enforceability of the Clickwrap contracts.</p><p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Indian Scenario</strong></p><ul><li><p><em><strong><a href="https://indiankanoon.org/doc/658803/">Trimex International FZE v. Vedanta Aluminium Limited&nbsp;</a></strong></em></p></li></ul><p>In this case, the court upheld that if the terms of a Contract had been discussed over the email, such emails constituted to be a valid contract and hence were enforceable.</p><ul><li><p><em><strong><a href="https://indiankanoon.org/doc/115941294/">Ddit(lt) Mumbai v. Gujarat Pipavav Port ltd</a>:</strong></em></p></li></ul><p>In this case, the Income tax tribunal held that Unconscionable or unreasonable bargain (contract adhesion) in Mass contracts like Shrinkwrap and Clickwraps makes them unenforceable even though they have all the components of a valid contract.</p><p>In India, under the Indian Contract act, 1872, the definition of Contract doesn&#8217;t cover any kind of E-contracts or the Clickwrap Contracts. In India, we have the Information Technology Act, 2000 under which E-contracts are given recognition by section 10-A (w.e.f 27-11-2009) and also through United Nation Commission on International Trade Law (UNCITRAL Model on E-commerce) validates electronic signature but doesn&#8217;t cover under its ambit terms as I agree, I accept or Ok. Whereas Section 65-B of the Indian Evidence Act, 1872 provides a procedure for furnishing electronic documents but this provision has nowhere been used in the context of Clickwrap or another kind of such Contract. Therefore Clickwrap Contracts cannot be said to be &#8216;electronically signed&#8217; in the Indian context.</p><p><strong>But so far, no Supreme Court ruling in India has held that Clickwrap Contracts are not valid in India.</strong></p><p>The above-mentioned case laws very well outline that Clickwrap contracts are enforceable in the court of law but their enforceability depends majorly upon the question of whether the consent was taken freely and actively or not. While all the Clickwrap contracts can be enforced in court if they tick all the essentials of a valid contract, it can be seen that this kind of contract has got more sanctions internationally than in the Indian Scenario.</p><p><strong>How to design the correct Clickwrap Agreement so that the Arbitration Clause cannot be challenged later?</strong></p><p>From various international litigations, we can draw some of the best practices we can use to make the Clickwrap Contracts enforceable:</p><ol><li><p><strong>Active consent by the user</strong>: It is one of the best practices that the user can follow. The user must click on &#8216;I agree&#8217;, &#8216;Ok&#8217; or &#8216;I accept&#8217; button or &#8216;click on it&#8217;. The websites should not pre-check the box as the assent from the user must come actively.</p></li><li><p><strong>Give reasonable notice before termination of services: </strong>The user should be informed about the TOS in clear words like Terms and Conditions, Privacy Policy, User Contract must be written in a font that is understandable by the user. Clear notice of the Contract makes the Contract enforceable in a Court of law.</p></li><li><p><strong>Contracts should be easily understood by laymen:</strong>The websites or software providers should remember that not every person will understand the legal terms of the Contract. Once clickwrap Contracts need to be written in a way that someone without a background in privacy can read, comprehend, and give informed consent to. The site should clearly tell its users to read the TOS to its users.</p></li><li><p><strong>Revised Conditions should be rechecked:</strong>The TOS of the Clickwrap Contract if revised should be made to agree by the user again so that the user is aware of the new terms of services.</p></li><li><p><strong>&nbsp;Specific Consent should be highlighted from the rest of the documents:&nbsp;</strong>I think to remember the service provider is that if they ask for permission for things like using users personal information, use it for marketing purposes, in such cases the TOS for such should be distinguishable.</p></li><li><p><strong>&nbsp;Documentation:&nbsp;</strong>One of the most important parts of enforcing the Clickwrap Contract is managing the record as to when the consent was taken and on what version the consent was given. Unless we are unable to prove who accepted the Contracts and which version(s) of the Contract was accepted, then the Clickwrap Contract is not likely to be enforceable.</p></li><li><p><strong>Screen Design of the terms and conditions</strong>: It is best practice to keep the layout of the screen before designing a Click Wrap Contract :Simple and uncluttered.The entire screen shall be seen at one time.</p><p>Use language which is easily understandable by the user.</p><p>Never use a contrasting color</p></li></ol><p><strong>Conclusion</strong></p><p>According to <strong>Clickwrap Litigation Trends Report</strong> (available <a href="https://ironcladapp.com/lp/clickwrap-litigation-trends-report/">here</a>), <em>more than 75 percent of Clickwrap agreements are enforced.</em> Other 25 percent are not enforced due to lack of reasonable notice, lack of clear assent or just poor design making it difficult to understand the terms and conditions.</p><p>If you are an enterprise looking to incorporate Online Arbitration Clauses through a clickwrap agreements, it is imperative to follow the above-mentioned practices to ensure they are held enforceable in the court of law.</p><p>The post <a href="https://imwpost.com/how-to-ensure-that-online-arbitration-clauses-are-valid/">How to ensure that Online Arbitration Clauses are Valid?</a> appeared first on <a href="https://imwpost.com">THE IMW POST</a>.</p>]]></content:encoded></item><item><title><![CDATA[n9]]></title><description><![CDATA[Theory The new mediation bill puts the term conciliation under the definition of &#8220;mediation&#8221;.]]></description><link>https://www.blog.sama.live/p/n9</link><guid isPermaLink="false">https://www.blog.sama.live/p/n9</guid><dc:creator><![CDATA[Sama]]></dc:creator><pubDate>Mon, 15 Nov 2021 12:23:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5Ijz!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa2446af-3cd6-4e5d-8b99-0437e4dd380e_1280x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Theory</strong></p><p>The new mediation bill puts the term conciliation under the definition of &#8220;mediation&#8221;.</p><p><em>&#8220;4. &#8213;Mediation means a process, whether referred to by the expression mediation, pre-litigation mediation, online mediation, conciliation, or an expression of similar import, whereby parties request a third person or persons (&#8213;the mediator&#8214;) to assist them in their attempt to reach an amicable settlement of the dispute.&#8221;</em></p><p><strong>Practice</strong></p><p>Insurance companies prefer arbitration over conciliation.</p><p>The post <a href="https://imwpost.com/n9/">n9</a> appeared first on <a href="https://imwpost.com">THE IMW POST</a>.</p>]]></content:encoded></item><item><title><![CDATA[n8]]></title><description><![CDATA[Theory General Electric (GE), one of the world leaders in power generation, was one of the early corporates to innovate with their legal strategy.]]></description><link>https://www.blog.sama.live/p/n8</link><guid isPermaLink="false">https://www.blog.sama.live/p/n8</guid><dc:creator><![CDATA[Sama]]></dc:creator><pubDate>Sun, 07 Nov 2021 18:30:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5Ijz!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa2446af-3cd6-4e5d-8b99-0437e4dd380e_1280x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Theory</strong></p><p>General Electric (GE), one of the world leaders in power generation, was one of the early corporates to innovate with their legal strategy.</p><p>In GE, it wouldn&#8217;t be enough for a lawyer to win a case for the company, if the</p><p>time, expense, and publicity outweighed the gain. The goals were:</p><p>&#8226; Quick resolution of disputes</p><p>&#8226; Inexpensive resolution of disputes</p><p>&#8226; Minimal waste of executive and management time</p><p>&#8226; Reduced damage to important business relationships</p><p>&#8226; Minimized uncertainty of results</p><p><strong>Practice</strong></p><p>While designing dispute systems, it is imperative to understand the context and goals of the business.</p><p>The post <a href="https://imwpost.com/n8/">n8</a> appeared first on <a href="https://imwpost.com">THE IMW POST</a>.</p>]]></content:encoded></item><item><title><![CDATA[n7]]></title><description><![CDATA[Theory The following characteristics of a dispute resolution process can enhance the perception of procedural justice in ODR-]]></description><link>https://www.blog.sama.live/p/n7</link><guid isPermaLink="false">https://www.blog.sama.live/p/n7</guid><dc:creator><![CDATA[Sama]]></dc:creator><pubDate>Sun, 31 Oct 2021 18:55:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5Ijz!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa2446af-3cd6-4e5d-8b99-0437e4dd380e_1280x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Theory</strong></p><p>The following characteristics of a dispute resolution process can enhance the perception of procedural justice in ODR-</p><ul><li><p>Opportunity for voice-They got a chance to present their views, concerns, evidence to a third party</p></li><li><p>Third-party considered their views, concerns, and evidence</p></li><li><p>Third-party treated them in a dignified manner, the process itself was dignified.</p></li><li><p>Party perception about your even-handedness and attempt at fairness</p></li></ul><p><strong>Practice</strong></p><p>Life insurance companies do not have institutional arbitration processes, but they use an ombudsman mechanism to resolve their disputes.</p><p>The post <a href="https://imwpost.com/n7/">n7</a> appeared first on <a href="https://imwpost.com">THE IMW POST</a>.</p>]]></content:encoded></item><item><title><![CDATA[n6]]></title><description><![CDATA[Theory 3 common definitions of Online dispute resolution (ODR) &#8211;]]></description><link>https://www.blog.sama.live/p/n6</link><guid isPermaLink="false">https://www.blog.sama.live/p/n6</guid><dc:creator><![CDATA[Sama]]></dc:creator><pubDate>Sun, 24 Oct 2021 13:06:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5Ijz!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa2446af-3cd6-4e5d-8b99-0437e4dd380e_1280x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Theory</strong></p><p>3 common definitions of Online dispute resolution (ODR) &#8211;</p><ul><li><p>ODR is a public-facing digital space in which parties can convene to resolve their dispute or case.</p></li><li><p>ODR is the use of Information and Communication Technology (ICT) to resolve disputes.</p></li><li><p>ODR is not a what, it is a how.</p></li></ul><p><strong>Practice</strong></p><p>ODR is a legal process recognized (read &#8220;encouraged&#8221;) by courts and govt which helps you settle your disputes online.</p><p>The post <a href="https://imwpost.com/n6/">n6</a> appeared first on <a href="https://imwpost.com">THE IMW POST</a>.</p>]]></content:encoded></item><item><title><![CDATA[n5]]></title><description><![CDATA[Theory Emotional benefits of using ODR-]]></description><link>https://www.blog.sama.live/p/n5</link><guid isPermaLink="false">https://www.blog.sama.live/p/n5</guid><dc:creator><![CDATA[Sama]]></dc:creator><pubDate>Fri, 15 Oct 2021 09:38:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5Ijz!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa2446af-3cd6-4e5d-8b99-0437e4dd380e_1280x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Theory</strong></p><p>Emotional benefits of using ODR-</p><ul><li><p>Reduce Power Imbalance</p></li><li><p>Easy to take a break</p></li><li><p>Easy to reschedule</p></li><li><p>Can switch from video to audio</p></li><li><p>Can have a quick sidebar with any party at any time</p></li><li><p>Moderate volume, if people are too loud</p></li></ul><p><strong>Practice</strong></p><p>Resolving disputes is not easy across the world.</p><p>The post <a href="https://imwpost.com/n5/">n5</a> appeared first on <a href="https://imwpost.com">THE IMW POST</a>.</p>]]></content:encoded></item><item><title><![CDATA[n4]]></title><description><![CDATA[Theory While designing online dispute systems, it is imperative to have an online library of solutions. Whenever stakeholders are stuck at an impasse, they can leverage the outside information from this library and reach a resolution.]]></description><link>https://www.blog.sama.live/p/n4</link><guid isPermaLink="false">https://www.blog.sama.live/p/n4</guid><dc:creator><![CDATA[Sama]]></dc:creator><pubDate>Sun, 10 Oct 2021 17:47:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5Ijz!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa2446af-3cd6-4e5d-8b99-0437e4dd380e_1280x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Theory</strong></p><p>While designing online dispute systems, it is imperative to have an <em><strong>online library of solutions</strong></em>. Whenever stakeholders are stuck at an impasse, they can leverage the outside information from this library and reach a resolution.</p><p><strong>Practice</strong></p><p>Pre-Arbitration/Notice of Invocation/Section 21 is a prerequisite for initiating the arbitration.</p><p>Section 21 performs an important function of forging such consensus on several aspects viz. the scope of disputes, the determination of which disputes remain unresolved, which disputes are time-barred, identification of claims and counter-claims, and most importantly, on the choice and procedure of appointment of the arbitrator. Without such notice, the arbitration proceedings which are commenced would be unsustainable in law.</p><p>If the above-mentioned ingredients are covered, even a Loan Recall Notice (LRN) can function as a pre-arbitration notice.</p><p>The post <a href="https://imwpost.com/n4/">n4</a> appeared first on <a href="https://imwpost.com">THE IMW POST</a>.</p>]]></content:encoded></item><item><title><![CDATA[n3]]></title><description><![CDATA[Theory The 7 stages of negotiation are-]]></description><link>https://www.blog.sama.live/p/n3</link><guid isPermaLink="false">https://www.blog.sama.live/p/n3</guid><dc:creator><![CDATA[Sama]]></dc:creator><pubDate>Sat, 02 Oct 2021 13:11:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5Ijz!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa2446af-3cd6-4e5d-8b99-0437e4dd380e_1280x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Theory</strong></p><p>The 7 stages of negotiation are-</p><p>1) Preparation and setting goals,</p><p>2) Initial interaction and offers,</p><p>3) Exchanging and refining information,</p><p>4) Bargaining,</p><p>5) Move towards closure,</p><p>6) Reach impasse/agreement, and</p><p>7) Finalize the agreement</p><p><strong>Practice</strong></p><p>Imagine, a simple notice covering all these 7 stages.</p><p>The post <a href="https://imwpost.com/n3/">n3</a> appeared first on <a href="https://imwpost.com">THE IMW POST</a>.</p>]]></content:encoded></item><item><title><![CDATA[n2]]></title><description><![CDATA[Theory The 5 stages of recovering from conflict are-]]></description><link>https://www.blog.sama.live/p/n2</link><guid isPermaLink="false">https://www.blog.sama.live/p/n2</guid><dc:creator><![CDATA[Sama]]></dc:creator><pubDate>Sun, 26 Sep 2021 17:06:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5Ijz!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa2446af-3cd6-4e5d-8b99-0437e4dd380e_1280x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Theory</strong></p><p>The 5 stages of recovering from conflict are-</p><p>Denial- conflicts are like mirrors, exposes your own weaknesses,</p><p>Acceptance- accept the possibility that you are part of the problem,</p><p>Sacrifice- not mandatory to have a change of heart</p><p>Leap of Faith- movement</p><p>Renewal/Healing- It does not mean as good as before the conflict-but better, more wholesome, more compassionate, better beings. If you have such a fundamental change, it is less likely that you face the same conflict again in life. But if not, the conflict will keep returning.</p><p><strong>Practice</strong></p><p>In 60 minutes, 50,000+ Online Lok Adalat awards were generated on the Sama platform. Furthermore, 4 lakh cases were filed in an hour.&nbsp; Also, when working at scale, it is important to minimize the human element as much as possible. One error in inputting data can have a huge impact.</p><p>The post <a href="https://imwpost.com/n2/">n2</a> appeared first on <a href="https://imwpost.com">THE IMW POST</a>.</p>]]></content:encoded></item></channel></rss>