<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Leonardo Rafael Wehrmeister</title>
    <description>The latest articles on Forem by Leonardo Rafael Wehrmeister (@leonardorafael).</description>
    <link>https://forem.com/leonardorafael</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%2F609138%2F3e3ea75e-8e7f-4263-af52-3e05c408728a.jpg</url>
      <title>Forem: Leonardo Rafael Wehrmeister</title>
      <link>https://forem.com/leonardorafael</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/leonardorafael"/>
    <language>en</language>
    <item>
      <title>Beer CSS - A battle for less HTML and CSS</title>
      <dc:creator>Leonardo Rafael Wehrmeister</dc:creator>
      <pubDate>Fri, 07 Mar 2025 15:56:03 +0000</pubDate>
      <link>https://forem.com/leonardorafael/beer-css-a-battle-for-less-html-and-css-2he5</link>
      <guid>https://forem.com/leonardorafael/beer-css-a-battle-for-less-html-and-css-2he5</guid>
      <description>&lt;p&gt;The battleground of web development has long echoed with the clash of frameworks. For years, developers have navigated a dizzying array of HTML and CSS libraries, each promising to streamline the creation of beautiful, responsive websites. From the behemoth Bootstrap to the customizable Tailwind CSS, the landscape was a chaotic tapestry of competing philosophies.&lt;/p&gt;

&lt;p&gt;The "war of less" emerged as a counter-movement, a rebellion against the bloat and complexity that had crept into many popular frameworks. Developers yearned for simplicity, for frameworks that empowered them without imposing rigid structures or unnecessary overhead. This shift saw the rise of minimalist contenders, each vying for the crown of lightweight efficiency.&lt;/p&gt;

&lt;p&gt;Among these contenders, Beer CSS (👉&lt;a href="https://www.beercss.com" rel="noopener noreferrer"&gt;Homepage&lt;/a&gt; and 👉&lt;a href="https://github.com/beercss/beercss" rel="noopener noreferrer"&gt;Github&lt;/a&gt;) emerged as a surprising alternative. While others focused on intricate configuration and extensive component libraries, Beer CSS took a refreshingly straightforward approach. It championed semantic HTML, leveraging the power of native browser capabilities and providing only the essential styling to enhance, not replace, the developer's control.   &lt;/p&gt;

&lt;p&gt;The key to Beer CSS's triumph lay in its philosophy:&lt;/p&gt;

&lt;p&gt;⚔️ &lt;strong&gt;Minimalism:&lt;/strong&gt; It stripped away the unnecessary, focusing on core styling principles and a lean codebase. This translated to faster load times and improved performance, a crucial factor in today's performance-driven web. &lt;/p&gt;

&lt;p&gt;⚔️ &lt;strong&gt;Semantic HTML:&lt;/strong&gt; Encouraging developers to write clean, meaningful HTML, Beer CSS empowered them to create accessible and maintainable websites.&lt;/p&gt;

&lt;p&gt;⚔️ &lt;strong&gt;Flexibility:&lt;/strong&gt; Is based on Material Design 3 but not delivery a rigid system. It provided a set of utility classes that could be combined and customized, without any custom CSS. &lt;br&gt;
👉&lt;a href="https://codepen.io/leo-bnu/pen/BaGOLvJ" rel="noopener noreferrer"&gt;See an example here&lt;/a&gt;&lt;br&gt;
👉&lt;a href="https://codepen.io/leo-bnu/pen/poLeoQa" rel="noopener noreferrer"&gt;And other example here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⚔️ &lt;strong&gt;Ease of Use:&lt;/strong&gt; Beer CSS's simplicity made it incredibly easy to learn and implement, even for novice developers. Its documentation was clear and concise, further contributing to its appeal.&lt;/p&gt;

&lt;p&gt;⚔️ &lt;strong&gt;Beyond Prototyping:&lt;/strong&gt; Many minimalist CSS frameworks prioritize rapid prototyping, offering a basic set of styles for quick mockups. Beer CSS, while excellent for prototyping, aims to be a viable solution for production-ready websites.&lt;/p&gt;

&lt;p&gt;In a world where complexity often masqueraded as power, Beer CSS offered a refreshing alternative. It reminded developers that less is often more, that true power lies in understanding the fundamentals and leveraging the capabilities of the platform itself.&lt;/p&gt;

&lt;p&gt;The "war of less" wasn't about eliminating frameworks entirely; it was about finding the right balance between convenience and control. Beer CSS, with its focus on simplicity, performance, and developer empowerment, ultimately proved to be the champion, proving that a light, refreshing approach can win the day.&lt;/p&gt;

&lt;p&gt;Related post: 👉&lt;a href="https://dev.to/leonardorafael/beer-css-the-secret-weapon-for-material-design-3-uis-53i3"&gt;https://dev.to/leonardorafael/beer-css-the-secret-weapon-for-material-design-3-uis-53i3&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>html</category>
      <category>frontend</category>
      <category>ui</category>
    </item>
    <item>
      <title>Beer CSS: the revolution in web performance and ergonomics</title>
      <dc:creator>Leonardo Rafael Wehrmeister</dc:creator>
      <pubDate>Thu, 05 Sep 2024 11:38:20 +0000</pubDate>
      <link>https://forem.com/leonardorafael/beer-css-the-revolution-in-web-performance-and-ergonomics-51i9</link>
      <guid>https://forem.com/leonardorafael/beer-css-the-revolution-in-web-performance-and-ergonomics-51i9</guid>
      <description>&lt;p&gt;Web design and development are constantly evolving under the propulsion of new technologies. Among these, Beer CSS stands out as a promising CSS framework that redefines the rules of minimalist design while superamplifying performance. Based on the robust Material Design 3 but considerably lighter, this framework targets an unprecedented optimization of the loading speed and responsiveness of websites.&lt;/p&gt;

&lt;h2&gt;
  
  
  The advent of a new framework: an introduction to Beer CSS
&lt;/h2&gt;

&lt;p&gt;In the saturated world of CSS frameworks, Beer CSS emerges as a unique solution. This project adopts the principles of Material Design 3 while overcoming the usual flaws related to the heaviness of conventional frameworks. With a size tenfold lower than its competitors, 10 times lighter than general frameworks based on Material Design, Beer CSS offers a solid base to create fluid and attractive user interfaces with disconcerting ease. Developers will quickly perceive the benefits of such a tool since it facilitates a multitude of common operations while drastically accelerating development times.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools and Compatibility: The Versatility of Beer CSS
&lt;/h2&gt;

&lt;p&gt;Imagine having a tool in your hands that allows you to create fluid and attractive user interfaces with disconcerting ease. That’s exactly what Beer CSS offers, a CSS framework that revolutionizes web design by offering increased flexibility to developers. Thanks to its compatibility with various HTML preprocessors such as Pug or Haml, Beer CSS integrates seamlessly into virtually any project, increasing its portability and applicability.&lt;/p&gt;

&lt;p&gt;But how does it work exactly? The Beer CSS installation relies on a limited number of lightweight files: the stylesheet, the JS components and the dynamic color JS lib to manage the integration of dark/light mode or advanced color modes. And it doesn't stop there! Its great modularity and its non-invasive footprint also allow it to be completed, for example, by the support of icons by the font of your choice, SVGs or the use of specialized libs like Font Awesome.&lt;/p&gt;

&lt;p&gt;This way, developers can not only maintain cleaner and more structured code, but also benefit from exceptional modularity that adapts perfectly to the specific requirements of each project. This modularity means that Beer CSS can be used with many template engines as well as in pure HTML for designing website page templates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance Boost: Why Beer CSS is a Game Changer
&lt;/h2&gt;

&lt;p&gt;With its reduced size, Beer CSS is inherently designed to improve web page &lt;strong&gt;performance&lt;/strong&gt;. In a world where loading speed is crucial for user engagement and SEO, using Beer CSS means minimizing page rendering time. This performance gain is not insignificant; it directly contributes to improving Core Web Vitals scores, which are essential for a good user experience and effective organic SEO. Beer CSS's lightweight design allows it to significantly reduce response times, ensuring smooth and responsive browsing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Flexibility and customization: adapt Beer CSS to your needs
&lt;/h2&gt;

&lt;p&gt;Imagine you’re an architect designing a building from scratch. You need to consider the needs of your future residents, with varied living spaces, staircases, bedrooms, bathrooms, etc. That’s how Beer CSS works, your new companion for designing elegant and intuitive user interfaces. Beyond its performance boosting ability, Beer CSS offers great flexibility. But what does this mean for developers in concrete terms?&lt;/p&gt;

&lt;p&gt;Let’s take a concrete example. If you imagine creating a complex e-commerce site or a personal blog, you need a framework that can adapt to your specific needs. And that’s exactly what Beer CSS offers, a solid, simplified and adaptable foundation for any context. This gives developers a wide range of customizable tools and components, allowing them to adapt the framework to different visual styles and requirements. And what makes this possible?&lt;/p&gt;

&lt;p&gt;This is thanks in part to Google’s Material Design 3 legacy, which brings ergonomic recommendations to the top of the web project design. This means that Beer CSS incorporates proven concepts that improve the site’s navigability and interactivity, providing a fluid and accessible experience for users. So you can start creating your web project, confident that Beer CSS gives you the tools you need to meet your needs and those of your users.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adjustable color palette&lt;/li&gt;
&lt;li&gt;Flexible grid system&lt;/li&gt;
&lt;li&gt;Dynamic components&lt;/li&gt;
&lt;li&gt;In-depth use of HTML semantics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This adaptability makes Beer CSS a preferred choice for projects requiring both aesthetic consistency and uniqueness.&lt;/p&gt;

&lt;h2&gt;
  
  
  Promote better user ergonomics
&lt;/h2&gt;

&lt;p&gt;User ergonomics or UX is now a central pillar in web development. Beer CSS enhances this dimension by making it easy to create elegant and intuitive interfaces. Thanks to its base from Material Design 3, it integrates proven concepts that improve the navigability and interactivity of the site. Thus, users benefit from a fluid experience, with responsive and accessible interfaces regardless of the device used.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Concrete examples that speak for themselves:&lt;/strong&gt; Have you ever visited an e-commerce application with buttons that react instantly, providing a pleasant and engaging user experience? Did you know that these elegant and responsive interfaces may be the result of Beer CSS? This innovative CSS framework does not just deliver on promises. It provides concrete examples, such as a complex layout resembling a Reddit interface or a YouTube homepage, a Gmail interface example, that show its capabilities in terms of e-commerce integration and sophisticated designs. More examples and demos of Beer CSS can also be found on Codepen.&lt;/p&gt;

&lt;p&gt;By visiting the &lt;a href="https://www.beercss.com" rel="noopener noreferrer"&gt;Beer CSS website&lt;/a&gt; , you will discover these and many other real-world examples. They are a testament to its flexibility and ability to adapt to various visual styles and requirements. Whether for a personal blog or a complex e-commerce platform, Beer CSS offers a solid foundation that is simplified and adaptable to any context. Developers, prepare to be amazed by its exceptional modularity and ease of use, which will propel your projects to new heights.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sponsors and backers: a community committed to the future of Beer CSS
&lt;/h2&gt;

&lt;p&gt;Behind every great project, there is often a community of enthusiasts and technical and financial supporters. Beer CSS is no exception. The project already benefits from the support of many sponsors and backers from the web development community. This solidarity not only demonstrates confidence in the promise of Beer CSS but also ensures its evolution and sustainability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Future framework integration
&lt;/h2&gt;

&lt;p&gt;As web development continues to evolve, Beer CSS stands as a revolutionary CSS framework that meets users’ growing expectations for speed, accessibility, simplicity, and usability. By integrating the latest trends in frontend development, Beer CSS offers a modern, efficient, and stylish solution for developers looking to improve the performance and user experience of their websites. With its exceptional modularity and ease of use, Beer CSS is poised to become a cornerstone for future web constructions.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The original post is in French, and you can get it here &lt;a href="https://leblogduwebmaster.fr/article274/beer-css-framework" rel="noopener noreferrer"&gt;https://leblogduwebmaster.fr/article274/beer-css-framework&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>ui</category>
      <category>designsystem</category>
    </item>
    <item>
      <title>Semantic HTML vs Web Components: Building Blocks of a Better Web</title>
      <dc:creator>Leonardo Rafael Wehrmeister</dc:creator>
      <pubDate>Thu, 18 Jul 2024 10:12:25 +0000</pubDate>
      <link>https://forem.com/leonardorafael/semantic-html-vs-web-components-building-blocks-of-a-better-web-1j09</link>
      <guid>https://forem.com/leonardorafael/semantic-html-vs-web-components-building-blocks-of-a-better-web-1j09</guid>
      <description>&lt;p&gt;Front-end development is all about crafting user experiences, and the foundation of that experience lies in the code itself. Two powerful tools in our arsenal are semantic HTML and web components. But how do they differ, and when should you use each?&lt;/p&gt;

&lt;h2&gt;
  
  
  Semantic HTML: The Cornerstone of Structure
&lt;/h2&gt;

&lt;p&gt;Imagine a house built entirely of bricks, with no distinction between walls, doors, and windows. That's essentially what non-semantic HTML is like. Semantic HTML, on the other hand, uses descriptive tags like &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt; to define the meaning and purpose of content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Here's why semantic HTML rocks:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Accessibility:&lt;/strong&gt; Screen readers and assistive technologies can interpret the structure of a page, making it easier for everyone to navigate and understand your content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Maintainability:&lt;/strong&gt; Code with clear meaning is easier for you and other developers to understand and modify later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SEO:&lt;/strong&gt; Search engines can glean more context from semantic markup, potentially improving your search ranking.&lt;/p&gt;

&lt;h2&gt;
  
  
  Web Components: Reusable UI Lego Blocks
&lt;/h2&gt;

&lt;p&gt;Web components are like Lego bricks for your web applications. They encapsulate UI elements with their own HTML structure, styles, and behavior. This allows you to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create custom UI elements:&lt;/strong&gt; Build custom components with highly interactive elements, that can be easily integrated across your application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Encapsulation:&lt;/strong&gt; Isolate styles and behavior within the component, preventing conflicts with other parts of your code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing the Right Tool
&lt;/h2&gt;

&lt;p&gt;So, when do you use which? Here's a quick guide:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use semantic HTML whenever possible:&lt;/strong&gt; For any page structure, if you can use a default html tag, semantic HTML is the clear winner.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consider complexity:&lt;/strong&gt; For highly interactive elements, web components offer more control over behavior compared to plain HTML.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Future is Bright (and Semantic!)
&lt;/h2&gt;

&lt;p&gt;Web components are a powerful tool, but they shouldn't replace semantic HTML entirely.  Think of semantic HTML as the foundation and web components as the custom building blocks that create a beautiful and functional user experience. By using them together, you can craft websites that are not only user-friendly and accessible but also a joy to develop and maintain.&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>webdev</category>
      <category>html</category>
      <category>ui</category>
    </item>
    <item>
      <title>Beer CSS: The Secret Weapon for Material Design 3 UIs</title>
      <dc:creator>Leonardo Rafael Wehrmeister</dc:creator>
      <pubDate>Thu, 27 Jun 2024 15:05:43 +0000</pubDate>
      <link>https://forem.com/leonardorafael/beer-css-the-secret-weapon-for-material-design-3-uis-53i3</link>
      <guid>https://forem.com/leonardorafael/beer-css-the-secret-weapon-for-material-design-3-uis-53i3</guid>
      <description>&lt;p&gt;Ever wanted to build sharp, modern UIs with Material Design 3 but without the bloat of other frameworks? Look no further than, go ahead with Beer CSS!&lt;/p&gt;

&lt;h3&gt;
  
  
  What makes Beer CSS a great choice for your next project?
&lt;/h3&gt;

&lt;p&gt;Let's highlight some points:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧙‍♂️Material Design Mastery:&lt;/strong&gt; Built specifically for Material Design 3, Beer CSS lets you implement Google's latest design language with ease. Think clean layouts, subtle shadows, and a focus on user experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🏅Lightweight Champion:&lt;/strong&gt; Unlike some frameworks that can weigh down your site, Beer CSS is a featherweight. It boasts a tiny footprint, ensuring your website loads fast – perfect for mobile users and keeping your SEO happy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💪Code Like a Boss:&lt;/strong&gt; Forget complex setups and configurations. Beer CSS is all about simplicity. Just include the library and start styling your UI with its pre-made utility classes. Buttons, typography, spacing – it's all there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🪄Tweak to Perfection:&lt;/strong&gt; While Beer CSS champions Material Design 3, it doesn't hold you hostage. You can still customize things to match your project's unique needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting Started is a Breeze
&lt;/h3&gt;

&lt;p&gt;No time for lengthy documentation dives? Beer CSS gets you coding fast.  Think of it as a UI kit with ready-to-use classes for all the essentials. Just add the library to your HTML and start applying classes to your elements.&lt;/p&gt;

&lt;h3&gt;
  
  
  Need some real world examples?
&lt;/h3&gt;

&lt;p&gt;If I told you that you can do the work with a half of code, do you believe me? Beer CSS has an unbelievable DX. You will get it when you start to work with it. Here are some real world examples:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A menu dropdown&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;// Beer CSS
&lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;button&amp;gt;&lt;/span&gt;Button&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;menu&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;Item 1&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;Item 2&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;Item 3&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/menu&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

// Vuetify
&lt;span class="nt"&gt;&amp;lt;v-menu&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;template&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;v-btn&lt;/span&gt; &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"primary"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Button&lt;span class="nt"&gt;&amp;lt;/v-btn&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/template&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;v-list&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;v-list-item&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;v-list-item-title&amp;gt;&lt;/span&gt;Item 1&lt;span class="nt"&gt;&amp;lt;/v-list-item-title&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;v-list-item-title&amp;gt;&lt;/span&gt;Item 2&lt;span class="nt"&gt;&amp;lt;/v-list-item-title&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;v-list-item-title&amp;gt;&lt;/span&gt;Item 3&lt;span class="nt"&gt;&amp;lt;/v-list-item-title&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/v-list-item&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/v-list&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/v-menu&amp;gt;&lt;/span&gt;

// Quasar
&lt;span class="nt"&gt;&amp;lt;q-btn&lt;/span&gt; &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"primary"&lt;/span&gt; &lt;span class="na"&gt;label=&lt;/span&gt;&lt;span class="s"&gt;"Button"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;q-menu&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-list&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-item&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;q-item-section&amp;gt;&lt;/span&gt;Item 1&lt;span class="nt"&gt;&amp;lt;/q-item-section&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-item&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-item&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;q-item-section&amp;gt;&lt;/span&gt;Item 2&lt;span class="nt"&gt;&amp;lt;/q-item-section&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-item&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-item&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;q-item-section&amp;gt;&lt;/span&gt;Item 3&lt;span class="nt"&gt;&amp;lt;/q-item-section&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-item&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/q-list&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/q-menu&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/q-btn&amp;gt;&lt;/span&gt;

// Beer CSS
// Multi level menu dropdown (do you believe? 🤯)
&lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;button&amp;gt;&lt;/span&gt;Button&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;menu&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;Item 1&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;Item 2&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;Item 3&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;
      More Items
      &lt;span class="nt"&gt;&amp;lt;menu&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;Item 1&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;Item 2&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;Item 3&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/menu&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/menu&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;A card with buttons&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;// Beer CSS
&lt;span class="nt"&gt;&amp;lt;article&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h6&amp;gt;&lt;/span&gt;Title&lt;span class="nt"&gt;&amp;lt;/h6&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;nav&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;button&amp;gt;&lt;/span&gt;Button 1&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;button&amp;gt;&lt;/span&gt;Button 2&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/article&amp;gt;&lt;/span&gt;

// Vuetify
&lt;span class="nt"&gt;&amp;lt;v-card&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;v-card-item&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h6&amp;gt;&lt;/span&gt;Title&lt;span class="nt"&gt;&amp;lt;/h6&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/v-card-item&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;v-card-actions&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;v-btn&amp;gt;&lt;/span&gt;Button 1&lt;span class="nt"&gt;&amp;lt;/v-btn&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;v-btn&amp;gt;&lt;/span&gt;Button 2&lt;span class="nt"&gt;&amp;lt;/v-btn&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/v-card-actions&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/v-card&amp;gt;&lt;/span&gt;

// Quasar
&lt;span class="nt"&gt;&amp;lt;q-card&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;q-card-section&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h6&amp;gt;&lt;/span&gt;Title&lt;span class="nt"&gt;&amp;lt;/h6&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/q-card-section&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;q-card-actions&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-btn&amp;gt;&lt;/span&gt;Button 1&lt;span class="nt"&gt;&amp;lt;/q-btn&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-btn&amp;gt;&lt;/span&gt;Button 2&lt;span class="nt"&gt;&amp;lt;/q-btn&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/q-card-actions&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/q-card&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Reusing the same html content&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;// A card with title + button
&lt;span class="nt"&gt;&amp;lt;article&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h6&amp;gt;&lt;/span&gt;Title&lt;span class="nt"&gt;&amp;lt;/h6&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;nav&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;button&amp;gt;&lt;/span&gt;Button 1&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/article&amp;gt;&lt;/span&gt;

// A dialog with title + button
&lt;span class="nt"&gt;&amp;lt;dialog&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h6&amp;gt;&lt;/span&gt;Title&lt;span class="nt"&gt;&amp;lt;/h6&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;nav&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;button&amp;gt;&lt;/span&gt;Button 1&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/dialog&amp;gt;&lt;/span&gt;

// A menu dropdown with title + button
&lt;span class="nt"&gt;&amp;lt;menu&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h6&amp;gt;&lt;/span&gt;Title&lt;span class="nt"&gt;&amp;lt;/h6&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;nav&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;button&amp;gt;&lt;/span&gt;Button 1&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/menu&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Customizing with readable global helpers&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;article&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"small|medium|large|round|no-round|border..."&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h6&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"small|medium|large..."&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Title&lt;span class="nt"&gt;&amp;lt;/h6&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;nav&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"right-align|center-align|left-align..."&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"small|medium|large|round|no-round|border..."&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Button 1&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/article&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Ready to Brew Up Something Awesome?
&lt;/h3&gt;

&lt;p&gt;Head over to the Beer CSS website (&lt;a href="https://www.beercss.com" rel="noopener noreferrer"&gt;https://www.beercss.com&lt;/a&gt;) to explore the docs and see it in action. You can also grab it from Github (&lt;a href="https://github.com/beercss/beercss" rel="noopener noreferrer"&gt;https://github.com/beercss/beercss&lt;/a&gt;) and get started building those sleek Material Design 3 UIs in no time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is Beer CSS the Right Choice for You?
&lt;/h3&gt;

&lt;p&gt;If you prioritize speed, ease of use, and a clean Material Design 3 aesthetic, Beer CSS is your best friend. However, if you need extreme design customization or aren't a fan of Material Design 3, you might want to check out other general purpose framework.&lt;/p&gt;

</description>
      <category>ui</category>
      <category>dx</category>
      <category>css</category>
      <category>frontend</category>
    </item>
    <item>
      <title>List expansions - Beer CSS Tips #5</title>
      <dc:creator>Leonardo Rafael Wehrmeister</dc:creator>
      <pubDate>Wed, 12 Jun 2024 03:21:49 +0000</pubDate>
      <link>https://forem.com/leonardorafael/list-expansions-beer-css-tips-5-384e</link>
      <guid>https://forem.com/leonardorafael/list-expansions-beer-css-tips-5-384e</guid>
      <description>&lt;p&gt;Hello,&lt;/p&gt;

&lt;p&gt;I want to share a serie of posts containing some tips of Beer CSS. Beer CSS is a new framework around, based on (not restricted to) Material Design 3. Material Design 3 is a design system created by Google. In this post, we will learn about the list expansions. The list expansions are lists with items and subitems.&lt;/p&gt;

&lt;p&gt;If you don't known the concept of &lt;strong&gt;settings&lt;/strong&gt;, &lt;strong&gt;elements&lt;/strong&gt; and &lt;strong&gt;helpers&lt;/strong&gt; used by Beer CSS, you can &lt;a href="https://github.com/beercss/beercss/blob/main/docs/INDEX.md" rel="noopener noreferrer"&gt;read this page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;1) First, we will create some items inside an &lt;code&gt;article&lt;/code&gt; element.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;article&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 1&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 2&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 3&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 4&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 5&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/article&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2) Now we will use the &lt;code&gt;details&lt;/code&gt; and &lt;code&gt;summary&lt;/code&gt; elements to have items and subitems. Use the &lt;code&gt;none&lt;/code&gt; helper on &lt;code&gt;summary&lt;/code&gt; element to empty the default styles from browser. In this example, after click on "Item 1" it will show the other items:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;article&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;details&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;summary&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"none"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 1&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 2&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 3&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 4&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 5&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/details&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/article&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3) You can reuse the items and subitems code in any other element like &lt;code&gt;nav&lt;/code&gt;, &lt;code&gt;menu&lt;/code&gt;, &lt;code&gt;tooltip&lt;/code&gt;, &lt;code&gt;dialog&lt;/code&gt;, etc:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;nav&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"drawer"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;details&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;summary&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"none"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 1&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 2&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 3&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 4&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 5&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/details&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4) How about a multi-level menu? We can do a multi-level menu using the same code inside a &lt;code&gt;tooltip&lt;/code&gt; element. And the &lt;code&gt;tooltip&lt;/code&gt; element inside a &lt;code&gt;summary&lt;/code&gt; element:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;nav&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"drawer"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;details&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;summary&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"none"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 1&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"tooltip max right"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;details&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;summary&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"none"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 1&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 2&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 3&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 4&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 5&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/details&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 2&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 3&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 4&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row wave"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 5&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/details&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;strong&gt;helpers&lt;/strong&gt; of Beer CSS can be used in any &lt;strong&gt;element&lt;/strong&gt;. This makes the framework very customizable. It has the same logic and names in all ways. This makes the Beer CSS very easy to understand and reuse. I made a codepen to see some list expansions created with Beer CSS &lt;a href="https://codepen.io/leo-bnu/pen/Baewrgg" rel="noopener noreferrer"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Hope you enjoy this article. Thanks for read!&lt;/p&gt;

&lt;p&gt;Beer CSS:&lt;br&gt;
&lt;a href="https://www.beercss.com" rel="noopener noreferrer"&gt;https://www.beercss.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Material Design 3:&lt;br&gt;
&lt;a href="https://m3.material.io/" rel="noopener noreferrer"&gt;https://m3.material.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Codepen:&lt;br&gt;
&lt;a href="https://codepen.io/leo-bnu/pen/Baewrgg" rel="noopener noreferrer"&gt;https://codepen.io/leo-bnu/pen/Baewrgg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;About settings, elements and helpers used by Beer CSS:&lt;br&gt;
&lt;a href="https://github.com/beercss/beercss/blob/main/docs/INDEX.md" rel="noopener noreferrer"&gt;https://github.com/beercss/beercss/blob/main/docs/INDEX.md&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>tutorial</category>
      <category>ui</category>
      <category>ux</category>
    </item>
    <item>
      <title>Main layouts - Beer CSS Tips #4</title>
      <dc:creator>Leonardo Rafael Wehrmeister</dc:creator>
      <pubDate>Mon, 06 May 2024 12:09:04 +0000</pubDate>
      <link>https://forem.com/leonardorafael/main-layouts-beer-css-tips-4-536i</link>
      <guid>https://forem.com/leonardorafael/main-layouts-beer-css-tips-4-536i</guid>
      <description>&lt;p&gt;Hello,&lt;/p&gt;

&lt;p&gt;I want to share a serie of posts containing some tips of Beer CSS. Beer CSS is a new framework around, based on (not restricted to) Material Design 3. Material Design 3 is a design system created by Google. In this post, we will learn about the main layout. The main layout is the basic structure of your page.&lt;/p&gt;

&lt;p&gt;If you don't known the concept of &lt;strong&gt;settings&lt;/strong&gt;, &lt;strong&gt;elements&lt;/strong&gt; and &lt;strong&gt;helpers&lt;/strong&gt; used by Beer CSS, you can &lt;a href="https://github.com/beercss/beercss/blob/main/docs/INDEX.md" rel="noopener noreferrer"&gt;read this page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;1) First, you need to create a &lt;code&gt;main&lt;/code&gt; element. Use &lt;code&gt;responsive&lt;/code&gt; helper to be responsive with other elements around.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;main&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"responsive"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2) You can create a &lt;code&gt;nav&lt;/code&gt; element as navigation rail. Use &lt;code&gt;left&lt;/code&gt; and &lt;code&gt;right&lt;/code&gt; helpers to set the position. Navigation rail must be placed before all other elements.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;nav&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"left"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&lt;/span&gt;home&lt;span class="nt"&gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;Home&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&lt;/span&gt;search&lt;span class="nt"&gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;Search&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&lt;/span&gt;share&lt;span class="nt"&gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;Share&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3) If you want a navigation drawer, just add the &lt;code&gt;drawer&lt;/code&gt; helper to &lt;code&gt;nav&lt;/code&gt; element. Navigation drawer must be placed before all other elements.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;nav&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"left drawer"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&lt;/span&gt;home&lt;span class="nt"&gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;Home&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&lt;/span&gt;search&lt;span class="nt"&gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;Search&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&lt;/span&gt;share&lt;span class="nt"&gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;Share&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4) Add the &lt;code&gt;header&lt;/code&gt; and &lt;code&gt;footer&lt;/code&gt; elements as you wish. By default &lt;code&gt;header&lt;/code&gt; and &lt;code&gt;footer&lt;/code&gt; elements has a background color. Add the &lt;code&gt;transparent&lt;/code&gt; helper to set the background color as transparent.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;header&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"transparent"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/header&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;footer&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"transparent"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/footer&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;5) Now combine all to generate the main layout of your page. The semantic HTML helps a lot here.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;
&lt;span class="nt"&gt;&amp;lt;nav&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"left"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&lt;/span&gt;home&lt;span class="nt"&gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;Home&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&lt;/span&gt;search&lt;span class="nt"&gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;Search&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;i&amp;gt;&lt;/span&gt;share&lt;span class="nt"&gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;Share&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;header&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"transparent"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/header&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;main&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"responsive"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/main&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;footer&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"transparent"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/footer&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;strong&gt;helpers&lt;/strong&gt; of Beer CSS can be used in any &lt;strong&gt;element&lt;/strong&gt;. This makes the framework very customizable. It has the same logic and names in all ways. This makes the Beer CSS very easy to understand and reuse. I made a codepen to see some random main layout created with Beer CSS &lt;a href="https://codepen.io/leo-bnu/pen/NWmmmMd" rel="noopener noreferrer"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Hope you enjoy this article. Thanks for read!&lt;/p&gt;

&lt;p&gt;Beer CSS:&lt;br&gt;
&lt;a href="https://www.beercss.com" rel="noopener noreferrer"&gt;https://www.beercss.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Material Design 3:&lt;br&gt;
&lt;a href="https://m3.material.io/" rel="noopener noreferrer"&gt;https://m3.material.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Codepen:&lt;br&gt;
&lt;a href="https://codepen.io/leo-bnu/pen/NWmmmMd" rel="noopener noreferrer"&gt;https://codepen.io/leo-bnu/pen/NWmmmMd&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;About settings, elements and helpers used by Beer CSS:&lt;br&gt;
&lt;a href="https://github.com/beercss/beercss/blob/main/docs/INDEX.md" rel="noopener noreferrer"&gt;https://github.com/beercss/beercss/blob/main/docs/INDEX.md&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ui</category>
      <category>css</category>
      <category>ux</category>
    </item>
    <item>
      <title>Beyond Basic Functions: Explore Currying in JavaScript</title>
      <dc:creator>Leonardo Rafael Wehrmeister</dc:creator>
      <pubDate>Tue, 26 Mar 2024 13:35:53 +0000</pubDate>
      <link>https://forem.com/leonardorafael/beyond-basic-functions-explore-currying-in-javascript-16lp</link>
      <guid>https://forem.com/leonardorafael/beyond-basic-functions-explore-currying-in-javascript-16lp</guid>
      <description>&lt;p&gt;Currying in JavaScript is a functional programming technique that involves transforming a function with multiple arguments into a series of functions, each taking a single argument at a time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Here's a breakdown of what currying does:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Takes a function with multiple arguments:&lt;/strong&gt; Imagine a function that adds three numbers together.&lt;br&gt;
&lt;strong&gt;Transforms it into a sequence of functions:&lt;/strong&gt; Currying breaks this function down into smaller functions, where each function takes one argument and returns a new function that awaits the remaining arguments.&lt;br&gt;
&lt;strong&gt;Partial application:&lt;/strong&gt; You can call the curried function with one argument at a time, and it remembers the provided arguments until all arguments are supplied.&lt;/p&gt;
&lt;h2&gt;
  
  
  Benefits of currying include:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Improved code reusability:&lt;/strong&gt; By creating smaller functions, you can reuse them in different contexts.&lt;br&gt;
&lt;strong&gt;Enhanced code composability:&lt;/strong&gt; Curried functions can be easily combined to create more complex functionality.&lt;br&gt;
&lt;strong&gt;Increased flexibility:&lt;/strong&gt; You can provide arguments partially and build up the function call over time.&lt;/p&gt;

&lt;p&gt;Here are some code examples of currying in JavaScript using strings:&lt;/p&gt;
&lt;h2&gt;
  
  
  1. Curried Greeter:
&lt;/h2&gt;

&lt;p&gt;This example creates a curried function for building greetings:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;salutation&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;salutation&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;, &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;!`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sayHello&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sayHi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hi&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;sayHello&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Alice&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: Hello, Alice!&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;sayHi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Bob&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: Hi, Bob!&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;We define a function greet that takes a salutation string (salutation).&lt;/li&gt;
&lt;li&gt;It returns a function that takes a name string (name).&lt;/li&gt;
&lt;li&gt;The returned function constructs the greeting by combining the salutation and name.&lt;/li&gt;
&lt;li&gt;We create separate functions sayHello and sayHi using partial application with different greetings.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Curried String Manipulation:
&lt;/h2&gt;

&lt;p&gt;This example demonstrates currying for string manipulations:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;modifyString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;action&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;switch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;action&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;uppercase&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toUpperCase&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
      &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;lowercase&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toLowerCase&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
      &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;trim&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
      &lt;span class="nl"&gt;default&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;toUpper&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;modifyString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;uppercase&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;toLower&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;modifyString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;lowercase&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;trimString&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;modifyString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;trim&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;toUpper&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hello world&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: HELLO WORLD&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;toLower&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;HI THERE&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: hi there&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;trimString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;   spaces around  &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: spaces around&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;We define a function modifyString that takes an action string (action).&lt;/li&gt;
&lt;li&gt;It returns a function that takes a string (str).&lt;/li&gt;
&lt;li&gt;The inner function uses a switch statement to perform the specified action on the string based on the provided action.&lt;/li&gt;
&lt;li&gt;We create separate functions for specific actions like toUpper, toLower, and trimString using partial application.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Curried String Formatting:
&lt;/h2&gt;

&lt;p&gt;This example showcases currying to create a reusable string formatter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;formatString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;suffix&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;}${&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;}${&lt;/span&gt;&lt;span class="nx"&gt;suffix&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;announcement&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;formatString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;[ Announcement]: &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;announcement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;JavaScript is awesome&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: [ Announcement]: JavaScript is awesome!&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;We define a function formatString that takes a prefix string (prefix) and a suffix string (suffix).&lt;/li&gt;
&lt;li&gt;It returns a function that takes a string (str).&lt;/li&gt;
&lt;li&gt;The returned function combines the prefix, string, and suffix to create the formatted output.&lt;/li&gt;
&lt;li&gt;We create a function announcement using partial application with a specific prefix and suffix for announcements.&lt;/li&gt;
&lt;li&gt;These examples demonstrate how currying allows you to create reusable functions for various string manipulations and formatting tasks in JavaScript.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While not essential for every situation, currying provides a valuable tool for functional programmers and those seeking to write cleaner, more maintainable JavaScript code. It's a technique worth exploring to enhance your functional programming skills and potentially improve the structure and readability of your JavaScript projects.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>coding</category>
      <category>functional</category>
    </item>
    <item>
      <title>Design Systems for 2024</title>
      <dc:creator>Leonardo Rafael Wehrmeister</dc:creator>
      <pubDate>Tue, 27 Feb 2024 19:42:40 +0000</pubDate>
      <link>https://forem.com/leonardorafael/design-systems-for-2024-1pog</link>
      <guid>https://forem.com/leonardorafael/design-systems-for-2024-1pog</guid>
      <description>&lt;p&gt;A design system is a collection of reusable components and guidelines that form the foundation for user interfaces (UI) across various digital products within an organization. It essentially acts as a single source of truth for all things related to the UI, ensuring consistency and efficiency in design and development.&lt;/p&gt;




&lt;h2&gt;
  
  
  Here's a breakdown of the key components of a design system:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Reusable UI components:&lt;/strong&gt; These are pre-built building blocks like buttons, menus, forms, etc., that can be easily integrated and reused across different digital products. This saves designers and developers time and effort compared to creating them from scratch every time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Style guides:&lt;/strong&gt; These define the visual language of the system, including things like typography, color palettes, spacing, and iconography. This ensures visual consistency across all interfaces, contributing to a cohesive brand experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Documentation and guidelines:&lt;/strong&gt; This part provides clear instructions on how to use the components and adhere to the style guide. It helps developers understand the technical implementation of the components and aids designers in creating consistent and user-friendly experiences.&lt;/p&gt;




&lt;h2&gt;
  
  
  Overall, a design system UI offers several benefits:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Consistency:&lt;/strong&gt; Ensures a uniform look and feel across all products, fostering brand recognition and familiarity for users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Efficiency:&lt;/strong&gt; Saves time and resources by enabling the reuse of pre-built components and established design patterns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scalability:&lt;/strong&gt; Makes it easier to manage and maintain UI elements as the product portfolio grows, facilitating future development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Collaboration:&lt;/strong&gt; Provides a common language for design and development teams, fostering smoother communication and collaboration.&lt;/p&gt;

&lt;p&gt;In essence, a design system UI acts as a powerful tool for maintaining consistency, efficiency, and scalability in the design and development of digital products.&lt;/p&gt;

&lt;p&gt;Determining the "top" design systems is subjective, as different systems in various aspects. However, some of the well-established and popular design systems in 2024 include:&lt;/p&gt;




&lt;h2&gt;
  
  
  Material Design 3 by Google:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfptgxatw20oes8u503h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfptgxatw20oes8u503h.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A comprehensive and mature system known for its clean, user-friendly aesthetics and extensive documentation. It offers a wide range of components and guidelines for building web, mobile, and desktop applications.&lt;/p&gt;

&lt;p&gt;Homepage:&lt;br&gt;
👉 &lt;a href="https://m3.material.io" rel="noopener noreferrer"&gt;https://m3.material.io&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An open source CSS Framework:&lt;br&gt;
👉 &lt;a href="https://www.beercss.com" rel="noopener noreferrer"&gt;https://www.beercss.com&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Fluent 2 by Microsoft:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3m5lucv5dwrc707zq6gw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3m5lucv5dwrc707zq6gw.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Microsoft's design system emphasizes a clean, modern aesthetic with a focus on light, depth, motion, and material. It's well-suited for building UIs for Windows, web, and mobile platforms.&lt;/p&gt;

&lt;p&gt;Homepage:&lt;br&gt;
👉 &lt;a href="https://fluent2.microsoft.design" rel="noopener noreferrer"&gt;https://fluent2.microsoft.design&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Carbon Design System by IBM:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxj7w0lckmre4pd583d4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxj7w0lckmre4pd583d4.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A robust system known for its modularity and accessibility focus. It provides a wide range of components and guidelines for building web, mobile, and desktop applications, with an emphasis on inclusivity and accessibility.&lt;/p&gt;

&lt;p&gt;Homepage:&lt;br&gt;
👉 &lt;a href="https://carbondesignsystem.com/" rel="noopener noreferrer"&gt;https://carbondesignsystem.com/&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Design System by Apple:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgj1zyz989whqomt3aaxg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgj1zyz989whqomt3aaxg.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apple doesn't have a single, unified design system in the traditional sense. However, they do provide a robust collection of resources and guidelines that collectively act as a foundation for the design of their software products. These resources can be found on the Apple Developer website under the Design section.&lt;/p&gt;

&lt;p&gt;Homepage:&lt;br&gt;
👉 &lt;a href="https://developer.apple.com/design/" rel="noopener noreferrer"&gt;https://developer.apple.com/design/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's important to note that the best design system for you will depend on your specific needs and preferences. Consider factors like the size and complexity of your design projects, the platforms you're targeting, and the importance of accessibility when choosing a system to adopt.&lt;/p&gt;

</description>
      <category>design</category>
      <category>designsystem</category>
      <category>webdev</category>
      <category>ui</category>
    </item>
    <item>
      <title>The classless and class-light CSS aproaches</title>
      <dc:creator>Leonardo Rafael Wehrmeister</dc:creator>
      <pubDate>Wed, 24 Jan 2024 11:25:51 +0000</pubDate>
      <link>https://forem.com/leonardorafael/the-classless-and-class-light-css-aproaches-2b98</link>
      <guid>https://forem.com/leonardorafael/the-classless-and-class-light-css-aproaches-2b98</guid>
      <description>&lt;p&gt;Both classless and class-light CSS approaches aim to simplify web styling by reducing reliance on traditional class-based methods. However, they take slightly different paths to achieve this:&lt;/p&gt;

&lt;h2&gt;
  
  
  Classless CSS
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Focuses on semantic styling:&lt;/strong&gt; This approach utilizes the inherent meaning of HTML tags to apply styles automatically. For example, an &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; element might get a larger font size and bolder text automatically based on its semantic meaning as a heading.&lt;br&gt;
&lt;strong&gt;Minimal use of classes:&lt;/strong&gt; You don't need to add specific class names to your HTML elements for basic styling. The framework takes care of it based on the tag itself.&lt;br&gt;
&lt;strong&gt;Super lightweight:&lt;/strong&gt; Due to the minimal approach, classless frameworks are typically very small in size, making them ideal for performance-critical websites where every byte counts.&lt;br&gt;
&lt;strong&gt;Limited customization:&lt;/strong&gt; Since styles are based solely on semantics, there's less flexibility for complex layouts and specific design changes.&lt;/p&gt;

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

&lt;p&gt;Sakura (&lt;a href="https://oxal.org/projects/sakura"&gt;https://oxal.org/projects/sakura&lt;/a&gt;)&lt;br&gt;
Simple.css (&lt;a href="https://simplecss.org"&gt;https://simplecss.org&lt;/a&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  Class-light CSS
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Blends semantics and utility classes:&lt;/strong&gt; These frameworks provide some basic styles for semantic elements, but also offer a small set of utility classes that you can use for further customization.&lt;br&gt;
&lt;strong&gt;More control over the look and feel:&lt;/strong&gt; While still emphasizing clean HTML, you can use utility classes to adjust margins, padding, colors, and more, giving you more control over the final design.&lt;br&gt;
&lt;strong&gt;Balances flexibility and size:&lt;/strong&gt; Compared to classless, class-light offers more control but remains relatively lightweight, making it a good compromise for many projects.&lt;/p&gt;

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

&lt;p&gt;Beer CSS (&lt;a href="https://www.beercss.com"&gt;https://www.beercss.com&lt;/a&gt;)&lt;br&gt;
Milligram (&lt;a href="https://milligram.io"&gt;https://milligram.io&lt;/a&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing the right approach
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Prioritize speed and simplicity:&lt;/strong&gt; Choose classless if performance is your top concern and you're happy with basic styling based on semantics.&lt;br&gt;
&lt;strong&gt;Need some flexibility and control:&lt;/strong&gt; Choose class-light if you want to retain the clean HTML approach while having the option for further customization through utility classes.&lt;/p&gt;

&lt;p&gt;Ultimately, the best choice depends on your specific project requirements and preferences. Consider factors like the desired level of control, performance needs, and overall project complexity when making your decision.&lt;/p&gt;

</description>
      <category>css</category>
      <category>webdev</category>
      <category>html</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Top Material Design 3 web frameworks of 2024</title>
      <dc:creator>Leonardo Rafael Wehrmeister</dc:creator>
      <pubDate>Tue, 23 Jan 2024 17:12:23 +0000</pubDate>
      <link>https://forem.com/leonardorafael/best-material-design-3-web-frameworks-of-2024-3k45</link>
      <guid>https://forem.com/leonardorafael/best-material-design-3-web-frameworks-of-2024-3k45</guid>
      <description>&lt;p&gt;There are some CSS framework options that implement Material Design 3, each with its own advantages and disadvantages. Here are some of the most popular options:&lt;/p&gt;

&lt;h2&gt;
  
  
  Independent structures
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Material Web (ready to use):&lt;/strong&gt; Google's official library for Material Design 3. Offers components ready to be used in any web framework. It's a good option if you want full control over your integration and customization.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://m3.material.io/develop/web"&gt;https://m3.material.io/develop/web&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Beer CSS (ready to use):&lt;/strong&gt; A lightweight, easy-to-use CSS framework designed specifically for Material Design 3. It focuses on simplicity, uses HTML semantic standard and offers more components than the official Google library web version.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.beercss.com"&gt;https://www.beercss.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Frameworks for specific frameworks
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;MUICSS (under dev):&lt;/strong&gt; A Material Design-based collection of UI components, built for React. It offers deep integration with React and a good ecosystem of tools and add-ons.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.muicss.com"&gt;https://www.muicss.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vuetify (under dev):&lt;/strong&gt; A library for Vue.js that implements Material Design 3. It offers Vue-specific components and fluid integration with your templating system.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://vuetifyjs.com"&gt;https://vuetifyjs.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Angular Material (under dev):&lt;/strong&gt; A set of UI components based on Material Design 3 for Angular. It offers a familiar development experience for Angular users and integration with the framework's native features.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://material.angular.io"&gt;https://material.angular.io&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Generic Frameworks
&lt;/h2&gt;

&lt;p&gt;Frameworks like Tailwind CSS or Bootstrap can also be used to implement Material Design 3, although they require a little more manual and custom work. The best option for you will depend on your specific needs and preferences. Consider factors such as:&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Your web framework:&lt;/strong&gt; If you already use a specific framework, such as React or Angular, opt for a compatible CSS framework as it may be the best choice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Level of complexity:&lt;/strong&gt; If you want a quick and easy-to-use solution, Beer CSS or Material Web could be good options.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flexibility and control:&lt;/strong&gt; If you need more control and customization, Material Web, Beer CSS or generic frameworks like Tailwind CSS may be the best choices.&lt;/p&gt;

&lt;p&gt;I recommend that you explore the documentation and demos of each framework to see which one best suits your project.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>html</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Tips to avoid legacy growth in your large scale web system (for frontend)</title>
      <dc:creator>Leonardo Rafael Wehrmeister</dc:creator>
      <pubDate>Mon, 22 Jan 2024 14:01:07 +0000</pubDate>
      <link>https://forem.com/leonardorafael/tips-to-avoid-legacy-growth-in-your-large-scale-web-system-for-frontend-1d5h</link>
      <guid>https://forem.com/leonardorafael/tips-to-avoid-legacy-growth-in-your-large-scale-web-system-for-frontend-1d5h</guid>
      <description>&lt;p&gt;Hi Devs!&lt;/p&gt;

&lt;p&gt;I would to share some tips to avoid legacy growth in your large scale web system (for frontend). This is just my personal experience. Don't need to be the truth and all discuss are welcome.&lt;/p&gt;

&lt;p&gt;By following some tips, you can keep your system always up to date, facilitating maintenance and framework/ecosystem changes. And this can also help keep your DX level high (most of the time):&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) Break your frontends into small repositories&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) Don’t bet on just one framework/ecosystem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3) Use a global CSS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4) Use semantic HTML&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5) Don't create components for everything, only those that have some logic&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6) Use only one router&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1) Break your frontends into small repositories
&lt;/h2&gt;

&lt;p&gt;Divide and conquer. Here repositories can be divided into parts of the system, such as a page or a group of pages. Breaking your frontends into small repositories, in addition to making deployments easier, can give you more freedom to try new things, refactoring or even using another stack. This approach allows you to try things without fear, as you won't be impacting the system as a whole. It also allows you to work with multidisciplinary teams from different squads and skills.&lt;/p&gt;

&lt;h2&gt;
  
  
  2) Don’t bet on just one framework/ecosystem
&lt;/h2&gt;

&lt;p&gt;We currently have several fantastic frameworks and ecosystems that meet our needs. But their lifespan is always unknown. After a certain time, some items in the ecosystem begin to be depreciated. Then the dev's satisfaction with them starts to decline. From the moment you realize that you are trying too hard to do simple things, it may be time to do something about it. The important thing here is to try to keep the team's DX always high.&lt;/p&gt;

&lt;h2&gt;
  
  
  3) Use a global CSS
&lt;/h2&gt;

&lt;p&gt;The global CSS is to prevent the system from having a "frankenstein UI". What is a "Frankenstein UI"? As we have several repositories, with several components, several stacks and several UIs, this can all result in a "moderately" different UI between one page and another. Here the tip is not to use different UIs. Avoid using UIs linked to some framework/ecosystem such as Material-UI, Vuetify, Quasar and others. Mixing these types of UIs together can generate severe differences between your pages.&lt;/p&gt;

&lt;h2&gt;
  
  
  4) Use semantic HTML
&lt;/h2&gt;

&lt;p&gt;This is a very current point. Instead of having components for everything, why not directly use semantic HTML? You can have dialogs, buttons, cards among others, writing clean and unified HTML throughout the system. As semantic HTML is part of the web platform, it is independent of any framework/ecosystem, so you open up the range of options to use anything on your system. It's a blank page, ready to be colored however you want. I recommend a class-light approach as done at &lt;a href="https://www.beercss.com"&gt;https://www.beercss.com&lt;/a&gt;. There are others too, just google it.&lt;/p&gt;

&lt;h2&gt;
  
  
  5) Don't create components for everything, only those that have some logic
&lt;/h2&gt;

&lt;p&gt;This point is in line with the previous one. If you choose to use semantic HTML, you will realize that creating components for everything ends up being "pointless". Semantic HTML already has unique markup that you can use system-wide. Abstracting a button, card, nav, among others into a component no longer makes much sense. The tip here is to only create components when you have some type of logic within them, such as parts of a form or an autocomplete.&lt;/p&gt;

&lt;h2&gt;
  
  
  6) Use only one router
&lt;/h2&gt;

&lt;p&gt;When we break our frontends into multiple parts, we need "glue". The "glue" for all these repositories, which were separated by page or group of pages, would be the router. It is important to have this unique router, so we can make the necessary initializations on each of our frontends. Avoid routers linked to a framework/ecosystem if you intend to use different stacks on your system at the same time.&lt;/p&gt;

&lt;p&gt;Hope you enjoy and feel free to discuss about it!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>frontend</category>
      <category>architecture</category>
      <category>web</category>
    </item>
    <item>
      <title>Cheers to Craft Design: Beer CSS - A Lightweight Material Design Framework</title>
      <dc:creator>Leonardo Rafael Wehrmeister</dc:creator>
      <pubDate>Sat, 30 Dec 2023 17:48:14 +0000</pubDate>
      <link>https://forem.com/leonardorafael/cheers-to-craft-design-beer-css-a-lightweight-material-design-framework-3gkp</link>
      <guid>https://forem.com/leonardorafael/cheers-to-craft-design-beer-css-a-lightweight-material-design-framework-3gkp</guid>
      <description>&lt;p&gt;Hey fellow web devs, let's talk about something refreshing in the world of CSS frameworks: Beer CSS. Yes, you read that right – it's not just for choosing your Saturday night brew anymore.&lt;/p&gt;

&lt;p&gt;Beer CSS is the first framework built specifically for Material Design 3, and it's aiming to change the game with its focus on:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tiny Size&lt;/strong&gt;: Ditch the bloat! Beer CSS weighs in at a fraction of the size of other Material Design frameworks, making it lightning-fast and resource-friendly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Semantic Goodness&lt;/strong&gt;: It prioritizes clean, semantic HTML, giving you a solid foundation for accessible and well-structured websites.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DX Delight&lt;/strong&gt;: Developer experience takes center stage. Beer CSS is simple to learn and use, with clear documentation and an intuitive approach.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Theme Control&lt;/strong&gt;: Got a taste for customization? Beer CSS gives you the flexibility to tweak Material Design's themes and make your project truly your own.&lt;/p&gt;

&lt;p&gt;But wait, there's more! Beer CSS packs a punch with features like:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Responsive Layouts&lt;/strong&gt;: Adapt your design to any screen size with ease. ️&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Utility Classes&lt;/strong&gt;: Speed up your workflow with a handy set of ready-made classes for common styles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accessibility Focus&lt;/strong&gt;: Beer CSS keeps inclusivity in mind, ensuring your website is accessible to everyone. ♿️&lt;/p&gt;

&lt;p&gt;Intrigued? I totally get it! Here's what you can do next:&lt;/p&gt;

&lt;p&gt;Check out the website: &lt;a href="https://www.beercss.com/"&gt;https://www.beercss.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Join the community: &lt;a href="https://github.com/beercss/beercss"&gt;https://github.com/beercss/beercss&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's raise a glass to a fresh approach to Material Design with Beer CSS! I'm curious to hear your thoughts – have you tried it out? What do you like about it?&lt;/p&gt;

&lt;p&gt;Cheers!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
