<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Oleg Pimenov</title>
    <description>The latest articles on DEV Community by Oleg Pimenov (@pimenovoleg).</description>
    <link>https://dev.to/pimenovoleg</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1196799%2Fb7db2850-8b89-41d6-a573-a278e3fefa06.jpeg</url>
      <title>DEV Community: Oleg Pimenov</title>
      <link>https://dev.to/pimenovoleg</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pimenovoleg"/>
    <language>en</language>
    <item>
      <title>Comparing Radix Angular and Angular CDK: A Practical Perspective</title>
      <dc:creator>Oleg Pimenov</dc:creator>
      <pubDate>Sat, 21 Sep 2024 12:38:22 +0000</pubDate>
      <link>https://dev.to/pimenovoleg/comparing-radix-angular-and-angular-cdk-a-practical-perspective-360f</link>
      <guid>https://dev.to/pimenovoleg/comparing-radix-angular-and-angular-cdk-a-practical-perspective-360f</guid>
      <description>&lt;p&gt;&lt;strong&gt;GitHub here&lt;/strong&gt;: &lt;a href="https://github.com/radix-ng/primitives" rel="noopener noreferrer"&gt;Radix NG&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In my previous article, we discussed the release of Radix for Angular, and now it's time to dive deeper and compare Radix Angular with Angular's CDK (Component Dev Kit). Both libraries offer robust solutions for building UI components, but they have some key differences that could impact your choice depending on your project needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shared Foundations: Radix Angular and CDK
&lt;/h2&gt;

&lt;p&gt;It’s important to note that Radix Angular inherits several components from Angular CDK. In essence, Radix Angular extends the CDK by providing additional UI patterns and enhancing functionality to help developers ship more accessible and flexible components faster.&lt;/p&gt;

&lt;p&gt;Angular’s CDK is an essential toolkit that provides foundational services and utilities for Angular component development, offering building blocks like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Overlay&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Drag and Drop&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scrolling&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accessibility utilities&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Virtual Scrolling&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Radix Angular leverages these functionalities, meaning when you’re using Radix, you’re still benefiting from Angular CDK's underlying power.&lt;/p&gt;

&lt;h2&gt;
  
  
  Radix Angular’s Unique Approach: Data Attributes
&lt;/h2&gt;

&lt;p&gt;While CDK lays down a solid foundation, Radix Angular brings in some game-changing features, especially in terms of styling and theming. One of the key highlights of Radix is its &lt;strong&gt;extensive use of&lt;/strong&gt; &lt;code&gt;data-*&lt;/code&gt; &lt;strong&gt;attributes&lt;/strong&gt;, which allows for more granular and flexible styling options.&lt;/p&gt;

&lt;p&gt;Radix promotes the use of custom &lt;code&gt;data-*&lt;/code&gt; attributes that can easily be leveraged by CSS or CSS-in-JS libraries. For example, instead of writing custom classes or deeply nested CSS rules, you can use &lt;code&gt;data-state="open"&lt;/code&gt; or &lt;code&gt;data-disabled="true"&lt;/code&gt; to style components based on their current state. This significantly reduces the CSS complexity and improves maintainability. CDK, on the other hand, does not provide this level of built-in flexibility for component styling and state management.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparison of Key Features
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Radix Angular&lt;/th&gt;
&lt;th&gt;Angular CDK&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Component Variety&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Rich set of UI components (e.g., Dialogs, Popovers, Tooltips) ready to use with accessible defaults&lt;/td&gt;
&lt;td&gt;Basic building blocks like overlays and scrolling utilities&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Data Attributes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Extensive use of &lt;code&gt;data-*&lt;/code&gt; attributes for styling&lt;/td&gt;
&lt;td&gt;No support for &lt;code&gt;data-*&lt;/code&gt; attributes, relies on standard CSS or Angular-style encapsulation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Accessibility&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Built-in accessibility-first approach, ensuring compliance with WAI-ARIA&lt;/td&gt;
&lt;td&gt;Provides ARIA utilities but less focus on out-of-the-box accessible components&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Customization&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Higher degree of customization through API and data attributes&lt;/td&gt;
&lt;td&gt;Requires more work to implement customization at the component level&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Focus Management&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Automatic focus traps and management in components like Dialog&lt;/td&gt;
&lt;td&gt;Manual setup via CDK’s FocusTrap module&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Integration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Built on top of Angular CDK, so it can be used alongside CDK utilities&lt;/td&gt;
&lt;td&gt;Standalone, requires more custom development for UI components&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Where Radix Angular Shines
&lt;/h2&gt;

&lt;p&gt;Radix Angular is especially appealing when you want to build a UI component library that’s easily customizable and accessible by default. The use of data attributes means you have finer control over state-based styling, and many components come with built-in behavior, such as focus management and keyboard navigation, that you’d otherwise have to configure manually when using Angular CDK.&lt;/p&gt;

&lt;p&gt;Moreover, Radix promotes a &lt;strong&gt;design-system-first&lt;/strong&gt; approach, making it ideal for teams who are heavily invested in creating scalable, consistent, and reusable UI components.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thoughts on the Future
&lt;/h2&gt;

&lt;p&gt;In my opinion, Radix Angular is a great step forward, particularly for those who need more than what Angular CDK offers out of the box. While the CDK is an excellent toolkit for low-level utilities, Radix Angular speeds up the development process by offering higher-level abstractions with flexibility at its core.&lt;/p&gt;

&lt;p&gt;However, the decision between Radix Angular and Angular CDK boils down to your project needs. If you’re looking for a more customizable, design-system-centric, and accessible approach, Radix Angular would be the better fit. But if you prefer a more DIY route and need full control over every detail of your components, Angular CDK might be the right choice.&lt;/p&gt;

&lt;p&gt;In the end, both libraries serve different purposes and can complement each other in many ways. Radix’s use of CDK as a foundation means you don’t necessarily have to pick one over the other—you can integrate both to get the best of both worlds.&lt;/p&gt;

&lt;p&gt;Let me know what you think—what’s your experience been like with Radix Angular so far? &lt;br&gt;
Would you prefer the flexibility of Radix, or do you feel more comfortable sticking with Angular CDK’s fundamentals?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/radix-ng/primitives" rel="noopener noreferrer"&gt;Radix NG&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Docs&lt;/strong&gt;: &lt;a href="https://radix-ng.com" rel="noopener noreferrer"&gt;Storybook Radix NG&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Next Docs&lt;/strong&gt;: &lt;a href="https://next.radix-ng.com" rel="noopener noreferrer"&gt;next.radix-ng.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>angular</category>
      <category>opensource</category>
      <category>radixui</category>
      <category>react</category>
    </item>
    <item>
      <title>Radix UI for Angular is Finally Available!</title>
      <dc:creator>Oleg Pimenov</dc:creator>
      <pubDate>Sun, 15 Sep 2024 09:09:23 +0000</pubDate>
      <link>https://dev.to/pimenovoleg/radix-for-angular-is-finally-available-2cp1</link>
      <guid>https://dev.to/pimenovoleg/radix-for-angular-is-finally-available-2cp1</guid>
      <description>&lt;h2&gt;
  
  
  Radix for Angular is finally available!
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is Radix UI?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://radix-ui.com/" rel="noopener noreferrer"&gt;Radix UI&lt;/a&gt; is a headless, unstyled component library that offers a highly customizable and accessible component experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Radix?
&lt;/h3&gt;

&lt;p&gt;Radix provides the flexibility to create fully customized components while managing complex logic and accessibility.&lt;/p&gt;

&lt;h3&gt;
  
  
  Radix Angular is here!
&lt;/h3&gt;

&lt;p&gt;We’re thrilled to introduce &lt;strong&gt;&lt;a href="https://github.com/radix-ng/primitives/" rel="noopener noreferrer"&gt;Radix Angular&lt;/a&gt;&lt;/strong&gt;! This port leverages Angular's reactive features, making integration seamless. Using Radix in Angular allows developers to maintain full control over component styling and behavior, while Radix takes care of accessibility, state management, and interaction patterns.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why use Radix in Angular?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Separation of concerns:&lt;/strong&gt; Angular’s structure pairs well with Radix, allowing clear division between UI logic and design.
Angular’s reactive model: Radix components can easily integrate with Angular’s reactive forms and state management, enhancing performance and flexibility.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customization:&lt;/strong&gt; Angular’s component-based architecture allows for complete customization, leveraging Radix's unstyled components to build a tailored design system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility:&lt;/strong&gt; Radix handles accessibility out-of-the-box, ensuring compliance with best practices for screen readers and keyboard navigation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalability:&lt;/strong&gt; Radix's modular nature fits perfectly in Angular's scalable architecture, making it easy to extend and adapt to large applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out the Radix Angular port on &lt;a href="https://github.com/radix-ng/primitives" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and visit the documentation at &lt;a href="https://radix-ng.com" rel="noopener noreferrer"&gt;radix-ng.com&lt;/a&gt; and &lt;a href="https://next.radix-ng.com" rel="noopener noreferrer"&gt;next.radix-ng.com&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>angular</category>
      <category>radixui</category>
      <category>opensource</category>
      <category>react</category>
    </item>
  </channel>
</rss>
