<?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: Zoltán Szőgyényi</title>
    <description>The latest articles on Forem by Zoltán Szőgyényi (@zoltanszogyenyi).</description>
    <link>https://forem.com/zoltanszogyenyi</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%2F194476%2F0e26fec9-f19a-4f06-9434-349f40df5622.jpg</url>
      <title>Forem: Zoltán Szőgyényi</title>
      <link>https://forem.com/zoltanszogyenyi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/zoltanszogyenyi"/>
    <language>en</language>
    <item>
      <title>48 design skills for Claude and other AI coding agents</title>
      <dc:creator>Zoltán Szőgyényi</dc:creator>
      <pubDate>Tue, 24 Mar 2026 10:28:33 +0000</pubDate>
      <link>https://forem.com/zoltanszogyenyi/48-design-skills-for-claude-and-other-ai-coding-agents-10a8</link>
      <guid>https://forem.com/zoltanszogyenyi/48-design-skills-for-claude-and-other-ai-coding-agents-10a8</guid>
      <description>&lt;p&gt;If you have used AI coding agents to build a website, you already know the problem. You prompt Claude Code or Cursor to build a landing page, and it looks fine. You prompt it again for a pricing section, and the spacing is off. By the third prompt, the fonts are different, the button styles have drifted, and you are spending more time fixing design inconsistencies than actually building.&lt;/p&gt;

&lt;p&gt;Design skills solve this by giving your AI agent a single source of truth for how your interface should look and behave. Instead of describing your design preferences in every prompt, you install a skill file once and the agent follows it across every session.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are design skills?
&lt;/h2&gt;

&lt;p&gt;A design skill is a structured markdown file that encodes design system rules — typography scales, color tokens, spacing rhythms, component anatomy, interaction states, and accessibility requirements — in a format that AI coding agents can read and follow.&lt;/p&gt;

&lt;p&gt;Think of it as a design brief that never gets lost between prompts. When your agent has a design skill loaded, every component it generates inherits the same visual language. Buttons look the same whether the agent creates them on Monday or Friday. Spacing stays consistent whether you are building a hero section or a settings page.&lt;/p&gt;

&lt;p&gt;Each skill file covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Visual style and brand tone&lt;/strong&gt; — the overall aesthetic direction&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Typography scale and font choices&lt;/strong&gt; — sizes, weights, and font families&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Color palette with semantic tokens&lt;/strong&gt; — primary, secondary, success, warning, danger&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spacing and density modes&lt;/strong&gt; — consistent rhythm across all components&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Component families&lt;/strong&gt; — buttons, inputs, cards, tables, navigation, modals, and dozens more&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility standards&lt;/strong&gt; — WCAG 2.2 AA compliance baked in&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Do and don't rules&lt;/strong&gt; — explicit guardrails so the agent avoids common mistakes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How design skills work with typeui.sh
&lt;/h2&gt;

&lt;p&gt;At &lt;a href="https://www.typeui.sh" rel="noopener noreferrer"&gt;typeui.sh&lt;/a&gt;, we handcraft each design skill and test it across multiple AI agents. You can browse our entire collection on the &lt;a href="https://www.typeui.sh/design-skills" rel="noopener noreferrer"&gt;design skills page&lt;/a&gt;, and pulling one into your project takes a single command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx typeui.sh pull &lt;span class="o"&gt;[&lt;/span&gt;name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This drops a &lt;code&gt;skill.md&lt;/code&gt; file into your project that works with Claude Code, Cursor, Codex CLI, Gemini CLI, and any agent that reads markdown instructions. You can also download or copy-paste the file directly from our website.&lt;/p&gt;

&lt;p&gt;Once installed, you do not need to mention the design in your prompts anymore. The agent picks up the skill file automatically and applies the design system to everything it builds.&lt;/p&gt;

&lt;h2&gt;
  
  
  All 48 design skills
&lt;/h2&gt;

&lt;p&gt;We currently offer 48 distinct design skills, each targeting a different visual style. Below is every skill in our registry with a preview, description, and direct link to its detail page.&lt;/p&gt;




&lt;h3&gt;
  
  
  Spacious
&lt;/h3&gt;

&lt;p&gt;Spacious design emphasizes generous whitespace, airy layouts, and clear visual separation. If you want your interface to feel calm and breathable without sacrificing structure, this skill keeps everything readable and effortlessly organized. It works well for content-heavy applications where users need room to focus.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/spacious" rel="noopener noreferrer"&gt;View the Spacious design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Neumorphism
&lt;/h3&gt;

&lt;p&gt;Neumorphism creates a soft, extruded look where elements appear to push through or indent into the background surface. This skill gives your UI a tactile, almost physical quality with low-contrast shadows and subtle depth. It is best suited for dashboards, control panels, and apps where a modern yet understated aesthetic matters.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/neumorphism" rel="noopener noreferrer"&gt;View the Neumorphism design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Professional
&lt;/h3&gt;

&lt;p&gt;A clean, trustworthy design system optimized for business applications and productivity tools. This skill prioritizes legibility and information density without feeling cluttered. If you are building a SaaS dashboard, internal tool, or client-facing portal, Professional gives your agent the right foundation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/professional" rel="noopener noreferrer"&gt;View the Professional design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Modern
&lt;/h3&gt;

&lt;p&gt;Modern follows the latest UI trends with soft shadows, rounded corners, and clean interfaces that feel current without chasing fads. This is a versatile all-rounder — if you are unsure which style to pick, Modern is a solid default that works across marketing sites, apps, and documentation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/modern" rel="noopener noreferrer"&gt;View the Modern design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Energetic
&lt;/h3&gt;

&lt;p&gt;Energetic is bold and fast-paced, using vivid colors, dynamic shapes, and strong visual movement to create a lively, action-oriented experience. This skill works well for fitness apps, gaming platforms, event sites, and anything where the design should feel like it has momentum.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/energetic" rel="noopener noreferrer"&gt;View the Energetic design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Tetris
&lt;/h3&gt;

&lt;p&gt;A modular, grid-based design system inspired by the classic puzzle game. Interlocking geometric components and vibrant, high-contrast colors make this skill stand out. It is a great choice for portfolio sites, creative agencies, and projects where a playful structural approach adds character.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/tetris" rel="noopener noreferrer"&gt;View the Tetris design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Fantasy
&lt;/h3&gt;

&lt;p&gt;An immersive design system featuring mystical elements, ornate borders, and magical UI interactions. Fantasy works well for gaming interfaces, storytelling platforms, and creative projects that need to transport users into another world. The typography and color palette lean into richness and atmosphere.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/fantasy" rel="noopener noreferrer"&gt;View the Fantasy design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Glassmorphism
&lt;/h3&gt;

&lt;p&gt;A modern design system featuring liquid glass effects, frosted backgrounds, and layered translucency. Glassmorphism gives your interface depth and sophistication while keeping the content front and center. It pairs especially well with dark mode and gradient backgrounds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/glassmorphism" rel="noopener noreferrer"&gt;View the Glassmorphism design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Creative
&lt;/h3&gt;

&lt;p&gt;An imaginative design system that breaks traditional grid boundaries with innovative interactions and dynamic layouts. Creative is for projects where the design itself is part of the message — agency sites, experimental portfolios, and product launches that need to feel different from everything else.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/creative" rel="noopener noreferrer"&gt;View the Creative design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Expressive
&lt;/h3&gt;

&lt;p&gt;Expressive is personality-driven, using distinctive visuals, rich contrast, and bold typography to communicate emotion and brand character. This skill is ideal for brands with a strong voice — media companies, lifestyle products, and platforms where the interface should feel alive and opinionated.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/expressive" rel="noopener noreferrer"&gt;View the Expressive design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Paper
&lt;/h3&gt;

&lt;p&gt;Paper design is a clean, tactile style inspired by real paper. Soft shadows, subtle layering, and generous whitespace create depth while keeping the interface minimal, readable, and calm. This skill shines in note-taking apps, documentation platforms, and content-first products.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/paper" rel="noopener noreferrer"&gt;View the Paper design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Corporate
&lt;/h3&gt;

&lt;p&gt;Corporate design is structured and professional, emphasizing clarity, consistency, and trust through clean layouts, restrained color use, and formal typography. It is built for enterprise dashboards, B2B platforms, and applications where visual discipline matters more than visual flair.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/corporate" rel="noopener noreferrer"&gt;View the Corporate design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Dithered
&lt;/h3&gt;

&lt;p&gt;Dithered uses patterned, pixel-like textures and controlled noise to add retro character, depth, and visual grit while keeping layouts clean and intentional. This skill is perfect for indie projects, creative studios, and developers who want their interfaces to have distinctive texture.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/dithered" rel="noopener noreferrer"&gt;View the Dithered design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Storytelling
&lt;/h3&gt;

&lt;p&gt;Storytelling guides users through content with emotion and flow, using visual hierarchy, imagery, and pacing to create a narrative-driven experience. This skill works well for long-form landing pages, case study presentations, and marketing sites where the scroll itself tells a story.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/storytelling" rel="noopener noreferrer"&gt;View the Storytelling design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Luxury
&lt;/h3&gt;

&lt;p&gt;An opulent design system utilizing rich textures, metallic accents, and a refined, exclusive visual language. Luxury is built for high-end brands, premium products, and experiences where every pixel should communicate sophistication and taste.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/luxury" rel="noopener noreferrer"&gt;View the Luxury design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Elegant
&lt;/h3&gt;

&lt;p&gt;A graceful and polished design system with generous whitespace, delicate typography, and smooth transitions. Elegant sits between Luxury and Minimal — it is refined without being flashy, making it versatile for fashion brands, portfolios, and upscale service businesses.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/elegant" rel="noopener noreferrer"&gt;View the Elegant design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Cosmic
&lt;/h3&gt;

&lt;p&gt;Cosmic blends deep-space tones, luminous accents, and layered depth to create a futuristic interface that feels immersive and otherworldly. This skill works well for tech products, AI-focused tools, data visualization dashboards, and anything that benefits from a sense of scale and wonder.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/cosmic" rel="noopener noreferrer"&gt;View the Cosmic design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Clean
&lt;/h3&gt;

&lt;p&gt;Clean is minimal and distraction-free, using clear structure, ample whitespace, and crisp typography to keep interfaces simple, readable, and focused. If your product is content-first and you want the design to disappear so the content can lead, this skill delivers exactly that.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/clean" rel="noopener noreferrer"&gt;View the Clean design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Colorful
&lt;/h3&gt;

&lt;p&gt;Colorful uses vibrant, high-energy palettes and bold contrasts to create a lively, expressive interface that feels playful and attention-grabbing. This skill suits children's products, creative platforms, community apps, and marketing sites that want to stand out through sheer visual energy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/colorful" rel="noopener noreferrer"&gt;View the Colorful design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Levels
&lt;/h3&gt;

&lt;p&gt;Levels is indiehacker-lean and ship-fast. Bold, no-fluff UI with practical layouts, clear metrics, and builder-focused functionality inspired by Pieter Levels' make-it-work ethos. If you are building a SaaS product solo and want a design that values function over decoration, this skill is for you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/levels" rel="noopener noreferrer"&gt;View the Levels design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Vibrant
&lt;/h3&gt;

&lt;p&gt;An energetic design system characterized by bold, bright colors, playful gradients, and lively animations. Vibrant brings visual warmth and excitement to interfaces — it works well for social platforms, marketplaces, and consumer apps where approachability and energy matter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/vibrant" rel="noopener noreferrer"&gt;View the Vibrant design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Premium
&lt;/h3&gt;

&lt;p&gt;A high-end, sophisticated design system focused on exclusivity, refined typography, and subtle interactions. Premium shares DNA with Luxury but leans more toward tech and fintech — think banking apps, investment platforms, and subscription products that need to feel worth the price.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/premium" rel="noopener noreferrer"&gt;View the Premium design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Neon
&lt;/h3&gt;

&lt;p&gt;A dark-mode optimized design system featuring glowing borders, high-contrast fluorescent colors, and cyberpunk aesthetics. Neon is built for gaming interfaces, developer tools, nightlife apps, and anything where a dark background with electric accents creates the right atmosphere.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/neon" rel="noopener noreferrer"&gt;View the Neon design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Bento
&lt;/h3&gt;

&lt;p&gt;Bento is a clean, modular layout of card-like blocks with clear hierarchy, soft spacing, and subtle visual contrast. Designed to make content feel organized, scannable, and modern, this skill works beautifully for feature pages, dashboards, and product overviews with multiple data points.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/bento" rel="noopener noreferrer"&gt;View the Bento design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Sleek
&lt;/h3&gt;

&lt;p&gt;Sleek is streamlined and polished, with sharp typography, minimal clutter, and smooth visual rhythm that gives interfaces a fast, premium feel. This skill works well for developer tools, analytics dashboards, and tech products that want to look as performant as they are.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/sleek" rel="noopener noreferrer"&gt;View the Sleek design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Vintage
&lt;/h3&gt;

&lt;p&gt;Vintage evokes nostalgia through classic typography, muted palettes, and timeworn textures, giving interfaces a timeless, character-rich feel. This skill works for artisan brands, restaurants, photography portfolios, and projects where warmth and history are part of the identity.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/vintage" rel="noopener noreferrer"&gt;View the Vintage design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Pacman
&lt;/h3&gt;

&lt;p&gt;A playful, arcade-inspired design system featuring 8-bit aesthetics, vivid primary colors, and classic gaming motifs. Pacman is fun and unapologetically retro — perfect for game studios, hackathon projects, entertainment platforms, and anyone who wants their UI to put a smile on users' faces.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/pacman" rel="noopener noreferrer"&gt;View the Pacman design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Futuristic
&lt;/h3&gt;

&lt;p&gt;A forward-looking design system featuring sleek interfaces, glowing accents, and sci-fi inspired UI elements. Futuristic is built for AI products, space-tech startups, data platforms, and applications where the interface should signal innovation and cutting-edge technology.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/futuristic" rel="noopener noreferrer"&gt;View the Futuristic design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Retro
&lt;/h3&gt;

&lt;p&gt;A nostalgic design system that brings back classic web aesthetics, pixelated details, and vintage color palettes. Retro is less polished than Vintage and more playful — it works for personal blogs, indie projects, and developers who miss the early web and want to celebrate it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/retro" rel="noopener noreferrer"&gt;View the Retro design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Dramatic
&lt;/h3&gt;

&lt;p&gt;Dramatic uses bold contrast, striking typography, and high-impact visuals to create a powerful, attention-commanding interface. This skill is for product launches, media sites, and landing pages where the first impression needs to hit hard and hold attention.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/dramatic" rel="noopener noreferrer"&gt;View the Dramatic design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Minimal
&lt;/h3&gt;

&lt;p&gt;A stripped-down design system that removes all unnecessary noise, focusing purely on content and core functionality. Minimal goes further than Clean — it is the right choice when every element on the page needs to justify its existence. Ideal for personal sites, writing platforms, and single-purpose tools.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/minimal" rel="noopener noreferrer"&gt;View the Minimal design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Perspective
&lt;/h3&gt;

&lt;p&gt;Perspective adds depth and direction through angled layouts, layered elements, and visual foreshortening, creating a dynamic interface with a strong sense of space. This skill is well-suited for architecture firms, 3D product showcases, and creative portfolios that want visual depth.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/perspective" rel="noopener noreferrer"&gt;View the Perspective design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Friendly
&lt;/h3&gt;

&lt;p&gt;Friendly feels warm and approachable, using soft shapes, clear hierarchy, and inviting visuals to make interactions easy and welcoming. This skill is built for onboarding flows, community platforms, healthcare apps, and any product where users need to feel comfortable from the first click.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/friendly" rel="noopener noreferrer"&gt;View the Friendly design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Artistic
&lt;/h3&gt;

&lt;p&gt;A creative and expressive design system blending unique illustrations, unconventional layouts, and organic shapes. Artistic is for projects where the interface is as much a canvas as a tool — galleries, design studios, creative agencies, and experimental web experiences.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/artistic" rel="noopener noreferrer"&gt;View the Artistic design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Editorial
&lt;/h3&gt;

&lt;p&gt;A magazine-inspired design system prioritizing beautiful typography, structured layouts, and high-quality imagery. Editorial is built for publications, blogs, and media companies where the reading experience drives everything. Strong typographic hierarchy and measured whitespace make long-form content shine.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/editorial" rel="noopener noreferrer"&gt;View the Editorial design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Enterprise
&lt;/h3&gt;

&lt;p&gt;A clean, high-contrast, professional design system for enterprise applications. Enterprise is battle-tested for complex interfaces with dense information — admin panels, CRM tools, project management platforms, and internal tools where usability at scale is the priority.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/enterprise" rel="noopener noreferrer"&gt;View the Enterprise design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Bold
&lt;/h3&gt;

&lt;p&gt;A high-impact design system featuring strong typography, stark contrasts, and unapologetic visual elements. Bold is for brands that want to make a statement — startup landing pages, campaign sites, and products that lead with confidence and refuse to blend in.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/bold" rel="noopener noreferrer"&gt;View the Bold design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Neobrutalism
&lt;/h3&gt;

&lt;p&gt;Neobrutalism is chunky shapes, hard edges, loud colors, and unapologetically simple layouts — raw, playful, and intentionally unpolished. This skill has become a favorite for indie hackers, developer tools, and creative projects that want a distinct anti-corporate aesthetic.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/neobrutalism" rel="noopener noreferrer"&gt;View the Neobrutalism design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Shadcn
&lt;/h3&gt;

&lt;p&gt;A highly customizable, accessible, and modern design system built on utility-first principles and clean components. If you are already familiar with shadcn/ui conventions and want your AI agent to generate components in that style, this skill keeps everything aligned.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/shadcn" rel="noopener noreferrer"&gt;View the Shadcn design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Claymorphism
&lt;/h3&gt;

&lt;p&gt;Claymorphism uses soft, rounded surfaces with subtle inner and outer shadows to create a playful, tactile interface that feels modern and touch-friendly. This skill is ideal for mobile-first apps, children's products, and any project that benefits from a friendly, 3D-like appearance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/claymorphism" rel="noopener noreferrer"&gt;View the Claymorphism design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Gradient
&lt;/h3&gt;

&lt;p&gt;Gradient uses smooth color transitions to create depth, energy, and visual focus, giving interfaces a modern, vibrant feel without heavy visual clutter. This skill works across marketing sites, AI products, and creative tools where color itself becomes a design element.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/gradient" rel="noopener noreferrer"&gt;View the Gradient design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Agentic
&lt;/h3&gt;

&lt;p&gt;Agentic design feels proactive and intelligent, emphasizing guided actions, adaptive feedback, and clear next steps to help users accomplish goals faster. This skill is purpose-built for AI-native products, chatbot interfaces, automation dashboards, and tools where the interface anticipates what the user needs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/agentic" rel="noopener noreferrer"&gt;View the Agentic design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Mono
&lt;/h3&gt;

&lt;p&gt;A playful, matrix-inspired monospaced design system where every character occupies the same width and the entire interface leans into terminal aesthetics. Mono works for developer portfolios, CLI documentation, hacker-themed projects, and anyone who thinks monospace fonts are underused in web design.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/mono" rel="noopener noreferrer"&gt;View the Mono design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Refined
&lt;/h3&gt;

&lt;p&gt;Refined is elegant and understated, using precise spacing, subtle contrast, and polished details to create a premium, professional interface. This skill sits between Elegant and Professional — less decorative than the former, warmer than the latter. A strong choice for fintech, legal, and consulting products.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/refined" rel="noopener noreferrer"&gt;View the Refined design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Simple
&lt;/h3&gt;

&lt;p&gt;A minimalist design system focused on clarity, essential UI elements, and highly intuitive user experiences. Simple strips away everything that is not necessary and keeps what remains well-organized. It is a good starting point for MVPs, prototypes, and products where speed of development matters.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/simple" rel="noopener noreferrer"&gt;View the Simple design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Contemporary
&lt;/h3&gt;

&lt;p&gt;Contemporary blends clean structure with bold, current aesthetics — crisp typography, balanced spacing, and subtle visual accents for a fresh, modern feel. This skill is for teams that want something that feels of-the-moment without committing to a specific trend.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/contemporary" rel="noopener noreferrer"&gt;View the Contemporary design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Publication
&lt;/h3&gt;

&lt;p&gt;Publication is editorial and content-first, combining strong typography, structured grids, and measured spacing to deliver clear, readable, long-form information. This skill is built for news sites, research platforms, documentation hubs, and any product where the written word takes center stage.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/publication" rel="noopener noreferrer"&gt;View the Publication design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Cafe
&lt;/h3&gt;

&lt;p&gt;Cafe is warm and inviting, with earthy tones, cozy textures, and relaxed typography that create a handcrafted, welcoming atmosphere. This skill is perfect for restaurant sites, coffee shop apps, bakery brands, and local businesses that want their digital presence to feel as comfortable as their physical space.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typeui.sh/design-skills/cafe" rel="noopener noreferrer"&gt;View the Cafe design skill →&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  How to pick the right design skill
&lt;/h2&gt;

&lt;p&gt;With 48 options, choosing the right one depends on what you are building:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SaaS and business tools&lt;/strong&gt; — start with Enterprise, Professional, or Corporate&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Marketing and landing pages&lt;/strong&gt; — try Bold, Dramatic, or Modern&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Creative and portfolio sites&lt;/strong&gt; — look at Artistic, Creative, or Expressive&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content and publishing&lt;/strong&gt; — consider Editorial, Publication, or Paper&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Indie hacker projects&lt;/strong&gt; — Levels, Neobrutalism, or Simple will get you moving fast&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-native products&lt;/strong&gt; — Agentic, Futuristic, or Sleek match the vibe&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Playful and experimental&lt;/strong&gt; — Pacman, Tetris, or Neon for something different&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can always switch skills between projects or even combine ideas from multiple skills by customizing the downloaded file.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we do at typeui.sh
&lt;/h2&gt;

&lt;p&gt;At &lt;a href="https://www.typeui.sh" rel="noopener noreferrer"&gt;typeui.sh&lt;/a&gt;, we build tools that help AI coding agents produce better design. Every skill in our registry is handcrafted, tested across multiple agents, and maintained as the AI ecosystem evolves.&lt;/p&gt;

&lt;p&gt;Our design skills work with the tools you already use — &lt;a href="https://claude.ai" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt;, &lt;a href="https://cursor.com" rel="noopener noreferrer"&gt;Cursor&lt;/a&gt;, &lt;a href="https://openai.com" rel="noopener noreferrer"&gt;Codex CLI&lt;/a&gt;, &lt;a href="https://ai.google.dev" rel="noopener noreferrer"&gt;Gemini CLI&lt;/a&gt;, and any agent that reads markdown files. You do not need to change your workflow. Just pull a skill and start building.&lt;/p&gt;

&lt;p&gt;We believe that design quality should not depend on whether you remembered to describe your spacing scale in the prompt. It should be encoded once and followed everywhere. That is what design skills give you — a persistent design memory for your AI agent.&lt;/p&gt;

&lt;p&gt;Browse all 48 skills on our &lt;a href="https://www.typeui.sh/design-skills" rel="noopener noreferrer"&gt;design skills page&lt;/a&gt;, or pull one right now:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx typeui.sh pull modern
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>opensource</category>
      <category>ai</category>
      <category>agents</category>
      <category>typeui</category>
    </item>
    <item>
      <title>Generate design skill files for your agentic tools with TypeUI</title>
      <dc:creator>Zoltán Szőgyényi</dc:creator>
      <pubDate>Sat, 07 Mar 2026 21:33:04 +0000</pubDate>
      <link>https://forem.com/zoltanszogyenyi/generate-design-skill-files-for-your-agentic-tools-with-typeui-11ce</link>
      <guid>https://forem.com/zoltanszogyenyi/generate-design-skill-files-for-your-agentic-tools-with-typeui-11ce</guid>
      <description>&lt;p&gt;We’ve all been there. You’re using Cursor, Claude Code, or Copilot, and you ask it to whip up a quick dashboard component. The logic is flawless, the state management is perfect, and then... you look at the UI.&lt;/p&gt;

&lt;p&gt;Suddenly, your app has three new shades of blue that don't exist in your Tailwind config, the padding is completely arbitrary, and the AI has decided to invent its own design system on the fly.&lt;/p&gt;

&lt;p&gt;AI models are absolute wizards at writing logic, but without strict constraints, they hallucinate design tokens like crazy.&lt;/p&gt;

&lt;p&gt;That’s why I want to talk about typeui.sh — an awesome open-source CLI tool that acts as a dedicated design layer for your agentic tooling.&lt;/p&gt;

&lt;h2&gt;
  
  
  What exactly is typeui.sh?
&lt;/h2&gt;

&lt;p&gt;Think of &lt;a href="https://typeui.sh/" rel="noopener noreferrer"&gt;typeui.sh&lt;/a&gt; as a strict design manager for your AI assistants.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwidy7fr9jmuy5tl4oh3w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwidy7fr9jmuy5tl4oh3w.png" alt="screenshot of typeui.sh terminal" width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s a CLI tool that generates and manages skill.md files right inside your project. These files act as the ultimate source of truth for your design system and style guide. &lt;/p&gt;

&lt;p&gt;By feeding these highly curated instructions to your AI, you force the LLM to actually respect your design tokens, component structures, and styling rules.&lt;/p&gt;

&lt;p&gt;No more fighting over CSS classes. You just get polished, production-ready UI components that actually match your brand.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 4 Commands You Need to Know
&lt;/h2&gt;

&lt;p&gt;The CLI is super intuitive and stays out of your way. Here is the core workflow:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. generate
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx typeui.sh generate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is where the magic starts. Instead of writing a massive, 500-line system prompt explaining what a "primary button" looks like in your app, this command scaffolds the provider skill files directly in your current project. Your AI assistant reads this file and instantly understands your design constraints.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. update
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx typeui.sh update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Design systems aren't static. When you tweak your spacing scales or add a new brand color, you just run update. It refreshes your existing provider skill files so your AI is always working with the latest guidelines, without nuking your custom configurations.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. list
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx typeui.sh list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Don't want to build a design system from scratch? I don't blame you. Running list lets you browse a registry of pre-built design system specifications. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fej5137u6d3eys51gg315.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fej5137u6d3eys51gg315.png" alt="design systems on typeui" width="800" height="599"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s perfect for hackathons or when you just want to bootstrap a new project with a gorgeous, proven design language.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. pull
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx typeui.sh pull [name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you spot a design system you like in the registry, just pull it. For example, pulling a "modern" spec will download that specific markdown file directly into your workspace. It comes pre-loaded with comprehensive design tokens, instantly teaching your AI how to design within that specific aesthetic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open source
&lt;/h2&gt;

&lt;p&gt;The best part? The core CLI is &lt;a href="https://github.com/bergside/typeui.sh" rel="noopener noreferrer"&gt;open-source under the MIT license&lt;/a&gt;. You can use it for your local workflows entirely for free.&lt;/p&gt;

&lt;p&gt;If you're a freelancer or an agency looking for access to our &lt;a href="//typeui.sh/design-systems"&gt;curated premium design systems&lt;/a&gt; and priority support, they also offer one-time payment licenses (which is a breath of fresh air in today's subscription-fatigued world).&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;As we rely more on AI to write our code, controlling the output is becoming just as important as the generation itself. If you're tired of playing CSS whack-a-mole with your LLM, give this a try.&lt;/p&gt;

&lt;p&gt;Check out the docs and try it out here: &lt;a href="https://typeui.sh/" rel="noopener noreferrer"&gt;typeui.sh&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>webdev</category>
      <category>agents</category>
    </item>
    <item>
      <title>Build apps for ChatGPT, Claude, and Gemini using MCP UI components from Flowbite</title>
      <dc:creator>Zoltán Szőgyényi</dc:creator>
      <pubDate>Fri, 06 Feb 2026 14:07:46 +0000</pubDate>
      <link>https://forem.com/themesberg/build-apps-for-chatgpt-claude-and-gemini-using-mcp-ui-components-from-flowbite-316b</link>
      <guid>https://forem.com/themesberg/build-apps-for-chatgpt-claude-and-gemini-using-mcp-ui-components-from-flowbite-316b</guid>
      <description>&lt;p&gt;MCP UI is the standard SDK that you can use to deliver MCP apps which can be used as applications for ChatGPT, Gemini, Claude, and other MCP clients like Cursor or Windsurf. &lt;a href="https://modelcontextprotocol.io/docs/getting-started/intro" rel="noopener noreferrer"&gt;Model Context Protocol&lt;/a&gt; (MCP) is part of the Agentic AI Foundation donated by Anthropic in 2025 and it is one of the fastest growing open-source projects in the AI category with over 100 million monthly SDK downloads.&lt;/p&gt;

&lt;p&gt;

&lt;iframe class="tweet-embed" id="tweet-2019769870036980057-385" src="https://platform.twitter.com/embed/Tweet.html?id=2019769870036980057"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-2019769870036980057-385');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=2019769870036980057&amp;amp;theme=dark"
  }





&lt;/p&gt;

&lt;p&gt;In this guide you will learn how to create an MCP app using Flowbite and Skybridge and start developing application for ChatGPT, Claude, Gemini and any other AI client that uses the MCP standard. After setting up the project you'll be able to integrate any UI component and theme from the Flowbite documentation inside your MCP application.&lt;/p&gt;

&lt;p&gt;We decided to use the &lt;a href="https://github.com/alpic-ai/skybridge" rel="noopener noreferrer"&gt;Skybridge&lt;/a&gt; framework to build MCP apps and we are using the UI components from &lt;a href="https://flowbite.com/" rel="noopener noreferrer"&gt;Flowbite&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create new MCP app
&lt;/h2&gt;

&lt;p&gt;The first step is to create a new MCP application and start developing locally:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Download or clone the &lt;a href="https://github.com/themesberg/mcp-ui-starter/" rel="noopener noreferrer"&gt;MCP UI Starter&lt;/a&gt; repository:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/themesberg/mcp-ui-starter.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Install dependencies using NPM, PNPM, Yarn or Bun:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Run a local development server:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm run dev --use-forwarded-host
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will run a local server on &lt;code&gt;http://localhost:3000&lt;/code&gt; and will create the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the main MCP server on the &lt;code&gt;/mcp&lt;/code&gt; endpoint&lt;/li&gt;
&lt;li&gt;a collection of widgets built with Flowbite and React used as tools&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Connect with NGROK
&lt;/h2&gt;

&lt;p&gt;In order to expose the server to AI clients such as ChatGPT, Gemini or Claude we need to host the MCP server.&lt;/p&gt;

&lt;p&gt;Install &lt;code&gt;ngrok&lt;/code&gt; on your computer using Homebrew and run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ngrok http 3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will host the MCP server on a URL similar to this one:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# this is just an example
https://3785c5ddc4b6.ngrok-free.app/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will now be able to use this URL to create an application for ChatGPT, Claude, Gemini, and for any MCP clients.&lt;/p&gt;

&lt;p&gt;Don't forget to add the &lt;code&gt;/mcp&lt;/code&gt; endpoint to the URL generated by NGROK.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install on AI providers
&lt;/h2&gt;

&lt;p&gt;Use the following guides to connect your MCP app to major AI providers like ChatGPT, Claude, and Gemini.&lt;/p&gt;

&lt;h3&gt;
  
  
  ChatGPT apps
&lt;/h3&gt;

&lt;p&gt;Make sure that you have a paid plan to create an application on ChatGPT.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to Settings &amp;gt; Connectors&lt;/li&gt;
&lt;li&gt;Scroll down and click on "Advanced Settings"&lt;/li&gt;
&lt;li&gt;Enable Developer mode&lt;/li&gt;
&lt;li&gt;Go back to the Settings &amp;gt; Connectors page, and click on "Create in the Browser Connectors"&lt;/li&gt;
&lt;li&gt;Add a custom connector with the MCP Server URL: &lt;code&gt;[NGROK_FORWARDING_URL]/mcp&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Click on "Create to add the MCP server as a Connector"&lt;/li&gt;
&lt;li&gt;To use your connector in the chat, click "+"" then "More" and select it.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Claude Web
&lt;/h3&gt;

&lt;p&gt;Make sure that you have a paid plan to create an application on Claude.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to Settings &amp;gt; Connectors&lt;/li&gt;
&lt;li&gt;Find the "Connectors" section&lt;/li&gt;
&lt;li&gt;Click on "Add custom connector" at the bottom of the section&lt;/li&gt;
&lt;li&gt;Add your connector's remote MCP server URL: [NGROK_FORWARDING_URL]/mcp&lt;/li&gt;
&lt;li&gt;Finish configuring your connector and click "Add"&lt;/li&gt;
&lt;li&gt;To enable connectors, use the "Search and tools button" on the lower left of the chat interface.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Gemini CLI
&lt;/h3&gt;

&lt;p&gt;Run the following command in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gemini mcp add --transport http &amp;lt;server-name&amp;gt; "[NGROK_FORWARDING_URL]/mcp"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use &lt;code&gt;/mcp&lt;/code&gt; in the Gemini CLI terminal to view your recently added MCP server status and discovered tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cursor
&lt;/h3&gt;

&lt;p&gt;Add your MCP server to Cursor by opening the &lt;code&gt;mcp.json&lt;/code&gt; file and configure it using &lt;code&gt;mcpServers&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "mcpServers": {
    "&amp;lt;server-name&amp;gt;": {
      "type": "http",
      "url": "[NGROK_FORWARDING_URL]/mcp"
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  VS Code
&lt;/h3&gt;

&lt;p&gt;To add your MCP server to VS Code you need to open the &lt;code&gt;.vscode/mcp.json&lt;/code&gt; file and configure &lt;code&gt;servers&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "servers": {
    "&amp;lt;server-name&amp;gt;": {
      "type": "http",
      "url": "[NGROK_FORWARDING_URL]/mcp"
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Claude Code
&lt;/h3&gt;

&lt;p&gt;MCP servers are stored at &lt;code&gt;~/.claude.json&lt;/code&gt; in Claude Code. Use the CLI to add your MCP app:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;claude mcp add --transport http &amp;lt;server-name&amp;gt; "[NGROK_FORWARDING_URL]/mcp"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Mistral AI
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open the side panel and expand Intelligence &amp;gt; Connectors&lt;/li&gt;
&lt;li&gt;Click "+ Add Connector" on the right side of the page&lt;/li&gt;
&lt;li&gt;In the MCP Connectors directory, click the "Custom MCP Connector tab"&lt;/li&gt;
&lt;li&gt;Enter a name for the connector and the following server URL: &lt;code&gt;[NGROK_FORWARDING_URL]/mcp&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Finish configuring your connector and click "Create"&lt;/li&gt;
&lt;li&gt;To use the connector, click the "Tools" button below the chat input and enable it in the "Connectors" section.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Codex
&lt;/h3&gt;

&lt;p&gt;MCP servers in Codex are located at &lt;code&gt;~/.codex/config.toml&lt;/code&gt; and you can install your MCP app using the CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;codex mcp add &amp;lt;server-name&amp;gt; --url "[NGROK_FORWARDING_URL]/mcp"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Create a widget
&lt;/h2&gt;

&lt;p&gt;Creating a new widget means setting up the server side where we can set up the input data that comes from the AI client (which is the user prompt itself) and the web component which is the front-end widget where we show the output (such as a chart, data table, or just text).&lt;/p&gt;

&lt;h3&gt;
  
  
  Server component
&lt;/h3&gt;

&lt;p&gt;If you want to create a new widget yourself, then first create a new file inside the &lt;code&gt;server/src/widgets&lt;/code&gt; folder and add the following code that creates a basic server side tool which returns a string as output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { z } from "zod";

// Basic Answer widget configuration
export const basicTextWidget = {
  name: "basic-text" as const,
  metadata: {
    description: "Basic Text",
  },
  toolConfig: {
    description: "Show a text message based on a question.",
    inputSchema: {
      question: z.string().describe("The user's question."),
    },
  },
  handler: async () =&amp;gt; {
    try {
      const answer = "Hello, world!";
      return {
        structuredContent: { answer },
        content: [],
        isError: false,
      };
    } catch (error) {
      return {
        content: [{ type: "text" as const, text: `Error: ${error}` }],
        isError: true,
      };
    }
  },
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Web component
&lt;/h3&gt;

&lt;p&gt;Then create the front-end part of the widget inside the &lt;code&gt;web/src/widgets&lt;/code&gt; folder where you can use React code to create the markup of the widget and use the server data, which in this case is a basic text coming from our server component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import "@/index.css";

import { mountWidget } from "skybridge/web";
import { useToolInfo } from "../helpers";

function BasicTextWidget() {
  const { input, output } = useToolInfo&amp;lt;"basic-text"&amp;gt;();
  if (!output) {
    return (
      &amp;lt;div role="status"&amp;gt;
          &amp;lt;svg aria-hidden="true" className="w-8 h-8 text-neutral-tertiary animate-spin fill-brand" viewBox="0 0 100 101" fill="none" xmlns="http://www.w3.org/2000/svg"&amp;gt;
              &amp;lt;path d="M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z" fill="currentColor"/&amp;gt;
              &amp;lt;path d="M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z" fill="currentFill"/&amp;gt;
          &amp;lt;/svg&amp;gt;
          &amp;lt;span className="sr-only"&amp;gt;Loading...&amp;lt;/span&amp;gt;
      &amp;lt;/div&amp;gt;
    );
  }

  return (
    &amp;lt;div className="p-4 space-y-2"&amp;gt;
      &amp;lt;p className="text-body"&amp;gt;&amp;lt;strong&amp;gt;Question:&amp;lt;/strong&amp;gt; {input.question}&amp;lt;/p&amp;gt;
      &amp;lt;p className="text-body"&amp;gt;&amp;lt;strong&amp;gt;Answer:&amp;lt;/strong&amp;gt; {output.answer}&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}

export default BasicTextWidget;

mountWidget(&amp;lt;BasicTextWidget /&amp;gt;);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, register the widget in the &lt;code&gt;server.ts&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { McpServer } from "skybridge/server";
import { basicTextWidget } from "./widgets/basic-text-server.js";

const server = new McpServer(
  {
    name: "mcp-ui-components",
    version: "0.0.1",
  },
  { capabilities: {} }
)
  .registerWidget(
    basicTextWidget.name,
    basicTextWidget.metadata,
    basicTextWidget.toolConfig,
    basicTextWidget.handler
  )
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Customize theming
&lt;/h2&gt;

&lt;p&gt;Flowbite allows you to easily customize the appearance of the UI components from the MCP apps by using the &lt;a href="https://flowbite.com/docs/customize/theming/" rel="noopener noreferrer"&gt;theming options&lt;/a&gt; based on CSS variables from Tailwind.&lt;/p&gt;

&lt;p&gt;Select one of the predefined themes from Flowbite or customize the variables yourself in the &lt;code&gt;index.css&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* choose one of the following */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&amp;amp;display=swap');
@import "flowbite/src/themes/default";

/* MINIMAL THEME
@import url('https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300..800;1,300..800&amp;amp;display=swap');
@import "flowbite/src/themes/minimal";
*/

/* ENTERPRISE THEME
@import url('https://fonts.googleapis.com/css2?family=Shantell+Sans:ital,wght@0,300..800;1,300..800&amp;amp;display=swap');
@import "flowbite/src/themes/enterprise";
*/

/* PLAYFUL THEME
@import url('https://fonts.googleapis.com/css2?family=Google+Sans+Code:ital,wght@0,300..800;1,300..800&amp;amp;display=swap');
@import "flowbite/src/themes/playful";
*/

/* MONO THEME
@import "flowbite/src/themes/mono";
*/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://modelcontextprotocol.io/docs/getting-started/intro" rel="noopener noreferrer"&gt;MCP Protocol&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/getting-started/mcp-ui/" rel="noopener noreferrer"&gt;Flowbite MCP UI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tailwindcss.com/" rel="noopener noreferrer"&gt;Tailwind CSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/alpic-ai/skybridge" rel="noopener noreferrer"&gt;Skybridge framework&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>chatgpt</category>
      <category>opensource</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Zoltán Szőgyényi</dc:creator>
      <pubDate>Thu, 11 Dec 2025 12:43:48 +0000</pubDate>
      <link>https://forem.com/zoltanszogyenyi/-pld</link>
      <guid>https://forem.com/zoltanszogyenyi/-pld</guid>
      <description>&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/themesberg/convert-figma-layers-to-code-in-tailwind-css-with-flowbite-mcp-50ec" class="crayons-story__hidden-navigation-link"&gt;Convert Figma layers to code in Tailwind CSS with Flowbite MCP&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;
          &lt;a class="crayons-logo crayons-logo--l" href="/themesberg"&gt;
            &lt;img alt="Themesberg logo" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F1549%2Fabe591bf-6792-4a2d-8ebb-d0b42f4ea9d9.png" class="crayons-logo__image"&gt;
          &lt;/a&gt;

          &lt;a href="/zoltanszogyenyi" class="crayons-avatar  crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F194476%2F0e26fec9-f19a-4f06-9434-349f40df5622.jpg" alt="zoltanszogyenyi profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/zoltanszogyenyi" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Zoltán Szőgyényi
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Zoltán Szőgyényi
                
              
              &lt;div id="story-author-preview-content-3099785" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/zoltanszogyenyi" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F194476%2F0e26fec9-f19a-4f06-9434-349f40df5622.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Zoltán Szőgyényi&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

            &lt;span&gt;
              &lt;span class="crayons-story__tertiary fw-normal"&gt; for &lt;/span&gt;&lt;a href="/themesberg" class="crayons-story__secondary fw-medium"&gt;Themesberg&lt;/a&gt;
            &lt;/span&gt;
          &lt;/div&gt;
          &lt;a href="https://dev.to/themesberg/convert-figma-layers-to-code-in-tailwind-css-with-flowbite-mcp-50ec" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Dec 11 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/themesberg/convert-figma-layers-to-code-in-tailwind-css-with-flowbite-mcp-50ec" id="article-link-3099785"&gt;
          Convert Figma layers to code in Tailwind CSS with Flowbite MCP
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/mcp"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;mcp&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tailwindcss"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tailwindcss&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/themesberg/convert-figma-layers-to-code-in-tailwind-css-with-flowbite-mcp-50ec" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;24&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/themesberg/convert-figma-layers-to-code-in-tailwind-css-with-flowbite-mcp-50ec#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;




</description>
      <category>ai</category>
      <category>mcp</category>
      <category>tailwindcss</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Convert Figma layers to code in Tailwind CSS with Flowbite MCP</title>
      <dc:creator>Zoltán Szőgyényi</dc:creator>
      <pubDate>Thu, 11 Dec 2025 12:43:36 +0000</pubDate>
      <link>https://forem.com/themesberg/convert-figma-layers-to-code-in-tailwind-css-with-flowbite-mcp-50ec</link>
      <guid>https://forem.com/themesberg/convert-figma-layers-to-code-in-tailwind-css-with-flowbite-mcp-50ec</guid>
      <description>&lt;p&gt;In this guide you will learn how to install the Flowbite MCP server and convert Figma design files in your MCP client such as Cursor, Windsurf or Claude and generate code in Tailwind CSS and based on the &lt;a href="https://flowbite.com/pro/#pricing" rel="noopener noreferrer"&gt;Flowbite Design System&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Short demo before getting into the guide:&lt;/p&gt;

&lt;p&gt;Step 1: Select Figma layer&lt;/p&gt;

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

&lt;p&gt;Step 2: Tell the AI to convert it to code using Flowbite MCP&lt;/p&gt;

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

&lt;p&gt;Step 3: Add the code to your Tailwind CSS + Flowbite project&lt;/p&gt;

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

&lt;p&gt;You can create this development flow yourself by creating a &lt;a href="https://flowbite.com/docs/getting-started/quickstart/" rel="noopener noreferrer"&gt;Flowbite project&lt;/a&gt; with Tailwind CSS installed and follow this MCP guide.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;MCP (Model-Context-Protocol) is a new way to structure a communication protocol between MCP servers (Flowbite MCP) and MCP clients (ie. Windsurf, Cursor). It enables adding additional context to your AI development workflow by integrating resources and tools specific to your project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/docs/getting-started/mcp/" rel="noopener noreferrer"&gt;Flowbite MCP&lt;/a&gt; is an open-source server that adds the right amount of context to the LLM providers which improves the quality of UI generation in code - whether it's HTML, React, Svelte, or other frameworks.&lt;/p&gt;

&lt;p&gt;Additionally, we also developed tools to convert Figma layers to code relevant to your codebase using Flowbite and Tailwind CSS and also other tools such as generating theme files based on branded colors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install Flowbite MCP
&lt;/h2&gt;

&lt;p&gt;The easiest way to install the Flowbite MCP is using NPX:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx flowbite-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also run &lt;code&gt;npx flowbite-mcp --help&lt;/code&gt; to show a list of helpful options.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;p&gt;If you want to use the Figma to code converter tool, you need to get a &lt;a href="https://help.figma.com/hc/en-us/articles/8085703771159-Manage-personal-access-tokens" rel="noopener noreferrer"&gt;personal access token&lt;/a&gt; from Figma and set it as an environment variable. Otherwise, Flowbite MCP is specifically built for a project that would use Tailwind CSS, Flowbite and optionally Figma for prototyping.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuring MCP client
&lt;/h2&gt;

&lt;p&gt;An MCP client is a software tool such as Cursor, Windsurf or Claude Code that you use for AI development.&lt;/p&gt;

&lt;p&gt;Most of these tools supports MCP servers out of the box and you need to update a JSON file that contains the configuration for the MCP servers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cursor
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://cursor.com/en-US/install-mcp?name=flowbite&amp;amp;config=eyJlbnYiOnsiRklHTUFfQUNDRVNTX1RPS0VOIjoiWU9VUl9QRVJTT05BTF9GSUdNQV9BQ0NFU1NfVE9LRU4ifSwiY29tbWFuZCI6Im5weCAteSBmbG93Yml0ZS1tY3AifQ%3D%3D" rel="noopener noreferrer"&gt;Install in Cursor&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cursor is one of the most popular IDEs for AI development for software engineers and web development. &lt;/p&gt;

&lt;p&gt;To set up Flowbite MCP with Cursor, open the &lt;code&gt;mcp.json&lt;/code&gt; and add the following configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "mcpServers": {
    "flowbite": {
      "command": "npx",
      "args": ["-y", "flowbite-mcp"],
      "env": {
        "FIGMA_ACCESS_TOKEN": "YOUR_PERSONAL_FIGMA_ACCESS_TOKEN"
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Windsurf
&lt;/h3&gt;

&lt;p&gt;Windsurf is the second most popular IDE for AI development and the configuration is similar to Cursor. &lt;/p&gt;

&lt;p&gt;Update the &lt;code&gt;mcp_config.json&lt;/code&gt; file with the following configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "mcpServers": {
    "flowbite": {
      "command": "npx",
      "args": ["-y", "flowbite-mcp"],
      "env": {
        "FIGMA_ACCESS_TOKEN": "YOUR_PERSONAL_FIGMA_ACCESS_TOKEN"
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Claude Code
&lt;/h3&gt;

&lt;p&gt;To install Flowbite MCP in Claude Desktop you need to configure the &lt;code&gt;claude_desktop_config.json&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "mcpServers": {
    "flowbite": {
      "command": "npx",
      "args": ["-y", "flowbite-mcp"],
      "env": {
        "FIGMA_ACCESS_TOKEN": "YOUR_PERSONAL_FIGMA_ACCESS_TOKEN"
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you'd like to request a new integration or have any questions, please open an issue on our &lt;a href="https://github.com/themesberg/flowbite-mcp" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Flowbite MCP tools
&lt;/h2&gt;

&lt;p&gt;Use the tools from Flowbite MCP to enhance your AI development workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  Convert Figma to code
&lt;/h3&gt;

&lt;p&gt;With Flowbite MCP you can now convert &lt;a href="https://flowbite.com/figma/" rel="noopener noreferrer"&gt;Figma layers&lt;/a&gt; to code by prompting any AI provider. &lt;/p&gt;

&lt;p&gt;Currently, we recommend either Gemini 3, GPT 5 or Sonnet 4.5 for the highest quality code conversions and based on the complexity of the designs, you need to follow up with "reparation prompts".&lt;/p&gt;

&lt;p&gt;Here's a prompt example that you can use to convert Figma design to code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use flowbite mcp to convert this figma &amp;lt;FIGMA_NODE_LINK&amp;gt; to code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: to get the node link from Figma, all you need to do is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select the Figma layer in your project&lt;/li&gt;
&lt;li&gt;Right click and select &lt;code&gt;Copy/paste as&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;code&gt;Copy link to selection&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We recommend using the offical &lt;a href="https://flowbite.com/figma/" rel="noopener noreferrer"&gt;Flowbite Design System&lt;/a&gt; as a solid foundation for your UI generation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Generate theme file
&lt;/h3&gt;

&lt;p&gt;Since we released &lt;a href="https://flowbite.com/docs/customize/theming/" rel="noopener noreferrer"&gt;theming support&lt;/a&gt; for Flowbite by providing a better way to customize UI using variables we also built a tool in Flowbite MCP to generate a theme file based on a brand color and a general description of the UI that you'd like to use in your project.&lt;/p&gt;

&lt;p&gt;Here's a prompt example that you can use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use flowbite mcp to generate a theme file using the "#0000FF" brand color
and create a professional, enterprise, clean looking UI (ie. Jira, Facebook)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Local development
&lt;/h2&gt;

&lt;p&gt;If you'd like to extend Flowbite MCP or contribute to the project, you can run it locally as a server.&lt;/p&gt;

&lt;p&gt;We recommend cloning the repository from GitHub, installing the dependencies, building and then running the server.&lt;/p&gt;

&lt;p&gt;Using the native MCP inspector tool can also be a great way to debug and test the server.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Clone the repository
git clone https://github.com/themesberg/flowbite-mcp.git
cd flowbite-mcp

# Install dependencies
npm install

# Build the project
npm run build

# Run in stdio mode (for Claude Desktop, Cursor)
npm start

# Run inspector
npm run start inspector
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Transport modes
&lt;/h3&gt;

&lt;p&gt;Flowbite MCP supports both stdio and http transport modes if you want to run it locally as a server.&lt;/p&gt;

&lt;p&gt;Use the &lt;code&gt;--mode&lt;/code&gt; option to set either &lt;code&gt;http&lt;/code&gt; or &lt;code&gt;stdio&lt;/code&gt; transport mode.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Run in HTTP server mode for production
npx flowbite-mcp --mode http --port 3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Additionally, you can also set the &lt;code&gt;--port&lt;/code&gt; option to choose a different port for the HTTP server.&lt;/p&gt;

&lt;h3&gt;
  
  
  Docker configuration
&lt;/h3&gt;

&lt;p&gt;Flowbite MCP also has a Docker configuration file that you can use to run it as a container.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Build and run with Docker Compose (recommended)
docker-compose up -d

# Check health
curl http://localhost:3000/health

# View logs
docker-compose logs -f

# Stop
docker-compose down
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Contributing
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/themesberg/flowbite-mcp" rel="noopener noreferrer"&gt;Flowbite MCP&lt;/a&gt; is open-source under the MIT license and contributions are more than welcome to the project.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>tailwindcss</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How to install HUGO with Tailwind CSS and Flowbite</title>
      <dc:creator>Zoltán Szőgyényi</dc:creator>
      <pubDate>Thu, 27 Mar 2025 16:08:10 +0000</pubDate>
      <link>https://forem.com/zoltanszogyenyi/how-to-install-hugo-with-tailwind-cs-and-flowbite-56e</link>
      <guid>https://forem.com/zoltanszogyenyi/how-to-install-hugo-with-tailwind-cs-and-flowbite-56e</guid>
      <description>&lt;p&gt;In this guide I want to show you how you can create a new HUGO project and install Tailwind CSS (v4) together with Flowbite so that you can start building websites and blog pages much faster with this tech stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://gohugo.io/" rel="noopener noreferrer"&gt;HUGO&lt;/a&gt; is a popular and open-source static site generator framework that makes it easy to organize your files and assets where you can also leverage a taxonomy system, multilingual support, fast assets pipeline, and more. HUGO is used by millions of developers and by websites such as Bootstrap, Litecoin, Smashing Magazine, and even Flowbite.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/docs/getting-started/hugo/" rel="noopener noreferrer"&gt;Check out this guide&lt;/a&gt; to learn how to install and set up a HUGO project together with Tailwind CSS and the UI components from Flowbite to start building websites with a stack that enhances your front-end development workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;p&gt;Make sure that you have both &lt;a href="https://gohugo.io/installation/" rel="noopener noreferrer"&gt;HUGO&lt;/a&gt; and &lt;a href="https://nodejs.org/en/" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt; installed locally on your computer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a HUGO project
&lt;/h2&gt;

&lt;p&gt;Follow the next steps to learn how to create a new HUGO project after you've installed the dependencies.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Run the following CLI command to create a new HUGO application:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hugo new site flowbite-app
&lt;span class="nb"&gt;cd &lt;/span&gt;flowbite-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;The next step is to create a local custom theme:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hugo new theme flowbite-theme
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will create a new scaffolded theme directory that we can extend with our HUGO app.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Next, add the theme to the &lt;code&gt;config.toml&lt;/code&gt; file:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;theme &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"flowbite-theme"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Run a local server using the following command:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hugo server &lt;span class="nt"&gt;-D&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you should see a basic HUGO website running at a generated localhost server.&lt;/p&gt;

&lt;p&gt;Congratulations! You have now successfully installed and configured HUGO.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install Tailwind CSS
&lt;/h2&gt;

&lt;p&gt;Tailwind CSS is a popular utility-first CSS framework that allows better control over the styling of your website and makes it easier to work together with other team members within your organization.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the &lt;code&gt;flowbite-theme/&lt;/code&gt; directory and run the following command:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;tailwindcss @tailwindcss/cli &lt;span class="nt"&gt;--save-dev&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Inside your &lt;code&gt;main.css&lt;/code&gt; file from the &lt;code&gt;flowbite-theme/&lt;/code&gt; directory add the following:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@import&lt;/span&gt; &lt;span class="s1"&gt;"tailwindcss"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Compile the CSS code for Tailwind CSS by running this command inside of your theme directory:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @tailwindcss/cli &lt;span class="nt"&gt;-i&lt;/span&gt; ./assets/css/main.css  &lt;span class="nt"&gt;-o&lt;/span&gt; ./assets/css/output.css &lt;span class="nt"&gt;--watch&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Update the &lt;code&gt;css.html&lt;/code&gt; file from the &lt;code&gt;flowbite-theme/&lt;/code&gt; directory with the following:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;{{- with resources.Get "css/output.css" }}
  {{- if eq hugo.Environment "development" }}
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"{{ .RelPermalink }}"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  {{- else }}
    {{- with . | minify | fingerprint }}
      &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"{{ .RelPermalink }}"&lt;/span&gt; &lt;span class="na"&gt;integrity=&lt;/span&gt;&lt;span class="s"&gt;"{{ .Data.Integrity }}"&lt;/span&gt; &lt;span class="na"&gt;crossorigin=&lt;/span&gt;&lt;span class="s"&gt;"anonymous"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    {{- end }}
  {{- end }}
{{- end }}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;In order to test out Tailwind CSS, add a utility class inside the &lt;code&gt;single.html&lt;/code&gt; file:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;{{ define "main" }}
  &lt;span class="nt"&gt;&amp;lt;h1&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"text-blue-500"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;{{ .Title }}&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;

  {{ $dateMachine := .Date | time.Format "2006-01-02T15:04:05-07:00" }}
  {{ $dateHuman := .Date | time.Format ":date_long" }}
  &lt;span class="nt"&gt;&amp;lt;time&lt;/span&gt; &lt;span class="na"&gt;datetime=&lt;/span&gt;&lt;span class="s"&gt;"{{ $dateMachine }}"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;{{ $dateHuman }}&lt;span class="nt"&gt;&amp;lt;/time&amp;gt;&lt;/span&gt;

  {{ .Content }}
  {{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }}
{{ end }}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By browsing to one of the post pages, you should now see the text updated in blue.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install Flowbite
&lt;/h2&gt;

&lt;p&gt;Now that you have a working HUGO project configured with Tailwind CSS, you can now install Flowbite.&lt;/p&gt;

&lt;p&gt;Please make sure that you install the dependency, just as with Tailwind CSS, inside your &lt;code&gt;flowbite-theme&lt;/code&gt; directory.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install Flowbite as a dependency using NPM by running the following command:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;flowbite &lt;span class="nt"&gt;--save&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Import the default theme variables from Flowbite inside your main &lt;code&gt;main.css&lt;/code&gt; CSS file:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@import&lt;/span&gt; &lt;span class="s1"&gt;"flowbite/src/themes/default"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Import the Flowbite plugin file in your CSS:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@plugin&lt;/span&gt; &lt;span class="s1"&gt;"flowbite/plugin"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Configure the source files of Flowbite in your CSS:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@source&lt;/span&gt; &lt;span class="s1"&gt;"../../node_modules/flowbite"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Add the Flowbite JavaScript inside your &lt;code&gt;js.html&lt;/code&gt; file:
&lt;/li&gt;
&lt;/ol&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;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://cdn.jsdelivr.net/npm/flowbite@3.1.2/dist/flowbite.min.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;

{{- with resources.Get "js/main.js" }}
  {{- if eq hugo.Environment "development" }}
    {{- with . | js.Build }}
      &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"{{ .RelPermalink }}"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
    {{- end }}
  {{- else }}
    {{- $opts := dict "minify" true }}
    {{- with . | js.Build $opts | fingerprint }}
      &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"{{ .RelPermalink }}"&lt;/span&gt; &lt;span class="na"&gt;integrity=&lt;/span&gt;&lt;span class="s"&gt;"{{- .Data.Integrity }}"&lt;/span&gt; &lt;span class="na"&gt;crossorigin=&lt;/span&gt;&lt;span class="s"&gt;"anonymous"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
    {{- end }}
  {{- end }}
{{- end }}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Let's now test out Flowbite by updating our &lt;code&gt;menu.html&lt;/code&gt; file from the theme directory:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;{{- /*
Renders a menu for the given menu ID.

@context {page} page The current page.
@context {string} menuID The menu ID.

@example: {{ partial "menu.html" (dict "menuID" "main" "page" .) }}
*/}}

{{- $page := .page }}
{{- $menuID := .menuID }}

{{- with index site.Menus $menuID }}
&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;"bg-white border-gray-200 dark:bg-gray-900"&lt;/span&gt;&lt;span class="nt"&gt;&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;"max-w-screen-xl flex flex-wrap items-center justify-between mx-auto p-4"&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;href=&lt;/span&gt;&lt;span class="s"&gt;"https://flowbite.com/"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"flex items-center space-x-3 rtl:space-x-reverse"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://flowbite.com/docs/images/logo.svg"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"h-8"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Flowbite Logo"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"self-center text-2xl font-semibold whitespace-nowrap dark:text-white"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Flowbite&lt;span class="nt"&gt;&amp;lt;/span&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;button&lt;/span&gt; &lt;span class="na"&gt;data-collapse-toggle=&lt;/span&gt;&lt;span class="s"&gt;"navbar-default"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"button"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"inline-flex items-center p-2 w-10 h-10 justify-center text-sm text-gray-500 rounded-lg md:hidden hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-gray-200 dark:text-gray-400 dark:hover:bg-gray-700 dark:focus:ring-gray-600"&lt;/span&gt; &lt;span class="na"&gt;aria-controls=&lt;/span&gt;&lt;span class="s"&gt;"navbar-default"&lt;/span&gt; &lt;span class="na"&gt;aria-expanded=&lt;/span&gt;&lt;span class="s"&gt;"false"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"sr-only"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Open main menu&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;svg&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"w-5 h-5"&lt;/span&gt; &lt;span class="na"&gt;aria-hidden=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt; &lt;span class="na"&gt;xmlns=&lt;/span&gt;&lt;span class="s"&gt;"http://www.w3.org/2000/svg"&lt;/span&gt; &lt;span class="na"&gt;fill=&lt;/span&gt;&lt;span class="s"&gt;"none"&lt;/span&gt; &lt;span class="na"&gt;viewBox=&lt;/span&gt;&lt;span class="s"&gt;"0 0 17 14"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;path&lt;/span&gt; &lt;span class="na"&gt;stroke=&lt;/span&gt;&lt;span class="s"&gt;"currentColor"&lt;/span&gt; &lt;span class="na"&gt;stroke-linecap=&lt;/span&gt;&lt;span class="s"&gt;"round"&lt;/span&gt; &lt;span class="na"&gt;stroke-linejoin=&lt;/span&gt;&lt;span class="s"&gt;"round"&lt;/span&gt; &lt;span class="na"&gt;stroke-width=&lt;/span&gt;&lt;span class="s"&gt;"2"&lt;/span&gt; &lt;span class="na"&gt;d=&lt;/span&gt;&lt;span class="s"&gt;"M1 1h15M1 7h15M1 13h15"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/svg&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/button&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;"hidden w-full md:block md:w-auto"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"navbar-default"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;ul&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"font-medium flex flex-col p-4 md:p-0 mt-4 border border-gray-100 rounded-lg bg-gray-50 md:flex-row md:space-x-8 rtl:space-x-reverse md:mt-0 md:border-0 md:bg-white dark:bg-gray-800 md:dark:bg-gray-900 dark:border-gray-700"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        {{- partial "inline/menu/walk.html" (dict "page" $page "menuEntries" .) }}
      &lt;span class="nt"&gt;&amp;lt;/ul&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;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
{{- end }}

{{- define "partials/inline/menu/walk.html" }}
  {{- $page := .page }}
  {{- range .menuEntries }}
    {{- $attrs := dict "href" .URL }}
    {{- if $page.IsMenuCurrent .Menu . }}
      {{- $attrs = merge $attrs (dict "class" "active" "aria-current" "page") }}
    {{- else if $page.HasMenuCurrent .Menu .}}
      {{- $attrs = merge $attrs (dict "class" "ancestor" "aria-current" "true") }}
    {{- end }}
    {{- $name := .Name }}
    {{- with .Identifier }}
      {{- with T . }}
        {{- $name = . }}
      {{- end }}
    {{- end }}
    &lt;span class="nt"&gt;&amp;lt;li&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;"block py-2 px-3 text-gray-900 rounded-sm hover:bg-gray-100 md:hover:bg-transparent md:border-0 md:hover:text-blue-700 md:p-0 dark:text-white md:dark:hover:text-blue-500 dark:hover:bg-gray-700 dark:hover:text-white md:dark:hover:bg-transparent"&lt;/span&gt;
        &lt;span class="err"&gt;{{&lt;/span&gt;&lt;span class="na"&gt;-&lt;/span&gt; &lt;span class="na"&gt;range&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="na"&gt;k&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="na"&gt;v&lt;/span&gt; &lt;span class="na"&gt;:= &lt;/span&gt;&lt;span class="s"&gt;$attrs&lt;/span&gt; &lt;span class="err"&gt;}}&lt;/span&gt;
          &lt;span class="err"&gt;{{&lt;/span&gt;&lt;span class="na"&gt;-&lt;/span&gt; &lt;span class="na"&gt;with&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="na"&gt;v&lt;/span&gt; &lt;span class="err"&gt;}}&lt;/span&gt;
            &lt;span class="err"&gt;{{&lt;/span&gt;&lt;span class="na"&gt;-&lt;/span&gt; &lt;span class="na"&gt;printf&lt;/span&gt; &lt;span class="err"&gt;"&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="na"&gt;s=&lt;/span&gt;&lt;span class="s"&gt;%q"&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="na"&gt;k&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="na"&gt;v&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="na"&gt;safeHTMLAttr&lt;/span&gt; &lt;span class="err"&gt;}}&lt;/span&gt;
          &lt;span class="err"&gt;{{&lt;/span&gt;&lt;span class="na"&gt;-&lt;/span&gt; &lt;span class="na"&gt;end&lt;/span&gt; &lt;span class="err"&gt;}}&lt;/span&gt;
        &lt;span class="err"&gt;{{&lt;/span&gt;&lt;span class="na"&gt;-&lt;/span&gt; &lt;span class="na"&gt;end&lt;/span&gt; &lt;span class="na"&gt;-&lt;/span&gt;&lt;span class="err"&gt;}}&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;{{ $name }}&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
      {{- with .Children }}
        &lt;span class="nt"&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;
          {{- partial "inline/menu/walk.html" (dict "page" $page "menuEntries" .) }}
        &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
      {{- end }}
    &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
  {{- end }}
{{- end }}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After you reload the server, the pages from the menu should now be rendered inside the navbar component.&lt;/p&gt;

&lt;h2&gt;
  
  
  UI components
&lt;/h2&gt;

&lt;p&gt;Now that you have everything installed and set up you can start using the &lt;a href="https://flowbite.com/blocks/" rel="noopener noreferrer"&gt;UI components from Flowbite&lt;/a&gt; to build up your website with HUGO much faster and easier with hero sections, navigation bars, admin CRUD layouts, and more.&lt;/p&gt;

&lt;h2&gt;
  
  
  HUGO starter theme
&lt;/h2&gt;

&lt;p&gt;We have developed a free and open-source &lt;a href="https://github.com/themesberg/tailwind-hugo-starter" rel="noopener noreferrer"&gt;HUGO starter theme&lt;/a&gt; that you can use to build up your website as a starting point or use it directly as a personal blog website that already has HUGO, Tailwind CSS and Flowbite configured.&lt;/p&gt;

</description>
      <category>hugo</category>
      <category>tailwindcss</category>
      <category>flowbite</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Free and open-source collection of SVG illustrations for Flowbite</title>
      <dc:creator>Zoltán Szőgyényi</dc:creator>
      <pubDate>Mon, 17 Feb 2025 12:24:28 +0000</pubDate>
      <link>https://forem.com/themesberg/free-and-open-source-collection-of-svg-illustrations-for-flowbite-3lme</link>
      <guid>https://forem.com/themesberg/free-and-open-source-collection-of-svg-illustrations-for-flowbite-3lme</guid>
      <description>&lt;p&gt;Today I would like to show you a project that we have been working on for over a year and that we are finally launching to the world. It's a collection of over &lt;a href="https://flowbite.com/illustrations/" rel="noopener noreferrer"&gt;50 SVG illustrations&lt;/a&gt; designed in 3D style available in dark and light mode.&lt;/p&gt;

&lt;p&gt;🔗 Check them out here: &lt;a href="https://flowbite.com/illustrations/" rel="noopener noreferrer"&gt;https://flowbite.com/illustrations/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All of these illustrations are open-source under the MIT license and they are free to use in your projects. This comes roughly one year after we have launched our &lt;a href="https://flowbite.com/icons/" rel="noopener noreferrer"&gt;Flowbite Icons&lt;/a&gt; collection, to which we keep adding new icons every month.&lt;/p&gt;

&lt;p&gt;These illustrations are available in SVG, but they can also be downloaded in PNG format using our &lt;a href="https://flowbite.com/illustrations/" rel="noopener noreferrer"&gt;coded interface&lt;/a&gt; where you can also filter and search for any illustrations.&lt;/p&gt;

&lt;p&gt;Let me show you some of the features of these new illustrations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Available in dark mode
&lt;/h2&gt;

&lt;p&gt;All of the illustrations have a dark mode variant which slightly changes the colors to accompany darker interfaces. Flowbite inherently has light and dark mode UI components so it made a lot of sense to accommodate illustrations too.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/illustrations/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6qj20g0hzgl7ffqb6i2.png" alt="SVG dark illustrations" width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To copy the dark mode variant of the illustration, all you need to do is switch the light/dark mode of the Flowbite website and the source code or PNG will automatically switch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Customize colors
&lt;/h2&gt;

&lt;p&gt;You can easily set your own color by using the color switcher from the settings bar or adding your own colors by using the Figma source files if you want more control.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/illustrations/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcvz0yabdgbtknscjevt6.png" alt="SVG color illustrations" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Figma file
&lt;/h2&gt;

&lt;p&gt;We have also created a &lt;a href="https://www.figma.com/community/file/1471861797767044313" rel="noopener noreferrer"&gt;Figma file for the illustrations&lt;/a&gt; so that you can use these as a designer or have more control over the source files that we ourselves have worked on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.figma.com/community/file/1471861797767044313" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9won6ha2ochzwla5n456.png" alt="SVG Figma Illustrations" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These are also open-source and you can use them in your projects, but if you're building templates please mention in the credits that Flowbite has been used as a source link.&lt;/p&gt;

&lt;h2&gt;
  
  
  Updates
&lt;/h2&gt;

&lt;p&gt;We'll add about 4-5 illustrations every month so if you want to request your own, then please reach out to us via the &lt;a href="https://github.com/themesberg/flowbite-illustrations" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt; and create an issue.&lt;/p&gt;

&lt;h2&gt;
  
  
  Support us
&lt;/h2&gt;

&lt;p&gt;If you are using our open-source collection and you're wondering how you can be supporting us, we have a &lt;a href="https://flowbite.com/pro/#pricing" rel="noopener noreferrer"&gt;pro version of Flowbite&lt;/a&gt; that you can get to access many UI components, templates, blocks, and an advanced Figma design system to build and designe websites faster and more efficiently.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/getting-started/introduction/" rel="noopener noreferrer"&gt;Flowbite UI Library&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/illustrations/" rel="noopener noreferrer"&gt;SVG illustrations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/blocks/" rel="noopener noreferrer"&gt;Flowbite Blocks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/icons/" rel="noopener noreferrer"&gt;SVG Icons&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>flowbite</category>
      <category>tailwindcss</category>
    </item>
    <item>
      <title>Tailwind v4 is here! Learn how to upgrade your current project and explore the new features with Flowbite</title>
      <dc:creator>Zoltán Szőgyényi</dc:creator>
      <pubDate>Sun, 24 Nov 2024 15:06:00 +0000</pubDate>
      <link>https://forem.com/zoltanszogyenyi/tailwind-v4-is-here-learn-how-to-upgrade-your-current-project-and-explore-the-new-features-with-3ji7</link>
      <guid>https://forem.com/zoltanszogyenyi/tailwind-v4-is-here-learn-how-to-upgrade-your-current-project-and-explore-the-new-features-with-3ji7</guid>
      <description>&lt;p&gt;A few days ago the developers from Tailwind officially announced the v4-beta which means that you can now officially start playing around with the new version of Tailwind which brings a couple of new features, better performance, and a small switch of the CSS-in-JS paradigm to native CSS layers and variables.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/blog/tailwind-v4/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fso8xyk9w4wun20ihdcu2.png" alt="Tailwind CSS v4 upgrade guide" width="800" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But don't worry, Tailwind is still Tailwind and all of the utility classes that we all love will still work and the way you work with them remains unchanged – configuration of colors, fonts and other theme related settings will now be recommended to be added as CSS variables which is a good change in my opinion.&lt;/p&gt;

&lt;p&gt;Here's a list of the highlighted features and changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;3x better performance compilation time&lt;/li&gt;
&lt;li&gt;deprecating tailwind.config.js in favor of CSS configuration&lt;/li&gt;
&lt;li&gt;better source detection (no more content paths in config)&lt;/li&gt;
&lt;li&gt;a couple of new utility classes and renaming others&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I suggest you take a look at the &lt;a href="https://github.com/themesberg/flowbite-admin-dashboard" rel="noopener noreferrer"&gt;official Tailwind v4-beta guide&lt;/a&gt; and you'll learn about the new features and changes from the source directly. Going onwards in this article I'll show you how to upgrade your current Flowbite project which most likely uses the current stable version of Tailwind CSS which is v3.x.&lt;/p&gt;

&lt;h2&gt;
  
  
  Upgrading to Tailwind v4-beta
&lt;/h2&gt;

&lt;p&gt;For the sake of simplicity we're going to use as an example one of our open-source projects that uses Flowbite and Tailwind and that is our &lt;a href="https://github.com/themesberg/flowbite-admin-dashboard" rel="noopener noreferrer"&gt;admin dashboard&lt;/a&gt; from GitHub which I definitely recommend you using for your projects.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/inRg9lLGMRU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The first thing you need to do is open up the terminal and using the next tag of both the Tailwind CSS and Flowbite packages using NPM:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install tailwindcss@next @tailwindcss/postcss@next flowbite@next
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next thing is that you have to update your postcss.config.js file and remove the old plugins which are no longer needed such as the autoprefixer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export default {
  plugins: {
    '@tailwindcss/postcss': {},
  },
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that you should go to your main CSS file where previously you have imported the Tailwind directives and you should delete those and only import one unique Tailwind module:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@import "tailwindcss";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The easiest way to upgrade a Tailwind v3 project to v4 is to simply just import the configuration file called tailwind.config.js inside your main CSS file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@import "tailwindcss";

/* add this to copy the configuration settings from your project */
@config "./../tailwind.config.js";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lastly, compile the source files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx @tailwindcss/cli -i main.css -o styles.css
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it! Hopefully you had a pixel-perfect upgrade for your project as we did.&lt;/p&gt;

&lt;p&gt;The full upgrade guide for Flowbite from Tailwind v3 to v4 can also be checked on the &lt;a href="https://flowbite.com/docs/getting-started/quickstart/#tailwind-css-40" rel="noopener noreferrer"&gt;Flowbite quickstart guide&lt;/a&gt; from our official documentation website.&lt;/p&gt;

&lt;p&gt;Please remember that this is still in beta version so it's subject to changes and that is why we still recommend using the stable v3.x of Tailwind CSS until further notice – have fun using the new features!&lt;/p&gt;

</description>
      <category>tailwindcss</category>
      <category>flowbite</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Open-source WYSIWYG text editor component built with Tailwind CSS and Flowbite</title>
      <dc:creator>Zoltán Szőgyényi</dc:creator>
      <pubDate>Sun, 29 Sep 2024 10:16:37 +0000</pubDate>
      <link>https://forem.com/themesberg/open-source-wysiwyg-text-editor-component-built-with-tailwind-css-and-flowbite-5a0</link>
      <guid>https://forem.com/themesberg/open-source-wysiwyg-text-editor-component-built-with-tailwind-css-and-flowbite-5a0</guid>
      <description>&lt;p&gt;The &lt;a href="https://flowbite.com/docs/plugins/wysiwyg/" rel="noopener noreferrer"&gt;WYSIWYG text editor from Flowbite&lt;/a&gt; is open-source under the MIT license based on the Tip Tap library and allows you to easily edit complex text data with typography styles, links, images, videos, and more.&lt;/p&gt;

&lt;p&gt;The markup and styles provided by Flowbite are all built with the utility classes from Tailwind CSS and the styles for the content inside the WYSIWYG text editor are based on the &lt;a href="https://flowbite.com/docs/components/typography/" rel="noopener noreferrer"&gt;Flowbite Typography&lt;/a&gt; plugin.&lt;/p&gt;

&lt;p&gt;All examples provided on this page have support for dark mode, RTL (right-to-left) styles, responsiveness on mobile devices and you can easily add your own functionality using JavaScript and the Flowbite API.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;Before continuing make sure that you have Tailwind CSS, Flowbite, and Tip Tap installed in your project.&lt;/p&gt;

&lt;p&gt;Follow the &lt;a href="https://flowbite.com/docs/getting-started/quickstart/" rel="noopener noreferrer"&gt;quickstart guide&lt;/a&gt; from Flowbite to enable the interactive elements&lt;/p&gt;

&lt;p&gt;Install the &lt;a href="https://flowbite.com/docs/components/typography/" rel="noopener noreferrer"&gt;Flowbite Typography&lt;/a&gt; plugin to format the content of text inside the WYSYIWYG editor preview:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i flowbite-typography
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Require the plugin inside the &lt;code&gt;tailwind.config.js&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  theme: {
    // ...
  },
  plugins: [
    require('flowbite-typography'),
    // ...
  ],
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set the &lt;code&gt;wysiwyg&lt;/code&gt; field from the Flowbite plugin to &lt;code&gt;true&lt;/code&gt; to enable pseudo styles:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;plugins: [
  require('flowbite/plugin')({
      wysiwyg: true,
  }),
  // ... other plugins
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, install Tip Tap either via NPM or skip this step if you're using CDN:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install @tiptap/core @tiptap/pm @tiptap/starter-kit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you're ready to use the examples below by copying the HTML markup and the JavaScript code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Default text editor
&lt;/h2&gt;

&lt;p&gt;Use this example of a WYSIWYG text editor to enable basic typography styling and formatting, adding lists, links, images, videos, code blocks, aligning text, blockquotes, setting headers and paragraphs and more.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/#default-text-editor" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F60vqgmgaljil879rclc1.png" alt="Tailwind CSS WYSIWYG" width="800" height="562"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/#default-text-editor" rel="noopener noreferrer"&gt;Get source code and example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Text formatting
&lt;/h2&gt;

&lt;p&gt;Use this example of a WYSIWYG text editor to enable typography styling, formatting and marking such as underline, bold, italic, strikethrough, code, highlight and also selecting text size, color, font family and more using the utility classes from Tailwind CSS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/#text-formatting" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiwwfvfzubwczbwv5cwdl.png" alt="Tailwind CSS WYSIWYG formatting" width="800" height="554"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/#text-formatting" rel="noopener noreferrer"&gt;Get source code and example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Text alignment
&lt;/h2&gt;

&lt;p&gt;Enable text alignment to the left, center, right, and justify for the content inside of the WYSIWYG component.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/#text-alignment" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjx1omy8tnjt6uqzbosfm.png" alt="Tailwind CSS WYSIWYG text alignment" width="800" height="531"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/#text-alignment" rel="noopener noreferrer"&gt;Get source code and example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Typography elements
&lt;/h2&gt;

&lt;p&gt;Use this example to create typography elements like bullet lists, ordered lists, blockquotes, horizontal rules, paragraphs, headings, code blocks based on Tailwind CSS utility classees and the Flowbite API.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/#typography-elements" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ey2xgsgshji3w2znfa7.png" alt="Tailwind CSS WYSIWYHG typography" width="800" height="645"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/#typography-elements" rel="noopener noreferrer"&gt;Get source code and examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Configuring links
&lt;/h2&gt;

&lt;p&gt;Use this example to add and remove anchor links for the content inside of the WYSIWYG text editor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/#configuring-links" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg814ljoy2f9pxf7ve2jb.png" alt="Tailwind CSS WYSIWYG links" width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/#configuring-links" rel="noopener noreferrer"&gt;Get source code and examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Using images
&lt;/h2&gt;

&lt;p&gt;Use this example to learn how to add images inside of the WYSIWYG text editor and configure settings such as the image URL, image alt attribute which is important for SEO and accessibility and the image title.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/#using-images" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftqf3jc47y2h8edvbsjfh.png" alt="Tailwind CSS WYSIWYG images" width="800" height="659"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/#using-images" rel="noopener noreferrer"&gt;Get source code and examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Adding videos
&lt;/h2&gt;

&lt;p&gt;Use this example to embed videos inside the WYSIWYG text editor based on a YouTube URL source and set the width and height of the video by using the Flowbite modal component API.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/#adding-videos" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2jczscyelkoi0j23hme3.png" alt="Tailwind CSS WYSIWYGH videos" width="800" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/#adding-videos" rel="noopener noreferrer"&gt;Get source code and examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Editing tables
&lt;/h2&gt;

&lt;p&gt;Use this example to edit table data inside the WYSIWYG text editor by adding and removing table column, rows, and cells and use other features to navigate through the table data for a convenient editing process.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/#editing-tables" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fab4jedoelfm4qbmr9fqv.png" alt="Tailwind CSS WYSIWYG tables" width="800" height="667"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/#editing-tables" rel="noopener noreferrer"&gt;Get source code and examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Undo and redo
&lt;/h2&gt;

&lt;p&gt;Use the history functionality from the WYSIWYG text editor component to integrate undo and redo actions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/#undo-and-redo" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F60c5a2ufsgoefbsr9k0c.png" alt="Tailwind CSS WYSIWYG undo redo" width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/#undo-and-redo" rel="noopener noreferrer"&gt;Get source code and examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Exporting data
&lt;/h2&gt;

&lt;p&gt;Use the editor.getJSON() and the editor.getHTML() functions to export the text content inside of the WYSIWYG text editor in JSON or raw HTML format to persist into your database or API structure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/#exporting-data" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyvshtl38nykz7qisvdx6.png" alt="Tailwind CSS WYSIWYG export data" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/#exporting-data" rel="noopener noreferrer"&gt;Get source code and examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Javascript behaviour
&lt;/h2&gt;

&lt;p&gt;Learn more about how you can programmatically use the WYSIWYG editor using Javascript by creating a new instance of the object, setting options, method, event listeners, and more to integrate with your code base.&lt;/p&gt;

&lt;p&gt;After you have installed Tip Tap via NPM or CDN you can create a new &lt;code&gt;Editor&lt;/code&gt; object:&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="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Editor&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@tiptap/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;StarterKit&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@tiptap/starter-kit&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Editor&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;element&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;wysiwyg&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&gt;extensions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;StarterKit&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;&amp;lt;p&amp;gt;Welcome to Flowbite!&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make sure that you also have an empty &lt;code&gt;div&lt;/code&gt; element with the appropiate ID:&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;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"wysiwyg"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This code will automatically set up the markup needed inside of the WYSIWYG component. Please note the fact that the Tip Tap library is headless so you need to style the elements yourself, but you can copy-paste the examples from Flowbite on this page.&lt;/p&gt;

&lt;h3&gt;
  
  
  Content styling
&lt;/h3&gt;

&lt;p&gt;We also recommend adding custom typography classes from the &lt;a href="https://flowbite.com/docs/components/typography/" rel="noopener noreferrer"&gt;Flowbite Typography&lt;/a&gt; package so that the content inside of the text editor will be correctly styled:&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="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Editor&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;element&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;wysiwyg&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&gt;extensions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;StarterKit&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;&amp;lt;p&amp;gt;Welcome to Flowbite!&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;editorProps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;attributes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;format lg:format-lg dark:format-invert focus:outline-none format-blue max-w-none&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Extensions
&lt;/h3&gt;

&lt;p&gt;Tip Tap is a modular library meaning that if you want to introduce images, videos, links and other elements inside the WYSIWYG component you need to specifically import that resources from the library and set it as an extension when initialising the &lt;code&gt;Editor&lt;/code&gt; object.&lt;/p&gt;

&lt;p&gt;Here is one example where we add the link extension:&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="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Editor&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@tiptap/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;StarterKit&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@tiptap/starter-kit&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Link&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@tiptap/extension-link&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;editor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Editor&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;element&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#wysiwyg-links-example&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="na"&gt;extensions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="nx"&gt;StarterKit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;Link&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;configure&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
            &lt;span class="na"&gt;openOnClick&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;autolink&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;defaultProtocol&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;&amp;lt;p&amp;gt;Flowbite is an &amp;lt;strong&amp;gt;open-source library of UI components&amp;lt;/strong&amp;gt; based on the utility-first Tailwind CSS framework featuring dark mode support, a Figma design system, and more.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;It includes all of the commonly used components that a website requires, such as buttons, dropdowns, navigation bars, modals, datepickers, advanced charts and the list goes on.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Learn more about all components from the &amp;lt;a href="https://flowbite.com/docs/getting-started/introduction/"&amp;gt;Flowbite Docs&amp;lt;/a&amp;gt;.&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;editorProps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;attributes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;format lg:format-lg dark:format-invert focus:outline-none format-blue max-w-none&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Methods
&lt;/h3&gt;

&lt;p&gt;You can easily call the methods from the &lt;code&gt;Editor&lt;/code&gt; object to set text styles, links, images, and more. Here is one example where based upon a click event on a button you will be prompted with the URL of the link and it will add it to the currently selected text:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// set up custom event listeners for the buttons
document.getElementById('toggleLinkButton').addEventListener('click', () =&amp;gt; {
    const url = window.prompt('Enter image URL:', 'https://flowbite.com');
    editor.chain().focus().toggleLink({ href: url }).run();
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And here's another example where you can unset a link:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// unset the links based on a button click
document.getElementById('removeLinkButton').addEventListener('click', () =&amp;gt; {
    editor.chain().focus().unsetLink().run()
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Examples from this page have functional elements so you can check the JavaScript tab for the source code.&lt;/p&gt;

&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;Resources from this page are licensed under the MIT License, including the Flowbite examples and Tip Tap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;p&gt;These examples could not have been done without the usage of the following open-source resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/getting-started/introduction/" rel="noopener noreferrer"&gt;Flowbite Library&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/plugins/wysiwyg/" rel="noopener noreferrer"&gt;Tailwind CSS WYSIWYG - Flowbite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ueberdosis/tiptap" rel="noopener noreferrer"&gt;Tip Tap Library&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tailwindcss.com/" rel="noopener noreferrer"&gt;Tailwind CSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/icons/" rel="noopener noreferrer"&gt;Flowbite SVG Icons&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>tailwindcss</category>
      <category>opensource</category>
      <category>webdev</category>
      <category>flowbite</category>
    </item>
    <item>
      <title>Storefront hero sections for e-commerce built with Tailwind CSS and Flowbite</title>
      <dc:creator>Zoltán Szőgyényi</dc:creator>
      <pubDate>Mon, 26 Aug 2024 13:38:57 +0000</pubDate>
      <link>https://forem.com/themesberg/storefront-hero-sections-for-e-commerce-built-with-tailwind-css-and-flowbite-3j8j</link>
      <guid>https://forem.com/themesberg/storefront-hero-sections-for-e-commerce-built-with-tailwind-css-and-flowbite-3j8j</guid>
      <description>&lt;p&gt;Hey devs 👋&lt;/p&gt;

&lt;p&gt;Today I would like to show you a couple of new components that we have built using Tailwind CSS and the Flowbite Library for e-commerce websites and these are the &lt;a href="https://flowbite.com/blocks/e-commerce/storefront-hero/" rel="noopener noreferrer"&gt;hero sections (aka. storefront)&lt;/a&gt; as the first and primary parts of the website.&lt;/p&gt;

&lt;p&gt;You can use these to show promotions, search inputs, CTA buttons, campaigns, the primary categories of your store and a whole lot more.&lt;/p&gt;

&lt;p&gt;All of the components are built with Tailwind CSS, support dark mode, have RTL direction enabled and the first example is also open-source under the MIT license.&lt;/p&gt;

&lt;p&gt;Let's check them out!&lt;/p&gt;

&lt;h2&gt;
  
  
  Default storefront section
&lt;/h2&gt;

&lt;p&gt;Use this section to show a hero section as the storefront page of your e-commerce website featuring a heading, description, CTA button, an illustration and a list of logos of the products that your store is selling.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/storefront-hero/#default-hero-section" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft2vfyw3gtc3j5y7tm1rq.png" alt="Tailwind CSS Storefront" width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/storefront-hero/#default-hero-section" rel="noopener noreferrer"&gt;Get the source code and example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Storefront hero section with categories
&lt;/h2&gt;

&lt;p&gt;This section can be used as the first section of your e-commerce websites by showing the most popular product categories using cards alongside a heading with two CTA buttons and brand logos below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/storefront-hero/#storefront-hero-section-with-categories" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fae2i5sa8de4rnwteuvi5.png" alt="Tailwind CSS Storefront categories" width="800" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/storefront-hero/#storefront-hero-section-with-categories" rel="noopener noreferrer"&gt;Get the source code and example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Storefront categories grid view
&lt;/h2&gt;

&lt;p&gt;Use this example to show a complex grid view of the primary and secondary highlighted categories from your e-commerce website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/storefront-hero/#storefront-categories-grid-view" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnv8tyazsb42iyl2v1jzx.png" alt="Tailwind CSS Storefront grid view" width="800" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/storefront-hero/#storefront-categories-grid-view" rel="noopener noreferrer"&gt;Get the source code and example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Storefront hero with background image
&lt;/h2&gt;

&lt;p&gt;This section can be used as the hero section of an e-commerce website with a full background image where you show a heading, paragraph, CTA button and a list of the primary categories.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/storefront-hero/#storefront-hero-with-background-image" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fixlipour76y838dmuz01.png" alt="Tailwind CSS Storefront background image" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/storefront-hero/#storefront-hero-with-background-image" rel="noopener noreferrer"&gt;Get the source code and example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Storefront with CTA and categories list
&lt;/h2&gt;

&lt;p&gt;Use this section to show a list of categories in a sidebar and a hero section with a heading, description and CTA button to increase sales and conversion rates.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/storefront-hero/#storefront-with-cta-and-categories-list" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdll94tejs6bb3d9ezq70.png" alt="Tailwind CSS Storefront with CTA button" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/storefront-hero/#storefront-with-cta-and-categories-list" rel="noopener noreferrer"&gt;Get the source code and example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Storefront hero with carousel and search
&lt;/h2&gt;

&lt;p&gt;Use this example to show an advanced storefront hero section with a carousel component featuring limited deals and a search bar for your e-commerce website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/storefront-hero/#storefront-hero-with-carousel-and-search" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp65ytxzh9d704uvesi40.png" alt="Tailwind CSS Storefront carousel" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/storefront-hero/#storefront-hero-with-carousel-and-search" rel="noopener noreferrer"&gt;Get the source code and example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;p&gt;These components could not have been built without the usage of the following awesome open-source resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tailwindcss.com/" rel="noopener noreferrer"&gt;Tailwind CSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/getting-started/introduction/" rel="noopener noreferrer"&gt;Flowbite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/icons/" rel="noopener noreferrer"&gt;Flowbite Icons&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>tailwindcss</category>
      <category>webdev</category>
      <category>flowbite</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Open-source datatable components built with Tailwind CSS and Flowbite</title>
      <dc:creator>Zoltán Szőgyényi</dc:creator>
      <pubDate>Tue, 06 Aug 2024 15:40:25 +0000</pubDate>
      <link>https://forem.com/themesberg/open-source-datatable-components-built-wiht-tailwind-css-5fae</link>
      <guid>https://forem.com/themesberg/open-source-datatable-components-built-wiht-tailwind-css-5fae</guid>
      <description>&lt;p&gt;Hey devs!&lt;/p&gt;

&lt;p&gt;The day has finally come and after many weeks of designing and coding I'm happy to show you a new component that we've just launched here at the Flowbite community: &lt;a href="https://flowbite.com/docs/plugins/datatables/" rel="noopener noreferrer"&gt;the datatables&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It is an essential, but at the same time very complex component that has the regular table HTML markup as the foundation, but supercharges it with important UX features like searching, filtering, sorting, pagination, and more.&lt;/p&gt;

&lt;p&gt;What is important to note here is that the table is built for best usage with Tailwind CSS and Flowbite and has stuff like dark mode, RTL, responsive design, and a general care for modern design integrated.&lt;/p&gt;

&lt;p&gt;It is easy to get started and unlike other datatable integrations, wrappers, and plugins, this one does not require you to install jQuery - all you need is good old JavaScript, which the browser thankfully already has by default.&lt;/p&gt;

&lt;p&gt;Now without further ado, let's check these out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;Before continuing make sure that you have Tailwind CSS, Flowbite, and Simple Datables in your project.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Install Tailwind CSS and follow our &lt;a href="https://flowbite.com/docs/getting-started/quickstart/" rel="noopener noreferrer"&gt;quickstart guide&lt;/a&gt; to install Flowbite and the official plugin&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set the field &lt;code&gt;datatables&lt;/code&gt; to the value &lt;code&gt;true&lt;/code&gt; inside the &lt;code&gt;tailwind.config.js&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;plugins: [
  require('flowbite/plugin')({
      datatables: true,
  }),
  // ... other plugins
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Install the &lt;code&gt;simple-datatables&lt;/code&gt; library using NPM:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install simple-datatables --save
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alternatively, you can also include it in your project using CDN:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;script src="https://cdn.jsdelivr.net/npm/simple-datatables@9.0.3"&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that you have installed all libraries you can start copy-pasting the datatable components from Flowbite.&lt;/p&gt;

&lt;p&gt;Make sure that in addition to the HTML markup you also copy the JavaScript code to initialize the component.&lt;/p&gt;

&lt;h2&gt;
  
  
  Default datatable
&lt;/h2&gt;

&lt;p&gt;Use this example to show table data with default sorting and pagination functionalities.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/docs/plugins/datatables/#default-datatable" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2f4on9bk6odnz1a9teon.png" alt="Tailwind CSS DataTable" width="800" height="764"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/plugins/datatables/#default-datatable" rel="noopener noreferrer"&gt;Get the HTML and JS code from here&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Table search
&lt;/h2&gt;

&lt;p&gt;Set the &lt;code&gt;searchable&lt;/code&gt; option to &lt;code&gt;true&lt;/code&gt; to enable the search functionality for all table data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/docs/plugins/datatables/#table-search" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6inl2ekoycfxdod2ghf.png" alt="Tailwind CSS Table Search" width="800" height="796"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/plugins/datatables/#table-search" rel="noopener noreferrer"&gt;Get the HTML and JS code from here&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Filtering data
&lt;/h2&gt;

&lt;p&gt;To enable filtering data based on a search query for each column you need to copy the custom code from the JavaScript tab and the HTML structure of the table. Enabling search for each individual data column is an advanced way of letting users browse complex data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/docs/plugins/datatables/#filtering-data" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7b8p3l2jdu5b71904mjb.png" alt="Tailwind CSS Table Filter" width="800" height="889"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/plugins/datatables/#filtering-data" rel="noopener noreferrer"&gt;Get the HTML and JS code from here&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Sorting data
&lt;/h2&gt;

&lt;p&gt;By setting the value &lt;code&gt;sortable&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt; you'll enable all data rows from the datatable to be sortable by clicking on the table column heading. You can also disable it by setting the same option to &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/docs/plugins/datatables/#sorting-data" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwl7zpvjw5wys3au2mjq8.png" alt="Tailwind CSS Table Sorting" width="800" height="787"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/plugins/datatables/#sorting-data" rel="noopener noreferrer"&gt;Get the HTML and JS code from here&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Table pagination
&lt;/h2&gt;

&lt;p&gt;Pagination is enabled by default for all datatables from Flowbite, however, you can disable it by setting the option &lt;code&gt;paging&lt;/code&gt; to &lt;code&gt;false&lt;/code&gt;. Use the &lt;code&gt;perPage&lt;/code&gt; option to specify how many data rows to show by default. &lt;/p&gt;

&lt;p&gt;You can also set the &lt;code&gt;perPageSelect&lt;/code&gt; option to set the selection options of the table.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/docs/plugins/datatables/#table-pagination" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu89dfur2fetw1fyzhjxo.png" alt="Tailwind CSS Table Pagination" width="800" height="682"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/plugins/datatables/#table-pagination" rel="noopener noreferrer"&gt;Get the HTML and JS code from here&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Selecting rows
&lt;/h2&gt;

&lt;p&gt;Use this example to enable the selection of rows by clicking anywhere one of the table row elements by copying setting the &lt;code&gt;multiselect&lt;/code&gt; option to &lt;code&gt;true&lt;/code&gt; and copying the JavaScript configuration from Flowbite.&lt;/p&gt;

&lt;p&gt;Use the &lt;code&gt;datatable.selectrow&lt;/code&gt; event to write your own code and get the data from the selected table row.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/docs/plugins/datatables/#selecting-rows" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffwdma3qhjljf9nkb3gjn.png" alt="Tailwind CSS Table Row Selection" width="800" height="860"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/plugins/datatables/#selecting-rows" rel="noopener noreferrer"&gt;Get the HTML and JS code from here&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Export files
&lt;/h2&gt;

&lt;p&gt;If you want to enable the export of the table data, you can use the &lt;code&gt;simpleDatatables.exportCSV&lt;/code&gt; function to export the data as a CSV file. The option is also available for TXT, JSON, and SQL formats.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/docs/plugins/datatables/#export-files" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdmqy0moohe3gbyah9hh8.png" alt="Tailwind CSS Table Export Files" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/plugins/datatables/#export-files" rel="noopener noreferrer"&gt;Get the HTML and JS code from here&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  JavaScript behaviour
&lt;/h2&gt;

&lt;p&gt;Learn more about how you can customize the DataTables plugin such as changing the default options, customizing the table appearance, dynamically loading data, and more by checking the examples below.&lt;/p&gt;

&lt;p&gt;After installing the DataTables plugin either via NPM or CDN you can initialize by calling the &lt;code&gt;DataTable&lt;/code&gt; constructor and passing the table selector as the first argument.&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="c1"&gt;// if you installed via CDN&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dataTable&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;simpleDatatables&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;DataTable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#default-table&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// if you installed via NPM&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;DataTable&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;simple-datatables&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;dataTable&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;DataTable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#default-table&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can pass an object of options as the second argument to customize the table appearance and behavior.&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;const&lt;/span&gt; &lt;span class="nx"&gt;dataTable&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;simpleDatatables&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;DataTable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#default-table&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After initializing the DataTable, you can access the instance methods and properties.&lt;/p&gt;

&lt;h2&gt;
  
  
  Options
&lt;/h2&gt;

&lt;p&gt;Check out some of the more commonly used options that you can pass to the DataTable instance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Injecting data
&lt;/h3&gt;

&lt;p&gt;Use the &lt;code&gt;data&lt;/code&gt; option to pass data from an array of arrays to the table using JavaScript.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const customData = {
    "headings": [
        "Name",
        "Company",
        "Date",
    ],
    "data": [
        [
            "Flowbite",
            "Bergside",
            "05/23/2023",
        ],
        [
            "Next.js",
            "Vercel",
            "03/12/2024",
    ],
};

const dataTable = new DataTable("#default-table", { data: customData });
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is a useful feature where instead of a hard coded array you can pass data from an API or a JSON file.&lt;/p&gt;

&lt;h3&gt;
  
  
  Appearance
&lt;/h3&gt;

&lt;p&gt;Use the following options to customize the appearance of the table such as adding a caption, custom classes, footer, header, updating the HTML rendering template, and enabling vertical scrolling, and more.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const dataTable = new DataTable("#default-table", {
    caption: "Flowbite is an open-source library",
    classes: {
        // add custom HTML classes, full list: https://fiduswriter.github.io/simple-datatables/documentation/classes
        // we recommend keeping the default ones in addition to whatever you want to add because Flowbite hooks to the default classes for styles
    },
    footer: true, // enable or disable the footer
    header: true, // enable or disable the header
    labels: {
        // add custom text for the labels, full list: https://fiduswriter.github.io/simple-datatables/documentation/labels
    },
    template: (options, dom) =&amp;gt; {
        // add custom HTML template for the table, full list: https://fiduswriter.github.io/simple-datatables/documentation/template
    },
    scrollY: "300px", // enable vertical scrolling
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These options are useful if you want to add your own HTML elements inside the dynamically generated table header or footer as we used in the export a file example above.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pagination
&lt;/h3&gt;

&lt;p&gt;Use these options to enable pagination, set the number of rows per page, and customize the appearance.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const dataTable = new DataTable("#default-table", {
    paging: true, // enable or disable pagination
    perPage: 10, // set the number of rows per page
    perPageSelect: [5, 10, 20, 50], // set the number of rows per page options
    firstLast: true, // enable or disable the first and last buttons
    nextPrev: true, // enable or disable the next and previous buttons
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pagination is a useful feature when you have a large dataset and you want to split it into multiple pages.&lt;/p&gt;

&lt;h3&gt;
  
  
  Searching
&lt;/h3&gt;

&lt;p&gt;These options can be used to enable searching, set the search placeholder, and customize the appearance.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const dataTable = new DataTable("#default-table", {
    searchable: true, // enable or disable searching
    sensitivity: "base" // set the search sensitivity (base, accent, case, variant)
    searchQuerySeparator: " ", // set the search query separator
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The searching feature is great when you have a large dataset and you want to search for a specific row.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sorting
&lt;/h3&gt;

&lt;p&gt;Use these options to enable sorting, set the default sort column, and customize the sort appearance.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const dataTable = new DataTable("#default-table", {
    sortable: true, // enable or disable sorting
    locale: "en-US", // set the locale for sorting
    numeric: true, // enable or disable numeric sorting
    caseFirst: "false", // set the case first for sorting (upper, lower)
    ignorePunctuation: true // enable or disable punctuation sorting
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The sorting feature is useful when you want to sort the table rows based on a specific column.&lt;/p&gt;

&lt;h2&gt;
  
  
  Methods
&lt;/h2&gt;

&lt;p&gt;Check out some of the common methods that you can use to interact with the DataTable instance.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// programatically search the table where the "term" variable is the query string
dataTable.search(term, columns);

// add a new table row data to the table (considering you have four columns)
dataTable.insert({
    "Heading 1": "Cell 1",
    "Heading 2": "Cell 2",
    "Heading 3": "Cell 3",
    "Heading 4": "Cell 4",
});

// updates the DOM of the table
dataTable.update();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;p&gt;These components could not have been built without the usage of the following awesome and open-source resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/fiduswriter/simple-datatables" rel="noopener noreferrer"&gt;simple-datatables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tailwindcss.com/" rel="noopener noreferrer"&gt;Tailwind CSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/getting-started/introduction/" rel="noopener noreferrer"&gt;Flowbite Library&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/icons/" rel="noopener noreferrer"&gt;Flowbite Icons&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>tailwindcss</category>
      <category>flowbite</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Product card components built with Tailwind CSS and Flowbite</title>
      <dc:creator>Zoltán Szőgyényi</dc:creator>
      <pubDate>Mon, 24 Jun 2024 11:20:33 +0000</pubDate>
      <link>https://forem.com/themesberg/product-card-components-built-with-tailwind-css-and-flowbite-383k</link>
      <guid>https://forem.com/themesberg/product-card-components-built-with-tailwind-css-and-flowbite-383k</guid>
      <description>&lt;p&gt;One of the most important sections and components of an e-commerce website is &lt;a href="https://flowbite.com/blocks/e-commerce/product-cards/" rel="noopener noreferrer"&gt;listing the products&lt;/a&gt; on the homepage or category page of a certain type of product. Within these cards you show images, names of the product, the price, reviews, buttons to add to the cart and more.&lt;/p&gt;

&lt;p&gt;Web development has grown a lot in the past years and e-commerce is an area that is crucial to know and understand as a developer since more and more people resort to purchasing online compared to traditional methods in shopping malls and stores.&lt;/p&gt;

&lt;p&gt;These components are all built only with the classes from Tailwind CSS and they leverage the design system and JS interactivity from the Flowbite framework and UI library.&lt;/p&gt;

&lt;p&gt;Without further ado, let's check these components!&lt;/p&gt;

&lt;h2&gt;
  
  
  Default list of product cards
&lt;/h2&gt;

&lt;p&gt;Use this example to show a list of product cards that feature a title, image, promotion badge, add to favorites and cart buttons, price, and list of reviews.&lt;/p&gt;

&lt;p&gt;This example is free and open-source.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/product-cards/#default-list-of-product-cards" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fll91brwc7kmcguwd24c5.png" alt="Tailwind CSS Product Cards" width="800" height="616"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/product-cards/#default-list-of-product-cards" rel="noopener noreferrer"&gt;Source code and example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Product cards with carousel
&lt;/h2&gt;

&lt;p&gt;Use this example to show two product cards inside of a carousel component that features product images, description, reviews, pricing, color and quantity selection and add to cart buttons.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/product-cards/#product-cards-with-carousel" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6qi9zm2ggwpnxuk19cz0.png" alt="Tailwind CSS Products with carousel" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/product-cards/#product-cards-with-carousel" rel="noopener noreferrer"&gt;Source code and example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Product cards with sidebar filters
&lt;/h2&gt;

&lt;p&gt;This example can be used to show a sidebar with filters next to the product cards that feature size and color selection, images, prices, add to cart buttons, and more.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/product-cards/#product-cards-with-sidebar-filters" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs5w42xsptiz1lib88yw9.png" alt="Tailwind CSS E-commerce Sidebar Filters" width="800" height="608"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/product-cards/#product-cards-with-sidebar-filters" rel="noopener noreferrer"&gt;Source code and example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Product cards with grid view
&lt;/h2&gt;

&lt;p&gt;Use this example to show product cards within a grid layout and use filter options inside of a drawer component where you can search based on price, rating, color, size, and more.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/product-cards/#product-cards-with-grid-view" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3a5cy7ln9lr8l3uehfzq.png" alt="Tailwind CSS Products with grid view" width="800" height="631"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/product-cards/#product-cards-with-grid-view" rel="noopener noreferrer"&gt;Source code and example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Advanced product cards with filters
&lt;/h2&gt;

&lt;p&gt;Use this example to show an advanced settings bar with filter and sorting options and then a list of product cards with images inside a carousel, product title, pricing, CTA buttons, and more.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/product-cards/#advanced-product-cards-with-filters" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flacedgzh4z0foa9gyc59.png" alt="Tailwind CSS Advanced Product List Cards" width="800" height="652"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/blocks/e-commerce/product-cards/#advanced-product-cards-with-filters" rel="noopener noreferrer"&gt;Source code and example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;p&gt;These components could not have been built without the usage of the following awesome open-source frameworks, UI libraries, and resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tailwindcss.com/" rel="noopener noreferrer"&gt;Tailwind CSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/docs/getting-started/introduction/" rel="noopener noreferrer"&gt;Flowbite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flowbite.com/icons/" rel="noopener noreferrer"&gt;Flowbite Icons&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>flowbite</category>
      <category>tailwindcss</category>
      <category>webdev</category>
      <category>html</category>
    </item>
  </channel>
</rss>
