<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Guides on AngularCSS</title><link>https://angular-wave.github.io/angular.css/docs/guides/</link><description>Recent content in Guides on AngularCSS</description><generator>Hugo</generator><language>en</language><atom:link href="https://angular-wave.github.io/angular.css/docs/guides/index.xml" rel="self" type="application/rss+xml"/><item><title>AngularTS Ownership</title><link>https://angular-wave.github.io/angular.css/docs/guides/angular-ts-ownership/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.css/docs/guides/angular-ts-ownership/</guid><description>&lt;p>AngularCSS extends AngularTS; it does not replace framework behavior. This rule
keeps components predictable and prevents two state systems from disagreeing.&lt;/p>
&lt;h2 id="angularts-owns-application-state">AngularTS owns application state&lt;a class="td-heading-self-link" href="#angularts-owns-application-state" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Use AngularTS for values, commands, collections, and conditional rendering:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">label&lt;/span> &lt;span style="color:#c4a000">for&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;volume&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span>Volume&lt;span style="color:#000;font-weight:bold">&amp;lt;/&lt;/span>&lt;span style="color:#204a87;font-weight:bold">label&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">input&lt;/span> &lt;span style="color:#c4a000">id&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;volume&amp;#34;&lt;/span> &lt;span style="color:#c4a000">type&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;range&amp;#34;&lt;/span> &lt;span style="color:#c4a000">min&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;0&amp;#34;&lt;/span> &lt;span style="color:#c4a000">max&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;100&amp;#34;&lt;/span> &lt;span style="color:#c4a000">ng-model&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;volume&amp;#34;&lt;/span> &lt;span style="color:#000;font-weight:bold">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">output&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span>{{ volume }}&lt;span style="color:#000;font-weight:bold">&amp;lt;/&lt;/span>&lt;span style="color:#204a87;font-weight:bold">output&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>ng-model&lt;/code> owns the value while the browser owns the range control. No
AngularCSS directive is needed. Use &lt;code>ng-range-slider&lt;/code> on a parent only when two
or more native range inputs must share one visual track.&lt;/p></description></item><item><title>Composition</title><link>https://angular-wave.github.io/angular.css/docs/guides/composition/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.css/docs/guides/composition/</guid><description>&lt;p>AngularCSS components expose HTML parts rather than private templates. Compose
them when a workflow needs behavior from more than one primitive.&lt;/p>
&lt;h2 id="form-field">Form field&lt;a class="td-heading-self-link" href="#form-field" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Combine field, label, input, description, and AngularTS validation:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">div&lt;/span> &lt;span style="color:#c4a000">class&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;field&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">label&lt;/span> &lt;span style="color:#c4a000">for&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;email&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span>Email&lt;span style="color:#000;font-weight:bold">&amp;lt;/&lt;/span>&lt;span style="color:#204a87;font-weight:bold">label&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">input&lt;/span> &lt;span style="color:#c4a000">id&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;email&amp;#34;&lt;/span> &lt;span style="color:#c4a000">name&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;email&amp;#34;&lt;/span> &lt;span style="color:#c4a000">ng-model&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;profile.email&amp;#34;&lt;/span> &lt;span style="color:#c4a000">required&lt;/span> &lt;span style="color:#000;font-weight:bold">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">p&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span>Used for account notices.&lt;span style="color:#000;font-weight:bold">&amp;lt;/&lt;/span>&lt;span style="color:#204a87;font-weight:bold">p&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">p&lt;/span> &lt;span style="color:#c4a000">ng-if&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;profileForm.email.invalid&amp;#34;&lt;/span> &lt;span style="color:#c4a000">class&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;field-error&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Enter a valid email.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">&amp;lt;/&lt;/span>&lt;span style="color:#204a87;font-weight:bold">p&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">&amp;lt;/&lt;/span>&lt;span style="color:#204a87;font-weight:bold">div&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The native input and AngularTS form controller own the value and validity. The
field styles the authored label, helper, and error text around the control.&lt;/p></description></item><item><title>Accessibility</title><link>https://angular-wave.github.io/angular.css/docs/guides/accessibility/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.css/docs/guides/accessibility/</guid><description>&lt;p>AngularCSS supplies component mechanics, but accessibility depends on the final
authored HTML. Every component page documents what the directive generates and
what the application must provide.&lt;/p>
&lt;h2 id="start-with-semantic-html">Start with semantic HTML&lt;a class="td-heading-self-link" href="#start-with-semantic-html" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Use native elements before adding roles. A &lt;code>button&lt;/code> already supports keyboard
activation, a &lt;code>label&lt;/code> connects to a form control, and a &lt;code>nav&lt;/code> exposes a
navigation landmark.&lt;/p>
&lt;p>Use &lt;code>role&lt;/code> only for composite patterns without a suitable native element, such
as tabs, menus, and custom listboxes.&lt;/p></description></item><item><title>Testing</title><link>https://angular-wave.github.io/angular.css/docs/guides/testing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.css/docs/guides/testing/</guid><description>&lt;p>AngularCSS tests the HTML contract in Chromium with Playwright and validates
source, public entrypoints, documentation inventory, AngularTS overlap, and
forbidden ports with static checks.&lt;/p>
&lt;h2 id="static-checks">Static checks&lt;a class="td-heading-self-link" href="#static-checks" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>npm run check
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This command verifies TypeScript, canonical component and element entrypoints,
generated declarations, documentation completeness, component test inventory,
AngularTS directive ownership, CSS isolation, and test ports.&lt;/p>
&lt;h2 id="component-tests">Component tests&lt;a class="td-heading-self-link" href="#component-tests" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">PLAYWRIGHT_PORT&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">4101&lt;/span> npm run test:components -- --reporter&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>dot
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Use an available port other than &lt;code>3000&lt;/code> or &lt;code>4000&lt;/code>. The default is &lt;code>4100&lt;/code>; set
&lt;code>PLAYWRIGHT_PORT&lt;/code> when another local service already owns it.&lt;/p></description></item><item><title>Support</title><link>https://angular-wave.github.io/angular.css/docs/guides/support/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.css/docs/guides/support/</guid><description>&lt;p>Use
&lt;a href="https://github.com/angular-wave/angular.css/discussions">GitHub Discussions&lt;/a>
for integration, HTML composition, and customization questions.&lt;/p>
&lt;p>Use the &lt;a href="https://github.com/angular-wave/angular.css/issues">issue tracker&lt;/a> for
reproducible AngularCSS defects and focused feature proposals. Include:&lt;/p>
&lt;ul>
&lt;li>A reduced semantic HTML example.&lt;/li>
&lt;li>AngularCSS and AngularTS versions.&lt;/li>
&lt;li>Browser and operating system.&lt;/li>
&lt;li>Expected and observed behavior.&lt;/li>
&lt;li>Keyboard or assistive-technology details when relevant.&lt;/li>
&lt;/ul>
&lt;p>Report vulnerabilities through the repository&amp;rsquo;s private GitHub security advisory
flow. Do not place security-sensitive details in a public issue.&lt;/p>
&lt;p>The &lt;a href="https://angular-wave.github.io/angular.css/docs/get-started/compatibility/">compatibility and upgrades&lt;/a> page describes supported environments and
the latest-version verification command.&lt;/p></description></item><item><title>Contributing</title><link>https://angular-wave.github.io/angular.css/docs/guides/contributing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.css/docs/guides/contributing/</guid><description>&lt;p>Read the repository
&lt;a href="https://github.com/angular-wave/angular.css/blob/master/CONTRIBUTING.md">contribution guide&lt;/a>
before opening a pull request. It defines the HTML, AngularTS, CSS, and
AngularCSS ownership order, local setup, generated documentation workflow, and
public API review process.&lt;/p>
&lt;p>For shared presentation changes, update the DTCG 2025.10 source rather than
editing generated token CSS. For catalog changes, keep root classes minimal and
prefer semantic descendants and native attributes. Browser tests must exercise
the built standalone example.&lt;/p>
&lt;p>The required local sequence is:&lt;/p></description></item></channel></rss>