<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: JVM</title>
    <description>The latest articles on DEV Community by JVM (@ivmit).</description>
    <link>https://dev.to/ivmit</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4130010%2F173f0b41-95c5-4fc9-b259-339dbc910743.png</url>
      <title>DEV Community: JVM</title>
      <link>https://dev.to/ivmit</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ivmit"/>
    <language>en</language>
    <item>
      <title># I Built an AI-Driven Component Library with Web Components</title>
      <dc:creator>JVM</dc:creator>
      <pubDate>Fri, 25 Sep 2026 12:13:10 +0000</pubDate>
      <link>https://dev.to/ivmit/-i-built-an-ai-driven-component-library-with-web-components-1pm7</link>
      <guid>https://dev.to/ivmit/-i-built-an-ai-driven-component-library-with-web-components-1pm7</guid>
      <description>&lt;p&gt;An AI coding assistant can produce a convincing interface while getting a component's API wrong. A property might belong to another library. An event handler might use the wrong event name. A screen might look right while its form never submits.&lt;/p&gt;

&lt;p&gt;For a component library, that raises a practical question: how do you give an assistant enough context to use the components correctly?&lt;/p&gt;

&lt;p&gt;My approach with &lt;a href="https://awc-ui.dev/" rel="noopener noreferrer"&gt;AWC UI&lt;/a&gt; is to ship that context alongside the code: component manuals, machine-readable API metadata, project instructions, and an optional MCP server.&lt;/p&gt;

&lt;p&gt;That is what I mean by “AI-driven” here: supporting the workflow of building interfaces with an AI coding assistant. The components themselves run as ordinary Web Components in your application.&lt;/p&gt;

&lt;p&gt;AWC UI is an MIT-licensed Material Design 3 library built with Stencil. It includes 56+ components, with integrations for React, Angular, Vue, Svelte, and plain HTML. The catalog covers forms, navigation, dialogs, tables, and charts, with shared theming and density controls.&lt;/p&gt;

&lt;p&gt;The part I want to explain in this post is how an assistant can discover and use those components.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start with the documentation for the installed version.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Core includes a library-level guide, &lt;code&gt;main-llm.md&lt;/code&gt;, and individual component manuals inside the npm package. This gives an assistant a reference that travels with the dependency installed in your project.&lt;/p&gt;

&lt;p&gt;Those manuals cover more than property names. They include component selection, events, slots, styling hooks, keyboard behavior, and common integration mistakes. They also explain when another component would be a better fit.&lt;/p&gt;

&lt;p&gt;For example, this is valid AWC UI button markup:&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;md-button&lt;/span&gt; &lt;span class="na"&gt;variant=&lt;/span&gt;&lt;span class="s"&gt;"filled"&lt;/span&gt; &lt;span class="na"&gt;size=&lt;/span&gt;&lt;span class="s"&gt;"sm"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"submit"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  Save changes
&lt;span class="nt"&gt;&amp;lt;/md-button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;a href="https://github.com/awc-ui/core/blob/main/packages/core/src/components/md-button/readme.md" rel="noopener noreferrer"&gt;button manual&lt;/a&gt; explains several details that matter when generating the surrounding code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;sm&lt;/code&gt; is the default size.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;loading&lt;/code&gt; makes the button inert as well as showing its loading state.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;soft-disabled&lt;/code&gt; keeps an unavailable action in the keyboard tab order.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;type="submit"&lt;/code&gt; participates in the surrounding form's submission and validation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These details affect behavior, even when two implementations look similar in a screenshot. They are useful things for an assistant to read before editing a form.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connect your assistant to those manuals.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With a supported Node version—22.13+ on the 22.x line, or 24+—run this from your app's directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @awc-ui/core
npx &lt;span class="nt"&gt;--no-install&lt;/span&gt; awc-ui ai-setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The setup command adds documentation references to the project instruction files used by Codex, Claude Code, Cursor, and GitHub Copilot. Those references point into the installed Core package.&lt;/p&gt;

&lt;p&gt;You can preview the changes first:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx &lt;span class="nt"&gt;--no-install&lt;/span&gt; awc-ui ai-setup &lt;span class="nt"&gt;--dry-run&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then give your assistant a task with a clear outcome. For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Add a customer settings form to this app using AWC UI. Keep the existing framework, routing, and theme. Include a required email field and a save action. Read the relevant component manuals before implementing, then check keyboard navigation and form validation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This setup supplies library context. Framework configuration and implementation still follow the needs of your application. The &lt;a href="https://awc-ui.dev/guides/building-with-ai/" rel="noopener noreferrer"&gt;Building with AI guide&lt;/a&gt; covers setup and optional build and review skills.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP makes the same documentation searchable through tools.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For assistants that support the Model Context Protocol, AWC UI also provides the optional &lt;a href="https://github.com/awc-ui/core/tree/main/packages/mcp" rel="noopener noreferrer"&gt;&lt;code&gt;@awc-ui/mcp&lt;/code&gt; server&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It exposes four tools:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What the assistant can retrieve&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;search_components&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Components matching a name or use case&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_component&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;A component's manual, structured API, or both&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;list_guides&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Available framework, theming, and other guides&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_guide&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The content of a selected guide&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For clients using an &lt;code&gt;mcpServers&lt;/code&gt; configuration, the entry looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"awc-ui"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@awc-ui/mcp"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The server bundles its documentation and serves it locally after installation. Its tools provide read-only documentation access; your coding assistant uses its own tools to edit and run your application.&lt;/p&gt;

&lt;p&gt;Version matching matters here. MCP responses report a &lt;code&gt;coreVersion&lt;/code&gt;, which should be checked against the Core version installed in your app. If they differ, the manuals in your installed Core package provide the reference for that application.&lt;/p&gt;

&lt;p&gt;Alongside the prose documentation, Core publishes a &lt;code&gt;custom-elements.json&lt;/code&gt; manifest describing elements, properties, events, slots, CSS parts, and CSS custom properties. That structured data is useful to IDEs and documentation tools as well as the MCP integration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The output still needs to be checked.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This setup gives an assistant concrete information to consult. It does not guarantee that every generated interface is correct, and I am not presenting a benchmark claiming a particular improvement in accuracy.&lt;/p&gt;

&lt;p&gt;For a generated form, I would still check empty and invalid values, keyboard operation, submission behavior, and the result on a narrow screen. For a server-rendered application, I would also check the framework integration and hydration behavior. Component documentation is one input to that work.&lt;/p&gt;

&lt;p&gt;If you want to try the approach, pick one small feature in an existing project, connect the documentation, and ask your assistant to implement it. That makes it easier to inspect the result and identify any missing guidance.&lt;/p&gt;

&lt;p&gt;You can explore the &lt;a href="https://awc-ui.dev/components/" rel="noopener noreferrer"&gt;live components&lt;/a&gt;, follow the &lt;a href="https://awc-ui.dev/guides/building-with-ai/" rel="noopener noreferrer"&gt;AI setup guide&lt;/a&gt;, or browse the &lt;a href="https://github.com/awc-ui/core" rel="noopener noreferrer"&gt;source on GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you use AI tools for frontend development, where do they most often get component libraries wrong: API names, styling, forms, or accessibility? I would like to use those examples to improve AWC UI's documentation and integrations.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
    <item>
      <title>Introducing AWC UI: Material Design 3 for React, Angular, Vue and Svelte</title>
      <dc:creator>JVM</dc:creator>
      <pubDate>Thu, 17 Sep 2026 13:54:55 +0000</pubDate>
      <link>https://dev.to/ivmit/introducing-awc-ui-material-design-3-for-react-angular-vue-and-svelte-34o4</link>
      <guid>https://dev.to/ivmit/introducing-awc-ui-material-design-3-for-react-angular-vue-and-svelte-34o4</guid>
      <description>&lt;p&gt;I started building AWC UI because I couldn't find a Material Design 3 library that covered my needs for enterprise applications while remaining framework-agnostic.&lt;/p&gt;

&lt;p&gt;I wanted one consistent set of components I could use across React, Angular, Vue and Svelte, with the practical features that larger applications need: accessible forms, theming, RTL support and server-side rendering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWC UI is the result: an open-source library of 56 Material Design 3 components built on standard Web Components.&lt;/strong&gt; The core is free under the MIT license.&lt;/p&gt;

&lt;p&gt;You can &lt;a href="https://awc-ui.dev/components/" rel="noopener noreferrer"&gt;explore the components&lt;/a&gt; or &lt;a href="https://awc-ui.dev/showcase/" rel="noopener noreferrer"&gt;try the application showcases&lt;/a&gt; directly in your browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  One component system across different frameworks
&lt;/h2&gt;

&lt;p&gt;When different teams use different frameworks, keeping a consistent interface can mean maintaining several implementations of the same design system.&lt;/p&gt;

&lt;p&gt;AWC UI gives those applications a shared component foundation. It works with &lt;strong&gt;React, Angular, Vue, Svelte and plain HTML&lt;/strong&gt;, with framework integrations and TypeScript support. Your teams can keep their application stack while sharing the same visual language and component behaviour.&lt;/p&gt;

&lt;h2&gt;
  
  
  More of the pieces an application needs
&lt;/h2&gt;

&lt;p&gt;A business application needs forms, navigation, dialogs, tables and feedback states, as well as buttons.&lt;/p&gt;

&lt;p&gt;AWC UI brings these together with date and time pickers, autocomplete, multi-select, an organization chart and essential charts. They share Material Design 3 styling and behaviour, which reduces the work of combining unrelated UI packages and making them feel consistent.&lt;/p&gt;

&lt;p&gt;Form controls also integrate with native HTML forms, including submission, validation and reset. That means less custom plumbing around everyday form interactions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Accessibility and internationalization from the start
&lt;/h2&gt;

&lt;p&gt;Keyboard navigation, focus management, ARIA semantics and screen-reader support are part of the component work, with automated accessibility checks against WCAG 2.1 AA criteria.&lt;/p&gt;

&lt;p&gt;The goal is to give developers a stronger starting point for accessible interfaces. The finished application's accessibility still depends on how its screens are designed and assembled.&lt;/p&gt;

&lt;p&gt;Built-in &lt;strong&gt;RTL support&lt;/strong&gt; and localizable component text help teams build for different languages without maintaining a separate set of controls for right-to-left layouts.&lt;/p&gt;

&lt;h2&gt;
  
  
  A shared design system that can match your product
&lt;/h2&gt;

&lt;p&gt;Material Design 3 provides the foundation, and design tokens let you adapt it to your brand. AWC UI includes light and dark themes, a theme generator based on seed colours, and component-level styling options.&lt;/p&gt;

&lt;p&gt;A density system lets you adjust spacing for information-heavy screens. A dashboard and a settings page can use the same components at a density that fits each workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical features for development and maintenance
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero third-party runtime dependencies in the core package:&lt;/strong&gt; a smaller dependency surface to maintain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server-side rendering:&lt;/strong&gt; documented integrations for Next.js, Nuxt, SvelteKit and Angular SSR, using Declarative Shadow DOM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-ready documentation:&lt;/strong&gt; component APIs and usage guidance ship with the package, so coding assistants can use documentation that matches the installed version.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open source:&lt;/strong&gt; inspect the implementation, report issues and contribute improvements on GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are the kinds of needs I had in mind when building AWC UI for enterprise applications: consistent UI across stacks, configurable themes, internationalization and predictable form behaviour.&lt;/p&gt;

&lt;h2&gt;
  
  
  See what you can build
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://awc-ui.dev/components/" rel="noopener noreferrer"&gt;Components page&lt;/a&gt; has interactive demos, API documentation and examples for each supported framework.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://awc-ui.dev/showcase/" rel="noopener noreferrer"&gt;Showcases&lt;/a&gt; bring those components together into demonstration applications for banking, healthcare, booking and other workflows. They're a way to explore complete screens and interactions before trying the library in your own project.&lt;/p&gt;

&lt;p&gt;You can also inspect component variants in &lt;a href="https://awc-ui.dev/storybook/?path=/story/actions-button--all-variants" rel="noopener noreferrer"&gt;Storybook&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start with the &lt;a href="https://awc-ui.dev/components/" rel="noopener noreferrer"&gt;components&lt;/a&gt; and the &lt;a href="https://awc-ui.dev/showcase/" rel="noopener noreferrer"&gt;showcases&lt;/a&gt;.&lt;/strong&gt; If AWC UI fits your project, the documentation will take you through installation and integration.&lt;/p&gt;

&lt;p&gt;The source is on &lt;a href="https://github.com/awc-ui/core" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, and the core package is on &lt;a href="https://www.npmjs.com/package/@awc-ui/core" rel="noopener noreferrer"&gt;npm&lt;/a&gt;. If you'd like to follow the project, a GitHub star is appreciated.&lt;/p&gt;

&lt;p&gt;What would you need from a component library before adopting it in your team?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>webcomponents</category>
      <category>showdev</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
