<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:base="https://designsystem.ny.gov" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>New York State&#39;s Design System Reference Website</title>
    <link>https://designsystem.ny.gov</link>
    <atom:link href="https://designsystem.ny.gov/feed.xml" rel="self" type="application/rss+xml" />
    <description>Guidelines, components, and tools for building digital services in New York State.</description>
    <language>en</language>
    <item>
      <title>NYS Design System Release 1.19.3</title>
      <link>https://designsystem.ny.gov/about/updates/1.19.3-release/</link>
      <description><![CDATA[<nys-alert heading="[1.19.0-1.19.2] Breaking Changes fixed in 1.19.3" type="warning">
<p>We documented a workaround for a bug in nys-icon in <a href="https://designsystem.ny.gov/about/updates/1.19.2-release/#breaking-changes">1.19.2 breaking changes</a>.</p>
<p>Those changes are <strong>no longer required</strong> to get the default library to work.</p>
</nys-alert>
<h2>Responsive margin and padding classes now available</h2>
<p>Check out the updated documentation for <a href="https://designsystem.ny.gov/foundations/utilities/responsive/">Responsive utility classes</a> featuring Margin and Padding variants!</p>
<div class="page-meta author-card">
  <div class="page-author">
    <nys-avatar image="/assets/img/authors/robert-chen.jpg"></nys-avatar>
    <a href="https://github.com/novacat35">Robert Chen</a> writes all of his notes in the margins
  </div>
</div>
<h2>Style overrides added for <code>&lt;nys-accordionitem&gt;</code> header text color</h2>
<p>You can now override the accordion item header text color by modifying the <code>--nys-accordion-color--header</code> variable in your CSS.</p>
<div class="page-meta author-card">
  <div class="page-author">
    <nys-avatar image="/assets/img/authors/robert-chen.jpg"></nys-avatar>
    <a href="https://github.com/novacat35">Robert Chen</a> imagined a rainbow accordion
  </div>
</div>
<h2>MCP server updates</h2>
<p>We made quite a few changes to the MCP server this release:</p>
<ul>
<li>Revamp all component code examples in source JSDocs</li>
<li>Clarify when to enable <code>nysLogo</code> in <code>&lt;nys-globalheader&gt;</code></li>
<li>Document <code>user-actions</code> slot in <code>&lt;nys-globalheader&gt;</code></li>
<li>Document events fired by <code>&lt;nys-unavheader&gt;</code></li>
</ul>
<div class="page-meta author-card">
  <div class="page-author">
    <nys-avatar image="/assets/img/authors/emily-gorelik.jpg"></nys-avatar>
    <a href="https://github.com/emilygorelik">Emily Gorelik</a> enhanced the JSDocs
  </div>
</div>
<h2><code>&lt;nys-button&gt;</code> acts more like native <code>&lt;button&gt;</code> now</h2>
<p>You can now label an <code>&lt;nys-button&gt;</code> like a native button:</p>
<p><code>&lt;nys-button&gt;This didn't work before 1.19.3!&lt;/nys-button&gt;</code></p>
<div class="page-meta author-card">
  <div class="page-author">
    <nys-avatar image="/assets/img/authors/emily-gorelik.jpg"></nys-avatar>
    <a href="https://github.com/emilygorelik">Emily Gorelik</a> preferred the native implementation
  </div>
</div>
<h2>Default <code>&lt;nys-icon&gt;</code> library redux</h2>
<p>We made a significant improvement to <code>&lt;nys-icon&gt;</code> in v1.19.0. We added the ability to load in custom icons from any icon library. Unfortunately, this led to a break in the default icon library. We created a workaround for the issue, but we felt it was still lacking a ZERO-CONFIG option.</p>
<p>v1.19.3 &quot;reverts&quot; the change to the default library, while continuing to support defining external libraries. <a href="https://designsystem.ny.gov/components/icon/#managing-your-icon-library">Learn how to implement a custom library in 1.19.3</a>.</p>
<div class="page-meta author-card">
  <div class="page-author">
    <nys-avatar image="/assets/img/authors/eric-steinborn.jpg"></nys-avatar>
    <a href="https://github.com/esteinborn">Eric Steinborn</a> thanks Jesse for this idea
  </div>
</div>
<h2>Expose files/value accessors in <code>&lt;nys-fileinput&gt;</code></h2>
<p>We were missing the native functionality of a file input component. The native functionality lists the files as a value. This fix aligns <code>&lt;nys-fileinput&gt;</code> with native requirements.</p>
<div class="page-meta author-card">
  <div class="page-author">
    <nys-avatar image="/assets/img/authors/jesse-gardner.jpg"></nys-avatar>
    <a href="https://github.com/plasticmind">Jesse Gardner</a> filed this under "done"
  </div>
</div>
<h2>Continuing our automation journey</h2>
<p>One of our guiding principles for the NYS Design System is to automate everything that is easily repeatable. In an effort to automate our documentation generation, Emily wrote a script that scans the source code Typescript file for @JSDoc-compatible comments and extracts the documentation automatically.</p>
<p>This change removed over 35 MDX files which was functionally duplicate code from our stories files. So we now generate our Storybook stories directly from the component source code, reducing the amount of duplication across the entire repository. Next up? Automating that documentation directly to this website.</p>
<div class="page-meta author-card">
  <div class="page-author">
    <nys-avatar image="/assets/img/authors/emily-gorelik.jpg"></nys-avatar>
    <a href="https://github.com/emilygorelik">Emily Gorelik</a> is automatically automated
  </div>
</div>
<h2>Bug fixes</h2>
<ul>
<li>Translate icon fixed in unavheader</li>
<li>Accordion height tweaks</li>
<li>Modal width and height cap removed</li>
<li>Fix overlapping text in <code>&lt;nys-alert&gt;</code>, <code>&lt;nys-badge&gt;</code>, and <code>&lt;nys-icon&gt;</code></li>
<li>Checkbox label weight parity</li>
<li>Fix checkbox for Drupal</li>
<li>Lit as peer dep of packages</li>
</ul>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>Users running NYSDS 1.19.0 through 1.19.2 should immediately upgrade to 1.19.3 to fix the default icon library bug introduced in 1.19.0.</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.19.3">See the full developer release notes for v.1.19.3 →</a></p>
]]></description>
      <content><![CDATA[<nys-alert heading="[1.19.0-1.19.2] Breaking Changes fixed in 1.19.3" type="warning">
<p>We documented a workaround for a bug in nys-icon in <a href="https://designsystem.ny.gov/about/updates/1.19.2-release/#breaking-changes">1.19.2 breaking changes</a>.</p>
<p>Those changes are <strong>no longer required</strong> to get the default library to work.</p>
</nys-alert>
<h2>Responsive margin and padding classes now available</h2>
<p>Check out the updated documentation for <a href="https://designsystem.ny.gov/foundations/utilities/responsive/">Responsive utility classes</a> featuring Margin and Padding variants!</p>
<div class="page-meta author-card">
  <div class="page-author">
    <nys-avatar image="/assets/img/authors/robert-chen.jpg"></nys-avatar>
    <a href="https://github.com/novacat35">Robert Chen</a> writes all of his notes in the margins
  </div>
</div>
<h2>Style overrides added for <code>&lt;nys-accordionitem&gt;</code> header text color</h2>
<p>You can now override the accordion item header text color by modifying the <code>--nys-accordion-color--header</code> variable in your CSS.</p>
<div class="page-meta author-card">
  <div class="page-author">
    <nys-avatar image="/assets/img/authors/robert-chen.jpg"></nys-avatar>
    <a href="https://github.com/novacat35">Robert Chen</a> imagined a rainbow accordion
  </div>
</div>
<h2>MCP server updates</h2>
<p>We made quite a few changes to the MCP server this release:</p>
<ul>
<li>Revamp all component code examples in source JSDocs</li>
<li>Clarify when to enable <code>nysLogo</code> in <code>&lt;nys-globalheader&gt;</code></li>
<li>Document <code>user-actions</code> slot in <code>&lt;nys-globalheader&gt;</code></li>
<li>Document events fired by <code>&lt;nys-unavheader&gt;</code></li>
</ul>
<div class="page-meta author-card">
  <div class="page-author">
    <nys-avatar image="/assets/img/authors/emily-gorelik.jpg"></nys-avatar>
    <a href="https://github.com/emilygorelik">Emily Gorelik</a> enhanced the JSDocs
  </div>
</div>
<h2><code>&lt;nys-button&gt;</code> acts more like native <code>&lt;button&gt;</code> now</h2>
<p>You can now label an <code>&lt;nys-button&gt;</code> like a native button:</p>
<p><code>&lt;nys-button&gt;This didn't work before 1.19.3!&lt;/nys-button&gt;</code></p>
<div class="page-meta author-card">
  <div class="page-author">
    <nys-avatar image="/assets/img/authors/emily-gorelik.jpg"></nys-avatar>
    <a href="https://github.com/emilygorelik">Emily Gorelik</a> preferred the native implementation
  </div>
</div>
<h2>Default <code>&lt;nys-icon&gt;</code> library redux</h2>
<p>We made a significant improvement to <code>&lt;nys-icon&gt;</code> in v1.19.0. We added the ability to load in custom icons from any icon library. Unfortunately, this led to a break in the default icon library. We created a workaround for the issue, but we felt it was still lacking a ZERO-CONFIG option.</p>
<p>v1.19.3 &quot;reverts&quot; the change to the default library, while continuing to support defining external libraries. <a href="https://designsystem.ny.gov/components/icon/#managing-your-icon-library">Learn how to implement a custom library in 1.19.3</a>.</p>
<div class="page-meta author-card">
  <div class="page-author">
    <nys-avatar image="/assets/img/authors/eric-steinborn.jpg"></nys-avatar>
    <a href="https://github.com/esteinborn">Eric Steinborn</a> thanks Jesse for this idea
  </div>
</div>
<h2>Expose files/value accessors in <code>&lt;nys-fileinput&gt;</code></h2>
<p>We were missing the native functionality of a file input component. The native functionality lists the files as a value. This fix aligns <code>&lt;nys-fileinput&gt;</code> with native requirements.</p>
<div class="page-meta author-card">
  <div class="page-author">
    <nys-avatar image="/assets/img/authors/jesse-gardner.jpg"></nys-avatar>
    <a href="https://github.com/plasticmind">Jesse Gardner</a> filed this under "done"
  </div>
</div>
<h2>Continuing our automation journey</h2>
<p>One of our guiding principles for the NYS Design System is to automate everything that is easily repeatable. In an effort to automate our documentation generation, Emily wrote a script that scans the source code Typescript file for @JSDoc-compatible comments and extracts the documentation automatically.</p>
<p>This change removed over 35 MDX files which was functionally duplicate code from our stories files. So we now generate our Storybook stories directly from the component source code, reducing the amount of duplication across the entire repository. Next up? Automating that documentation directly to this website.</p>
<div class="page-meta author-card">
  <div class="page-author">
    <nys-avatar image="/assets/img/authors/emily-gorelik.jpg"></nys-avatar>
    <a href="https://github.com/emilygorelik">Emily Gorelik</a> is automatically automated
  </div>
</div>
<h2>Bug fixes</h2>
<ul>
<li>Translate icon fixed in unavheader</li>
<li>Accordion height tweaks</li>
<li>Modal width and height cap removed</li>
<li>Fix overlapping text in <code>&lt;nys-alert&gt;</code>, <code>&lt;nys-badge&gt;</code>, and <code>&lt;nys-icon&gt;</code></li>
<li>Checkbox label weight parity</li>
<li>Fix checkbox for Drupal</li>
<li>Lit as peer dep of packages</li>
</ul>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>Users running NYSDS 1.19.0 through 1.19.2 should immediately upgrade to 1.19.3 to fix the default icon library bug introduced in 1.19.0.</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.19.3">See the full developer release notes for v.1.19.3 →</a></p>
]]></content>
      <pubDate>Wed, 08 Jul 2026 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.19.3-release/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.19.2</title>
      <link>https://designsystem.ny.gov/about/updates/1.19.2-release/</link>
      <description><![CDATA[<nys-alert heading="Breaking Changes in 1.19.0" type="danger">
<p>Read the <a href="https://designsystem.ny.gov/about/updates/1.19.0-release/">1.19.0 release notes</a> and <a href="https://designsystem.ny.gov/about/updates/1.19.2-release/#breaking-changes">1.19.2 breaking changes</a> to see how to migrate</p>
</nys-alert>
<h2>New <code>subheading</code> for <code>&lt;nys-globalfooter&gt;</code></h2>
<p>Use <code>agencySubheading</code> to display a short description beneath the agency name.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  " data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-globalfooter agencyName="NYS Design System" agencySubheading="A product of the NYS Office of Information Technology Services">
</nys-globalfooter></div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-globalfooter</span>
  <span class="token attr-name">agencyName</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>NYS Design System<span class="token punctuation">"</span></span>
  <span class="token attr-name">agencySubheading</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>A product of the NYS Office of Information Technology Services<span class="token punctuation">"</span></span>
<span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-globalfooter</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<div class="page-meta" style="background-color: var(--nys-color-theme-weaker); padding-top: var(--nys-space-100); padding-bottom: var(--nys-space-100); padding-left: var(--nys-space-200); padding-right: var(--nys-space-200); margin-bottom: var(--nys-space-800); border-radius: var(--nys-radius-md); border: var(--nys-border-width-md) solid var(--nys-color-theme-weak);">
<div class="page-author">
<nys-avatar image="/assets/img/authors/robert-chen.jpg"></nys-avatar>
<a href="https://github.com/novacat35">Robert Chen</a> played some footie ⚽ with the footer!
</div>
</div>
<h2>Two new icons</h2>
<p>We added two new icons to the icon library:</p>
<p><nys-icon name="schedule" size="5xl"></nys-icon> <code>schedule</code>
<br />
<nys-icon name="location_on" size="5xl"></nys-icon> <code>location_on</code></p>
<p><strong>Reminder:</strong> When using the <code>&lt;nys-icon&gt;</code>, you can now choose to <a href="https://designsystem.ny.gov/components/icon/#managing-your-icon-library">load in icons from any other library</a>. You can serve the icons locally or via a Content Delivery Network (CDN).</p>
<div class="page-meta" style="background-color: var(--nys-color-theme-weaker); padding-top: var(--nys-space-100); padding-bottom: var(--nys-space-100); padding-left: var(--nys-space-200); padding-right: var(--nys-space-200); margin-bottom: var(--nys-space-800); border-radius: var(--nys-radius-md); border: var(--nys-border-width-md) solid var(--nys-color-theme-weak);">
<div class="page-author">
<nys-avatar image="/assets/img/authors/robert-chen.jpg"></nys-avatar>
<a href="https://github.com/novacat35">Robert Chen</a> was on location scheduling this update.
</div>
</div>
<h2>Quarterly audit fixes</h2>
<p>We take stock of our progress every quarter. We do this to ensure that we're being consistent and that we speak with one voice. We need to check for new accessibility issues, and general bugs.</p>
<p>During our quarterly audit we <a href="https://github.com/ITS-HCD/nysds/pull/1611">uncovered 89 findings <nys-icon name="open_in_new"></nys-icon></a> and remediated them. Here is a summarized list of fixes that were implemented:</p>
<ul>
<li><code>&lt;nys-button&gt;</code> could execute arbitrary code</li>
<li><code>&lt;nys-backtotop&gt;</code> broke server-side rendering</li>
<li>Missing <code>sideEffects</code> risked breaking tree-shaking changes</li>
<li>Accessibility issues resolved for <code>&lt;nys-breadcrumb&gt;</code> and <code>&lt;nys-datepicker&gt;</code></li>
<li>Multiple security vulnerabilities patched</li>
<li>Tooling changes</li>
</ul>
<div class="page-meta" style="background-color: var(--nys-color-theme-weaker); padding-top: var(--nys-space-100); padding-bottom: var(--nys-space-100); padding-left: var(--nys-space-200); padding-right: var(--nys-space-200); margin-bottom: var(--nys-space-800); border-radius: var(--nys-radius-md); border: var(--nys-border-width-md) solid var(--nys-color-theme-weak);">
<div class="page-author">
<nys-avatar image="/assets/img/authors/jesse-gardner.jpg"></nys-avatar>
<a href="https://github.com/plasticmind">Jesse Gardner</a> verified the findings of this audit.
</div>
</div>
<h2>🚨 Breaking changes</h2>
<ul>
<li><code>&lt;nys-icon&gt;</code> in 1.19.0 libraries break on &quot;chunked&quot; frameworks (like React, Angular). <a href="https://designsystem.ny.gov/components/icon/#override-the-default-library">Library break fixed in 1.19.1</a></li>
<li><code>nys-grid-gap</code> in 1.19.0 added vertical spacing to <code>grid-gap</code> gutters. <a href="https://designsystem.ny.gov/foundations/utilities/grid/#gutters">Read about the grid-gap classes</a></li>
<li><code>&lt;nys-datepicker&gt;</code> default <code>width</code> changed from <code>md</code> to <code>full</code>. <a href="https://designsystem.ny.gov/about/updates/1.19.2-release/components/datepicker/#width">See note about width</a></li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>none</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.19.2">See the full developer release notes for v.1.19.2 →</a></p>
]]></description>
      <content><![CDATA[<nys-alert heading="Breaking Changes in 1.19.0" type="danger">
<p>Read the <a href="https://designsystem.ny.gov/about/updates/1.19.0-release/">1.19.0 release notes</a> and <a href="https://designsystem.ny.gov/about/updates/1.19.2-release/#breaking-changes">1.19.2 breaking changes</a> to see how to migrate</p>
</nys-alert>
<h2>New <code>subheading</code> for <code>&lt;nys-globalfooter&gt;</code></h2>
<p>Use <code>agencySubheading</code> to display a short description beneath the agency name.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  " data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-globalfooter agencyName="NYS Design System" agencySubheading="A product of the NYS Office of Information Technology Services">
</nys-globalfooter></div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-globalfooter</span>
  <span class="token attr-name">agencyName</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>NYS Design System<span class="token punctuation">"</span></span>
  <span class="token attr-name">agencySubheading</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>A product of the NYS Office of Information Technology Services<span class="token punctuation">"</span></span>
<span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-globalfooter</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<div class="page-meta" style="background-color: var(--nys-color-theme-weaker); padding-top: var(--nys-space-100); padding-bottom: var(--nys-space-100); padding-left: var(--nys-space-200); padding-right: var(--nys-space-200); margin-bottom: var(--nys-space-800); border-radius: var(--nys-radius-md); border: var(--nys-border-width-md) solid var(--nys-color-theme-weak);">
<div class="page-author">
<nys-avatar image="/assets/img/authors/robert-chen.jpg"></nys-avatar>
<a href="https://github.com/novacat35">Robert Chen</a> played some footie ⚽ with the footer!
</div>
</div>
<h2>Two new icons</h2>
<p>We added two new icons to the icon library:</p>
<p><nys-icon name="schedule" size="5xl"></nys-icon> <code>schedule</code>
<br />
<nys-icon name="location_on" size="5xl"></nys-icon> <code>location_on</code></p>
<p><strong>Reminder:</strong> When using the <code>&lt;nys-icon&gt;</code>, you can now choose to <a href="https://designsystem.ny.gov/components/icon/#managing-your-icon-library">load in icons from any other library</a>. You can serve the icons locally or via a Content Delivery Network (CDN).</p>
<div class="page-meta" style="background-color: var(--nys-color-theme-weaker); padding-top: var(--nys-space-100); padding-bottom: var(--nys-space-100); padding-left: var(--nys-space-200); padding-right: var(--nys-space-200); margin-bottom: var(--nys-space-800); border-radius: var(--nys-radius-md); border: var(--nys-border-width-md) solid var(--nys-color-theme-weak);">
<div class="page-author">
<nys-avatar image="/assets/img/authors/robert-chen.jpg"></nys-avatar>
<a href="https://github.com/novacat35">Robert Chen</a> was on location scheduling this update.
</div>
</div>
<h2>Quarterly audit fixes</h2>
<p>We take stock of our progress every quarter. We do this to ensure that we're being consistent and that we speak with one voice. We need to check for new accessibility issues, and general bugs.</p>
<p>During our quarterly audit we <a href="https://github.com/ITS-HCD/nysds/pull/1611">uncovered 89 findings <nys-icon name="open_in_new"></nys-icon></a> and remediated them. Here is a summarized list of fixes that were implemented:</p>
<ul>
<li><code>&lt;nys-button&gt;</code> could execute arbitrary code</li>
<li><code>&lt;nys-backtotop&gt;</code> broke server-side rendering</li>
<li>Missing <code>sideEffects</code> risked breaking tree-shaking changes</li>
<li>Accessibility issues resolved for <code>&lt;nys-breadcrumb&gt;</code> and <code>&lt;nys-datepicker&gt;</code></li>
<li>Multiple security vulnerabilities patched</li>
<li>Tooling changes</li>
</ul>
<div class="page-meta" style="background-color: var(--nys-color-theme-weaker); padding-top: var(--nys-space-100); padding-bottom: var(--nys-space-100); padding-left: var(--nys-space-200); padding-right: var(--nys-space-200); margin-bottom: var(--nys-space-800); border-radius: var(--nys-radius-md); border: var(--nys-border-width-md) solid var(--nys-color-theme-weak);">
<div class="page-author">
<nys-avatar image="/assets/img/authors/jesse-gardner.jpg"></nys-avatar>
<a href="https://github.com/plasticmind">Jesse Gardner</a> verified the findings of this audit.
</div>
</div>
<h2>🚨 Breaking changes</h2>
<ul>
<li><code>&lt;nys-icon&gt;</code> in 1.19.0 libraries break on &quot;chunked&quot; frameworks (like React, Angular). <a href="https://designsystem.ny.gov/components/icon/#override-the-default-library">Library break fixed in 1.19.1</a></li>
<li><code>nys-grid-gap</code> in 1.19.0 added vertical spacing to <code>grid-gap</code> gutters. <a href="https://designsystem.ny.gov/foundations/utilities/grid/#gutters">Read about the grid-gap classes</a></li>
<li><code>&lt;nys-datepicker&gt;</code> default <code>width</code> changed from <code>md</code> to <code>full</code>. <a href="https://designsystem.ny.gov/about/updates/1.19.2-release/components/datepicker/#width">See note about width</a></li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>none</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.19.2">See the full developer release notes for v.1.19.2 →</a></p>
]]></content>
      <pubDate>Wed, 24 Jun 2026 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.19.2-release/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.19.0 “Upper Wolf Jaw”</title>
      <link>https://designsystem.ny.gov/about/updates/1.19.0-release/</link>
      <description><![CDATA[<nys-alert heading="Breaking Changes in 1.19.0" type="danger">
<p>Read the <a href="https://designsystem.ny.gov/about/updates/1.19.0-release/#custom-icon-library-support">nys-icon</a> and <a href="https://designsystem.ny.gov/about/updates/1.19.0-release/#grid-gap-vertical-spacing">grid-gap</a> documentation below to see how to migrate</p>
</nys-alert>
<h2>“Upper Wolf Jaw” 🏔️</h2>
<p>The winning vote during Office Hours this week was for naming this release “Upper Wolf Jaw” after the 29<sup>th</sup> highest peak in New York: Upper Wolfjaw Mountain. The Mountain has an elevation of 4,185 ft (1,276 m). That is as tall as 50,400 New York bagels !</p>
<p><a href="https://en.wikipedia.org/wiki/Upper_Wolfjaw_Mountain">Learn more about Upper Wolfjaw Mountain <nys-icon name="open_in_new"></nys-icon></a></p>
<h2>Custom icon library support</h2>
<p><nys-badge label="BREAKING CHANGE" intent="error" prefixIcon=""></nys-badge></p>
<p>When using the <code>&lt;nys-icon&gt;</code>, you can now choose to load in icons from any other library. You can serve the icons locally or via a Content Delivery Network (CDN).</p>
<h3>Migrating to the new <code>&lt;nys-icon&gt;</code></h3>
<p>To migrate to the new <code>&lt;nys-icon&gt;</code> libraries, you'll need to ensure your icon files are in the correct location, and you may need to configure the &quot;default&quot; library to point to your icon files. <a href="https://designsystem.ny.gov/components/icon/#managing-your-icon-library">Learn how to manage your libraries.</a></p>
<h3>Custom icon library demos</h3>
<p>Below, you will find two examples which retrieve icons from Font Awesome and Material:</p>
<h4>Font Awesome demo</h4>
<div class="icon-examples">
<div class="nys-grid-row nys-grid-gap-200">
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="house" size="4xl" library="font-awesome"></nys-icon>
        </div>
        <div class="card__desc">house</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="user" size="4xl" library="font-awesome"></nys-icon>
        </div>
        <div class="card__desc">user</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="star" size="4xl" library="font-awesome"></nys-icon>
        </div>
        <div class="card__desc">star</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="heart" size="4xl" library="font-awesome"></nys-icon>
        </div>
        <div class="card__desc">heart</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="bell" size="4xl" library="font-awesome"></nys-icon>
        </div>
        <div class="card__desc">bell</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="magnifying-glass" size="4xl" library="font-awesome"></nys-icon>
        </div>
        <div class="card__desc">magnifying-glass</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="circle-check" size="4xl" library="font-awesome"></nys-icon>
        </div>
        <div class="card__desc">circle-check</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="triangle-exclamation" size="4xl" library="font-awesome"></nys-icon>
        </div>
        <div class="card__desc">triangle-exclamation</div>
    </div>
</div>
</div>
</div>
<h4>Material demo</h4>
<div class="icon-examples">
<div class="nys-grid-row nys-grid-gap-200">
     <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="home" size="4xl" library="material"></nys-icon>
        </div>
        <div class="card__desc">home</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="person" size="4xl" library="material"></nys-icon>
        </div>
        <div class="card__desc">person</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="star" size="4xl" library="material"></nys-icon>
        </div>
        <div class="card__desc">star</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="favorite" size="4xl" library="material"></nys-icon>
        </div>
        <div class="card__desc">favorite</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="notifications" size="4xl" library="material"></nys-icon>
        </div>
        <div class="card__desc">notifications</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="search" size="4xl" library="material"></nys-icon>
        </div>
        <div class="card__desc">search</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="check_circle" size="4xl" library="material"></nys-icon>
        </div>
        <div class="card__desc">check_circle</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="warning" size="4xl" library="material"></nys-icon>
        </div>
        <div class="card__desc">warning</div>
    </div>
</div>
</div>
</div>
<h2>Grid-gap vertical spacing</h2>
<p>We enhanced the functionality of the <code>grid-gap</code> classes to add vertical spacing in addition to the pre-existing horizontal spacing. <a href="https://designsystem.ny.gov/foundations/utilities/grid/#gutters">Add vertical space to your grid layouts today!</a></p>
<h2>New <code>&lt;nys-divider&gt;</code> subtle variant</h2>
<p>The <code>&lt;nys-divider&gt;</code> component got a new <code>subtle</code> attribute that provides a more understated visual separation between content. The subtle divider is ideal for use in situations where a less prominent division is desired.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
Content above the divider.
<nys-divider subtle=""></nys-divider>
Content below the divider.
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-divider</span> <span class="token attr-name">subtle</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-divider</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<h2>Bug fixes</h2>
<ul>
<li>Align dev environment linting processes and prettier the Sass</li>
<li>Remove horizontal padding of text buttons</li>
<li>Fix href and fullWidth button configurations</li>
<li>Rework <code>&lt;nys-radiobutton&gt;</code> for better accessibility</li>
<li>Updated security vulnerabilities</li>
<li>Fix missing color fill on certain <code>&lt;nys-icon&gt;</code> glyphs</li>
<li>New tokens for underline regular and strong styles</li>
</ul>
<h2>🚨 Breaking changes</h2>
<ul>
<li><code>&lt;nys-icon&gt;</code> libraries break on &quot;chunked&quot; frameworks (like React, Angular). <a href="https://designsystem.ny.gov/components/icon/#override-the-default-library">Library break fix</a></li>
<li><code>nys-grid-gap</code> added vertical spacing to <code>grid-gap</code> gutters. <a href="https://designsystem.ny.gov/foundations/utilities/grid/#gutters">Read about the grid-gap classes</a></li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>none</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.19.0">See the full developer release notes for v.1.19.0 →</a></p>
<script>
  document.addEventListener("DOMContentLoaded", () => {

  // ── Font Awesome (solid) ─────────────────────────────────────────────────
    NYSDS.registerIconLibrary("font-awesome", {
      resolver: (name) =>
        `https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/svgs/solid/${name}.svg`,
      mutator: (svg) => {
        svg.setAttribute("fill", "currentColor");
      },
    });

    // ── Material (outlined) ─────────────────────────────────────────────────
    NYSDS.registerIconLibrary("material", {
      resolver: (name) =>
        `https://fonts.gstatic.com/s/i/short-term/release/materialsymbolsoutlined/${name}/default/24px.svg`,
      mutator: (svg) => {
        svg.setAttribute("fill", "currentColor");
      },
    });
  });
</script>
]]></description>
      <content><![CDATA[<nys-alert heading="Breaking Changes in 1.19.0" type="danger">
<p>Read the <a href="https://designsystem.ny.gov/about/updates/1.19.0-release/#custom-icon-library-support">nys-icon</a> and <a href="https://designsystem.ny.gov/about/updates/1.19.0-release/#grid-gap-vertical-spacing">grid-gap</a> documentation below to see how to migrate</p>
</nys-alert>
<h2>“Upper Wolf Jaw” 🏔️</h2>
<p>The winning vote during Office Hours this week was for naming this release “Upper Wolf Jaw” after the 29<sup>th</sup> highest peak in New York: Upper Wolfjaw Mountain. The Mountain has an elevation of 4,185 ft (1,276 m). That is as tall as 50,400 New York bagels !</p>
<p><a href="https://en.wikipedia.org/wiki/Upper_Wolfjaw_Mountain">Learn more about Upper Wolfjaw Mountain <nys-icon name="open_in_new"></nys-icon></a></p>
<h2>Custom icon library support</h2>
<p><nys-badge label="BREAKING CHANGE" intent="error" prefixIcon=""></nys-badge></p>
<p>When using the <code>&lt;nys-icon&gt;</code>, you can now choose to load in icons from any other library. You can serve the icons locally or via a Content Delivery Network (CDN).</p>
<h3>Migrating to the new <code>&lt;nys-icon&gt;</code></h3>
<p>To migrate to the new <code>&lt;nys-icon&gt;</code> libraries, you'll need to ensure your icon files are in the correct location, and you may need to configure the &quot;default&quot; library to point to your icon files. <a href="https://designsystem.ny.gov/components/icon/#managing-your-icon-library">Learn how to manage your libraries.</a></p>
<h3>Custom icon library demos</h3>
<p>Below, you will find two examples which retrieve icons from Font Awesome and Material:</p>
<h4>Font Awesome demo</h4>
<div class="icon-examples">
<div class="nys-grid-row nys-grid-gap-200">
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="house" size="4xl" library="font-awesome"></nys-icon>
        </div>
        <div class="card__desc">house</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="user" size="4xl" library="font-awesome"></nys-icon>
        </div>
        <div class="card__desc">user</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="star" size="4xl" library="font-awesome"></nys-icon>
        </div>
        <div class="card__desc">star</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="heart" size="4xl" library="font-awesome"></nys-icon>
        </div>
        <div class="card__desc">heart</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="bell" size="4xl" library="font-awesome"></nys-icon>
        </div>
        <div class="card__desc">bell</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="magnifying-glass" size="4xl" library="font-awesome"></nys-icon>
        </div>
        <div class="card__desc">magnifying-glass</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="circle-check" size="4xl" library="font-awesome"></nys-icon>
        </div>
        <div class="card__desc">circle-check</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="triangle-exclamation" size="4xl" library="font-awesome"></nys-icon>
        </div>
        <div class="card__desc">triangle-exclamation</div>
    </div>
</div>
</div>
</div>
<h4>Material demo</h4>
<div class="icon-examples">
<div class="nys-grid-row nys-grid-gap-200">
     <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="home" size="4xl" library="material"></nys-icon>
        </div>
        <div class="card__desc">home</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="person" size="4xl" library="material"></nys-icon>
        </div>
        <div class="card__desc">person</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="star" size="4xl" library="material"></nys-icon>
        </div>
        <div class="card__desc">star</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="favorite" size="4xl" library="material"></nys-icon>
        </div>
        <div class="card__desc">favorite</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="notifications" size="4xl" library="material"></nys-icon>
        </div>
        <div class="card__desc">notifications</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="search" size="4xl" library="material"></nys-icon>
        </div>
        <div class="card__desc">search</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="check_circle" size="4xl" library="material"></nys-icon>
        </div>
        <div class="card__desc">check_circle</div>
    </div>
</div>
    <div class="nys-grid-col-6 nys-tablet:nys-grid-col-3">
    <div class="card nys-flex-fill">
        <div class="card__title">
            <nys-icon name="warning" size="4xl" library="material"></nys-icon>
        </div>
        <div class="card__desc">warning</div>
    </div>
</div>
</div>
</div>
<h2>Grid-gap vertical spacing</h2>
<p>We enhanced the functionality of the <code>grid-gap</code> classes to add vertical spacing in addition to the pre-existing horizontal spacing. <a href="https://designsystem.ny.gov/foundations/utilities/grid/#gutters">Add vertical space to your grid layouts today!</a></p>
<h2>New <code>&lt;nys-divider&gt;</code> subtle variant</h2>
<p>The <code>&lt;nys-divider&gt;</code> component got a new <code>subtle</code> attribute that provides a more understated visual separation between content. The subtle divider is ideal for use in situations where a less prominent division is desired.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
Content above the divider.
<nys-divider subtle=""></nys-divider>
Content below the divider.
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-divider</span> <span class="token attr-name">subtle</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-divider</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<h2>Bug fixes</h2>
<ul>
<li>Align dev environment linting processes and prettier the Sass</li>
<li>Remove horizontal padding of text buttons</li>
<li>Fix href and fullWidth button configurations</li>
<li>Rework <code>&lt;nys-radiobutton&gt;</code> for better accessibility</li>
<li>Updated security vulnerabilities</li>
<li>Fix missing color fill on certain <code>&lt;nys-icon&gt;</code> glyphs</li>
<li>New tokens for underline regular and strong styles</li>
</ul>
<h2>🚨 Breaking changes</h2>
<ul>
<li><code>&lt;nys-icon&gt;</code> libraries break on &quot;chunked&quot; frameworks (like React, Angular). <a href="https://designsystem.ny.gov/components/icon/#override-the-default-library">Library break fix</a></li>
<li><code>nys-grid-gap</code> added vertical spacing to <code>grid-gap</code> gutters. <a href="https://designsystem.ny.gov/foundations/utilities/grid/#gutters">Read about the grid-gap classes</a></li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>none</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.19.0">See the full developer release notes for v.1.19.0 →</a></p>
<script>
  document.addEventListener("DOMContentLoaded", () => {

  // ── Font Awesome (solid) ─────────────────────────────────────────────────
    NYSDS.registerIconLibrary("font-awesome", {
      resolver: (name) =>
        `https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/svgs/solid/${name}.svg`,
      mutator: (svg) => {
        svg.setAttribute("fill", "currentColor");
      },
    });

    // ── Material (outlined) ─────────────────────────────────────────────────
    NYSDS.registerIconLibrary("material", {
      resolver: (name) =>
        `https://fonts.gstatic.com/s/i/short-term/release/materialsymbolsoutlined/${name}/default/24px.svg`,
      mutator: (svg) => {
        svg.setAttribute("fill", "currentColor");
      },
    });
  });
</script>
]]></content>
      <pubDate>Thu, 11 Jun 2026 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.19.0-release/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.18.3</title>
      <link>https://designsystem.ny.gov/about/updates/1.18.3-release/</link>
      <description><![CDATA[<h2>New <code>&lt;nys-icon&gt;</code>: <nys-icon name="delete"></nys-icon> &quot;delete&quot;</h2>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-icon name="delete" size="5xl"></nys-icon>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-icon</span>
  <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>delete<span class="token punctuation">"</span></span>
  <span class="token attr-name">size</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>5xl<span class="token punctuation">"</span></span>
<span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-icon</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<h2>Bug fixes</h2>
<ul>
<li>Consolidate MCP token tools from 4 to 3</li>
<li>Remove performance-heavy resize listeners</li>
<li>Spacebar styling fixes for <code>&lt;nys-button&gt;</code></li>
<li>Fix an a11y issue with <code>&lt;nys-avatar&gt;</code></li>
<li><code>&lt;nys-backtotop&gt;</code> now targets the body tag</li>
<li>Ghost and text button icon spacing fixes</li>
<li>Enhancement to <code>&lt;nys-stepper&gt;</code> documentation</li>
<li>Added instructions for getting latest MCP updates</li>
<li>Branded custom test reporter implemented</li>
<li>New listener for out-of-bounds clicks to close global header menu</li>
<li>Remove double focus a11y VO on <code>&lt;nys-checkbox&gt;</code></li>
<li>Fix a11y keyboard navigation and VO for nys-radiobutton</li>
<li>Fix <code>&lt;nys-textinput&gt;</code> &quot;tel&quot; type reset functionality</li>
<li>Fix <code>&lt;nys-textinput&gt;</code> &quot;other&quot; not disabling in <code>&lt;nys-checkbox&gt;</code> and <code>&lt;nys-radiobutton&gt;</code></li>
<li>Fix alignment of responsive <code>&lt;nys-breadcrumbs&gt;</code></li>
<li>Fix alignment in <code>&lt;nys-globalheader&gt;</code> gutters and padding to align with Figma</li>
<li>Fix grid-gap overlapping and running off screen</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a>, <a href="https://github.com/novacat35">Robert Chen</a>, <a href="https://github.com/plasticmind">Jesse Gardner</a>, and <a href="https://github.com/esteinborn">Eric Steinborn</a> ain't afraid of no bugs!</p>
<h2>Shout-outs</h2>
<p>We want to take a moment to give a shout-out to our faithful contributors. These fearless folks have provided feedback, filed bug reports, and pitched new component proposals:</p>
<p>Jess Brislin, Bradley Bouchard, Jason Fiorini, Hemanth Kuvvarapu, Gregory Sweet, Melih Kartal, Uday Kiran Buddi, Jody Boucher, Kutumba Nunna, Tyler Deemer, Robert Schuchman, Conrad Weykamp, Alan Charlesworth, David Ackerman, Rachel Wang, Adam Fasoldt, Eric Neuls, Avery Parslow</p>
<p>We're shouting this from the rafters: <strong style="font-size: var(--nys-font-size-h4);">Thank You!</strong></p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>none</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.18.3">See the full developer release notes for v.1.18.3 →</a></p>
]]></description>
      <content><![CDATA[<h2>New <code>&lt;nys-icon&gt;</code>: <nys-icon name="delete"></nys-icon> &quot;delete&quot;</h2>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-icon name="delete" size="5xl"></nys-icon>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-icon</span>
  <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>delete<span class="token punctuation">"</span></span>
  <span class="token attr-name">size</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>5xl<span class="token punctuation">"</span></span>
<span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-icon</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<h2>Bug fixes</h2>
<ul>
<li>Consolidate MCP token tools from 4 to 3</li>
<li>Remove performance-heavy resize listeners</li>
<li>Spacebar styling fixes for <code>&lt;nys-button&gt;</code></li>
<li>Fix an a11y issue with <code>&lt;nys-avatar&gt;</code></li>
<li><code>&lt;nys-backtotop&gt;</code> now targets the body tag</li>
<li>Ghost and text button icon spacing fixes</li>
<li>Enhancement to <code>&lt;nys-stepper&gt;</code> documentation</li>
<li>Added instructions for getting latest MCP updates</li>
<li>Branded custom test reporter implemented</li>
<li>New listener for out-of-bounds clicks to close global header menu</li>
<li>Remove double focus a11y VO on <code>&lt;nys-checkbox&gt;</code></li>
<li>Fix a11y keyboard navigation and VO for nys-radiobutton</li>
<li>Fix <code>&lt;nys-textinput&gt;</code> &quot;tel&quot; type reset functionality</li>
<li>Fix <code>&lt;nys-textinput&gt;</code> &quot;other&quot; not disabling in <code>&lt;nys-checkbox&gt;</code> and <code>&lt;nys-radiobutton&gt;</code></li>
<li>Fix alignment of responsive <code>&lt;nys-breadcrumbs&gt;</code></li>
<li>Fix alignment in <code>&lt;nys-globalheader&gt;</code> gutters and padding to align with Figma</li>
<li>Fix grid-gap overlapping and running off screen</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a>, <a href="https://github.com/novacat35">Robert Chen</a>, <a href="https://github.com/plasticmind">Jesse Gardner</a>, and <a href="https://github.com/esteinborn">Eric Steinborn</a> ain't afraid of no bugs!</p>
<h2>Shout-outs</h2>
<p>We want to take a moment to give a shout-out to our faithful contributors. These fearless folks have provided feedback, filed bug reports, and pitched new component proposals:</p>
<p>Jess Brislin, Bradley Bouchard, Jason Fiorini, Hemanth Kuvvarapu, Gregory Sweet, Melih Kartal, Uday Kiran Buddi, Jody Boucher, Kutumba Nunna, Tyler Deemer, Robert Schuchman, Conrad Weykamp, Alan Charlesworth, David Ackerman, Rachel Wang, Adam Fasoldt, Eric Neuls, Avery Parslow</p>
<p>We're shouting this from the rafters: <strong style="font-size: var(--nys-font-size-h4);">Thank You!</strong></p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>none</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.18.3">See the full developer release notes for v.1.18.3 →</a></p>
]]></content>
      <pubDate>Thu, 28 May 2026 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.18.3-release/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.18.0 “Cascade”</title>
      <link>https://designsystem.ny.gov/about/updates/1.18.0-release/</link>
      <description><![CDATA[<p><nys-alert heading="BREAKING CHANGES in 1.18.0" text="Read the grid-gap documentation below to see how to migrate" type="danger"></nys-alert></p>
<h2>“Cascade” 🏔️</h2>
<p>We held a vote during our office hours this week, and the winning vote was for naming this release “Cascade” after the 36<sup>th</sup> highest peak in New York: Cascade Mountain. Cascade Mountain has an elevation of 4,098 ft (1,249 m). That is just over 4 Empire State Buildings tall (1,050 ft to roof)!</p>
<p><a href="https://en.wikipedia.org/wiki/Cascade_Mountain_(New_York)">Learn more about Cascade Mountain</a></p>
<h2><code>&lt;nys-tab&gt;</code> now available</h2>
<p>The <code>&lt;nys-tab&gt;</code> acts as a clickable interface to toggle between different sets of information without leaving the page. It is not intended for page navigation.</p>
<p><a href="https://designsystem.ny.gov/components/tab">Read the full tabs documentation</a></p>
<div class="code-preview-container">
  <div class="code-preview__preview  " data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-tabgroup>
  <nys-tab label="Marcy"></nys-tab>
  <nys-tab label="Algonquin"></nys-tab>
  <nys-tab label="Haystack"></nys-tab>
  <nys-tab label="Skylight" id="tab4"></nys-tab>
  <nys-tab label="Whiteface" id="tab5"></nys-tab>
  <nys-tabpanel>
    Mount Marcy is the tallest peak in the Adirondacks. It has an elevation of 5344 feet with 3166 feet of elevation gain. The roundtrip hike to the top is 14.8 miles and is an out-and-back route.
  </nys-tabpanel>
  <nys-tabpanel>
    Algonquin Peak is the 2nd tallest peak in the Adirondacks. It has an elevation of 5114 feet with 3050 feet of elevation gain. The roundtrip hike to the top is 7.8 miles and is an out-and-back route.
  </nys-tabpanel>
  <nys-tabpanel>
    Mount Haystack is the 3rd tallest peak in the Adirondacks. It has an elevation of 4960 feet with 4000 feet of elevation gain. The roundtrip hike to the top is 16.4 miles and is an out-and-back route.
  </nys-tabpanel>
  <nys-tabpanel>
    Mount Skylight is the 4th tallest peak in the Adirondacks. It has an elevation of 4926 feet with 5100 feet of elevation gain. The roundtrip hike to the top is 16 miles and is an out-and-back route.
  </nys-tabpanel>
  <nys-tabpanel>
    Whiteface is the 5th tallest peak in the Adirondacks. It has an elevation of 4867 feet with 3050 feet of elevation gain. The roundtrip hike to the top is 7.2 miles and is an out-and-back route.
  </nys-tabpanel>
</nys-tabgroup>
<p style="padding: 1rem;">
    <strong>Note:</strong> The content in the tab panels was gathered from <a href="https://www.lakeplacid.com/do/outdoors/summerfall/hiking">lakeplacid.com</a> and may not be completely accurate. This is meant to be a demo of how the component works, not a hiking guide.
</p>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-tabgroup</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-tab</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Marcy<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-tab</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-tab</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Algonquin<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-tab</span><span class="token punctuation">></span></span>
  ...rest of the tabs...
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-tabpanel</span><span class="token punctuation">></span></span>content inside the tab panel<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-tabpanel</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-tabpanel</span><span class="token punctuation">></span></span>content inside the tab panel<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-tabpanel</span><span class="token punctuation">></span></span>
  ...rest of the tabpanels...
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-tabgroup</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> tabbed her way to the summit</p>
<h2>Figma updates</h2>
<ul>
<li>A new Figma-only <code>Link</code> component was released this week</li>
<li>Lots of research into the upcoming Card component. Stay tuned for your chance to contribute to the Card discussion!</li>
</ul>
<p><a href="https://github.com/ksorrentino">Kristin Sorrentino</a> and <a href="https://github.com/mashyamumin">Mashya Mumin</a> are designing the future of New York State</p>
<h2>Bug fixes</h2>
<ul>
<li>Adjust <code>&lt;nys-icon&gt;</code> alignment. Icons are now aligned in the text variant of <code>&lt;nys-button&gt;</code></li>
<li>Grid Gap classes were changed to use NYSDS ramps instead of USWDS ramps</li>
<li>Inverted options we not passing WCAG contrast specs, so they have been removed</li>
<li>Fixed no heading bug in <code>&lt;nys-alert&gt;</code></li>
<li>Datepicker out-of-range month now visible</li>
<li><code>&lt;nys-tooltip&gt;</code> no longer resets to the top left of the screen when you change the tooltip content</li>
<li>Accessibility fixes for <code>&lt;nys-backtotop&gt;</code></li>
<li>Accessibility fixes for <code>&lt;nys-badge&gt;</code></li>
<li>Slotted content is now properly updated for React and Preact environments</li>
<li>Fixed responsive utility classes to cascade (get it?) better</li>
<li>Updated lagging GitHub Actions from v4 to v6</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a>, <a href="https://github.com/novacat35">Robert Chen</a>, and <a href="https://github.com/esteinborn">Eric Steinborn</a> ain't afraid of no bugs!</p>
<h2>🚨 Breaking changes</h2>
<h3>Grid gap utility classes renamed</h3>
<p>The <code>$grid-gaps</code> SCSS map now uses the standard NYSDS ramp. Update any old grid gap classes in your project:</p>
<nys-table striped="" style="--nys-table-padding--cell--y: var(--nys-space-100)">
  <table style="width: fit-content;">
    <thead>
      <tr>
        <th>Old class</th>
        <th></th>
        <th>New class</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><code>nys-grid-gap-sm</code></td>
        <td><nys-icon name="arrow_forward" size="4xl"></nys-icon></td>
        <td><code>nys-grid-gap-2px</code></td>
      </tr>
      <tr>
        <td><code>nys-grid-gap-md</code></td>
        <td><nys-icon name="arrow_forward" size="4xl"></nys-icon></td>
        <td><code>nys-grid-gap-200</code></td>
      </tr>
      <tr>
        <td><code>nys-grid-gap-lg</code></td>
        <td><nys-icon name="arrow_forward" size="4xl"></nys-icon></td>
        <td><code>nys-grid-gap-300</code></td>
      </tr>
      <tr>
        <td><code>nys-grid-gap-05</code></td>
        <td><nys-icon name="arrow_forward" size="4xl"></nys-icon></td>
        <td><code>nys-grid-gap-50</code></td>
      </tr>
      <tr>
        <td><code>nys-grid-gap-1</code></td>
        <td><nys-icon name="arrow_forward" size="4xl"></nys-icon></td>
        <td><code>nys-grid-gap-100</code></td>
      </tr>
      <tr>
        <td><code>nys-grid-gap-2</code></td>
        <td><nys-icon name="arrow_forward" size="4xl"></nys-icon></td>
        <td><code>nys-grid-gap-200</code></td>
      </tr>
      <tr>
        <td><code>nys-grid-gap-3</code></td>
        <td><nys-icon name="arrow_forward" size="4xl"></nys-icon></td>
        <td><code>nys-grid-gap-300</code></td>
      </tr>
      <tr>
        <td><code>nys-grid-gap-4</code></td>
        <td><nys-icon name="arrow_forward" size="4xl"></nys-icon></td>
        <td><code>nys-grid-gap-400</code></td>
      </tr>
      <tr>
        <td><code>nys-grid-gap-5</code></td>
        <td><nys-icon name="arrow_forward" size="4xl"></nys-icon></td>
        <td><code>nys-grid-gap-500</code></td>
      </tr>
      <tr>
        <td><code>nys-grid-gap-6</code></td>
        <td><nys-icon name="arrow_forward" size="4xl"></nys-icon></td>
        <td><code>nys-grid-gap-600</code></td>
      </tr>
    </tbody>
  </table>
</nys-table>
<p>Additional options were added but are not breaking changes. <a href="https://designsystem.ny.gov/foundations/utilities/grid/#gutters">See the full grid gap class documentation here</a></p>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> bridged the gap</p>
<h2>⚠️ Known issues</h2>
<ul>
<li>none</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.18.0">See the full developer release notes for v.1.18.0 →</a></p>
]]></description>
      <content><![CDATA[<p><nys-alert heading="BREAKING CHANGES in 1.18.0" text="Read the grid-gap documentation below to see how to migrate" type="danger"></nys-alert></p>
<h2>“Cascade” 🏔️</h2>
<p>We held a vote during our office hours this week, and the winning vote was for naming this release “Cascade” after the 36<sup>th</sup> highest peak in New York: Cascade Mountain. Cascade Mountain has an elevation of 4,098 ft (1,249 m). That is just over 4 Empire State Buildings tall (1,050 ft to roof)!</p>
<p><a href="https://en.wikipedia.org/wiki/Cascade_Mountain_(New_York)">Learn more about Cascade Mountain</a></p>
<h2><code>&lt;nys-tab&gt;</code> now available</h2>
<p>The <code>&lt;nys-tab&gt;</code> acts as a clickable interface to toggle between different sets of information without leaving the page. It is not intended for page navigation.</p>
<p><a href="https://designsystem.ny.gov/components/tab">Read the full tabs documentation</a></p>
<div class="code-preview-container">
  <div class="code-preview__preview  " data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-tabgroup>
  <nys-tab label="Marcy"></nys-tab>
  <nys-tab label="Algonquin"></nys-tab>
  <nys-tab label="Haystack"></nys-tab>
  <nys-tab label="Skylight" id="tab4"></nys-tab>
  <nys-tab label="Whiteface" id="tab5"></nys-tab>
  <nys-tabpanel>
    Mount Marcy is the tallest peak in the Adirondacks. It has an elevation of 5344 feet with 3166 feet of elevation gain. The roundtrip hike to the top is 14.8 miles and is an out-and-back route.
  </nys-tabpanel>
  <nys-tabpanel>
    Algonquin Peak is the 2nd tallest peak in the Adirondacks. It has an elevation of 5114 feet with 3050 feet of elevation gain. The roundtrip hike to the top is 7.8 miles and is an out-and-back route.
  </nys-tabpanel>
  <nys-tabpanel>
    Mount Haystack is the 3rd tallest peak in the Adirondacks. It has an elevation of 4960 feet with 4000 feet of elevation gain. The roundtrip hike to the top is 16.4 miles and is an out-and-back route.
  </nys-tabpanel>
  <nys-tabpanel>
    Mount Skylight is the 4th tallest peak in the Adirondacks. It has an elevation of 4926 feet with 5100 feet of elevation gain. The roundtrip hike to the top is 16 miles and is an out-and-back route.
  </nys-tabpanel>
  <nys-tabpanel>
    Whiteface is the 5th tallest peak in the Adirondacks. It has an elevation of 4867 feet with 3050 feet of elevation gain. The roundtrip hike to the top is 7.2 miles and is an out-and-back route.
  </nys-tabpanel>
</nys-tabgroup>
<p style="padding: 1rem;">
    <strong>Note:</strong> The content in the tab panels was gathered from <a href="https://www.lakeplacid.com/do/outdoors/summerfall/hiking">lakeplacid.com</a> and may not be completely accurate. This is meant to be a demo of how the component works, not a hiking guide.
</p>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-tabgroup</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-tab</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Marcy<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-tab</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-tab</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Algonquin<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-tab</span><span class="token punctuation">></span></span>
  ...rest of the tabs...
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-tabpanel</span><span class="token punctuation">></span></span>content inside the tab panel<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-tabpanel</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-tabpanel</span><span class="token punctuation">></span></span>content inside the tab panel<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-tabpanel</span><span class="token punctuation">></span></span>
  ...rest of the tabpanels...
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-tabgroup</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> tabbed her way to the summit</p>
<h2>Figma updates</h2>
<ul>
<li>A new Figma-only <code>Link</code> component was released this week</li>
<li>Lots of research into the upcoming Card component. Stay tuned for your chance to contribute to the Card discussion!</li>
</ul>
<p><a href="https://github.com/ksorrentino">Kristin Sorrentino</a> and <a href="https://github.com/mashyamumin">Mashya Mumin</a> are designing the future of New York State</p>
<h2>Bug fixes</h2>
<ul>
<li>Adjust <code>&lt;nys-icon&gt;</code> alignment. Icons are now aligned in the text variant of <code>&lt;nys-button&gt;</code></li>
<li>Grid Gap classes were changed to use NYSDS ramps instead of USWDS ramps</li>
<li>Inverted options we not passing WCAG contrast specs, so they have been removed</li>
<li>Fixed no heading bug in <code>&lt;nys-alert&gt;</code></li>
<li>Datepicker out-of-range month now visible</li>
<li><code>&lt;nys-tooltip&gt;</code> no longer resets to the top left of the screen when you change the tooltip content</li>
<li>Accessibility fixes for <code>&lt;nys-backtotop&gt;</code></li>
<li>Accessibility fixes for <code>&lt;nys-badge&gt;</code></li>
<li>Slotted content is now properly updated for React and Preact environments</li>
<li>Fixed responsive utility classes to cascade (get it?) better</li>
<li>Updated lagging GitHub Actions from v4 to v6</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a>, <a href="https://github.com/novacat35">Robert Chen</a>, and <a href="https://github.com/esteinborn">Eric Steinborn</a> ain't afraid of no bugs!</p>
<h2>🚨 Breaking changes</h2>
<h3>Grid gap utility classes renamed</h3>
<p>The <code>$grid-gaps</code> SCSS map now uses the standard NYSDS ramp. Update any old grid gap classes in your project:</p>
<nys-table striped="" style="--nys-table-padding--cell--y: var(--nys-space-100)">
  <table style="width: fit-content;">
    <thead>
      <tr>
        <th>Old class</th>
        <th></th>
        <th>New class</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><code>nys-grid-gap-sm</code></td>
        <td><nys-icon name="arrow_forward" size="4xl"></nys-icon></td>
        <td><code>nys-grid-gap-2px</code></td>
      </tr>
      <tr>
        <td><code>nys-grid-gap-md</code></td>
        <td><nys-icon name="arrow_forward" size="4xl"></nys-icon></td>
        <td><code>nys-grid-gap-200</code></td>
      </tr>
      <tr>
        <td><code>nys-grid-gap-lg</code></td>
        <td><nys-icon name="arrow_forward" size="4xl"></nys-icon></td>
        <td><code>nys-grid-gap-300</code></td>
      </tr>
      <tr>
        <td><code>nys-grid-gap-05</code></td>
        <td><nys-icon name="arrow_forward" size="4xl"></nys-icon></td>
        <td><code>nys-grid-gap-50</code></td>
      </tr>
      <tr>
        <td><code>nys-grid-gap-1</code></td>
        <td><nys-icon name="arrow_forward" size="4xl"></nys-icon></td>
        <td><code>nys-grid-gap-100</code></td>
      </tr>
      <tr>
        <td><code>nys-grid-gap-2</code></td>
        <td><nys-icon name="arrow_forward" size="4xl"></nys-icon></td>
        <td><code>nys-grid-gap-200</code></td>
      </tr>
      <tr>
        <td><code>nys-grid-gap-3</code></td>
        <td><nys-icon name="arrow_forward" size="4xl"></nys-icon></td>
        <td><code>nys-grid-gap-300</code></td>
      </tr>
      <tr>
        <td><code>nys-grid-gap-4</code></td>
        <td><nys-icon name="arrow_forward" size="4xl"></nys-icon></td>
        <td><code>nys-grid-gap-400</code></td>
      </tr>
      <tr>
        <td><code>nys-grid-gap-5</code></td>
        <td><nys-icon name="arrow_forward" size="4xl"></nys-icon></td>
        <td><code>nys-grid-gap-500</code></td>
      </tr>
      <tr>
        <td><code>nys-grid-gap-6</code></td>
        <td><nys-icon name="arrow_forward" size="4xl"></nys-icon></td>
        <td><code>nys-grid-gap-600</code></td>
      </tr>
    </tbody>
  </table>
</nys-table>
<p>Additional options were added but are not breaking changes. <a href="https://designsystem.ny.gov/foundations/utilities/grid/#gutters">See the full grid gap class documentation here</a></p>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> bridged the gap</p>
<h2>⚠️ Known issues</h2>
<ul>
<li>none</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.18.0">See the full developer release notes for v.1.18.0 →</a></p>
]]></content>
      <pubDate>Thu, 14 May 2026 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.18.0-release/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.17.0 “Grace”</title>
      <link>https://designsystem.ny.gov/about/updates/1.17.0-release/</link>
      <description><![CDATA[<h2>“Grace” 🏔️</h2>
<p>We held a vote during our office hours this week, and the winning vote was for naming this release “Grace” after the 42<sup>nd</sup> highest peak in New York: Grace Peak. Grace Peak has an elevation of 4,012 ft (1,223 m).</p>
<p><a href="https://en.wikipedia.org/wiki/Grace_Peak">Learn more about Grace Peak.</a></p>
<h2><code>&lt;nys-breadcrumbs&gt;</code> now available</h2>
<p>The new <code>&lt;nys-breadcrumbs&gt;</code> component shows users their location within a site's structure and provides links to navigate back through parent pages. The new component provides a couple of customization options like size and background color. It should be placed near the main content of your web pages.</p>
<p><a href="https://designsystem.ny.gov/components/breadcrumbs">Read the full breadcrumbs documentation</a></p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-breadcrumbs>
  <ol>
    <li><a href="https://designsystem.ny.gov/">Home</a></li>
    <li><a href="https://designsystem.ny.gov/services">Services</a></li>
    <li><a href="https://designsystem.ny.gov/tickets">Ticket System</a></li>
    <li>Current Page</li>
  </ol>
</nys-breadcrumbs>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-breadcrumbs</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ol</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Home<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/services<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Services<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/tickets<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Ticket System<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span>Current Page<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ol</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-breadcrumbs</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/novacat35">Robert Chen</a> followed the trail of breadcrumbs</p>
<h2><code>&lt;nys-button&gt;</code> text variant now allows <code>prefixIcon</code> and <code>suffixIcon</code></h2>
<p>Our initial design of the <code>text</code> variant of the button restricted use of icons. We were presented with use cases for adding the icons to the text buttons, so we added the ability to use a <code>prefixIcon</code> or <code>suffixIcon</code> along with the text variant of the <code>&lt;nys-button&gt;</code>.</p>
<p><a href="https://designsystem.ny.gov/components/button/#icons">Read the full icon button documentation</a></p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-button variant="text" label="Review Component Proposals" href="https://github.com/ITS-HCD/nysds/discussions/categories/component-proposals" suffixIcon="open_in_new">
</nys-button>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-button</span>
  <span class="token attr-name">variant</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text<span class="token punctuation">"</span></span>
  <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Review Component Proposals<span class="token punctuation">"</span></span>
  <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://github.com/ITS-HCD/nysds/discussions/categories/component-proposals<span class="token punctuation">"</span></span>
  <span class="token attr-name">suffixIcon</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>open_in_new<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-button</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> is an icon</p>
<h2>Figma updates</h2>
<p>Today we’re launching the official version of the breadcrumbs component in our design library.</p>
<ul>
<li><a href="https://www.figma.com/design/U2QpuSUXRTxbgG64Fzi9bu/%F0%9F%92%A0-NYS-Design-System?node-id=24282-39186&amp;t=Fv66oTxBBMgtAtuq-4">Breadcrumbs</a> now available in Figma</li>
<li><a href="https://www.figma.com/design/U2QpuSUXRTxbgG64Fzi9bu/%F0%9F%92%A0-NYS-Design-System?node-id=24027-10050&amp;t=9hHHEkhwWPA4QtUq-4">Tabs</a> now available as a “preview” version in Figma</li>
</ul>
<p><a href="https://github.com/mashyamumin">Mashya Mumin</a> designed her first component this sprint!</p>
<p><a href="https://github.com/ksorrentino">Kristin Sorrentino</a> tabbed to the tabs</p>
<h2>Bug fixes</h2>
<ul>
<li>Added more Web Test Runner tests</li>
<li>Unable to set null values to form components</li>
<li><code>&lt;nys-pagination&gt;</code> properly announces the current page</li>
<li>Bundle the CEM and token data into MCP server</li>
<li>Align <code>&lt;nys-datepicker&gt;</code> error message display</li>
<li><code>&lt;nys-dropdown&gt;</code> focus ring too persistent</li>
<li>First push to address ElementInternals standardization across all components</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a>, <a href="https://github.com/novacat35">Robert Chen</a>, and <a href="https://github.com/plasticmind">Jesse Gardner</a> fix broken things</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>none</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.17.0">See the full developer release notes for v.1.17.0 →</a></p>
]]></description>
      <content><![CDATA[<h2>“Grace” 🏔️</h2>
<p>We held a vote during our office hours this week, and the winning vote was for naming this release “Grace” after the 42<sup>nd</sup> highest peak in New York: Grace Peak. Grace Peak has an elevation of 4,012 ft (1,223 m).</p>
<p><a href="https://en.wikipedia.org/wiki/Grace_Peak">Learn more about Grace Peak.</a></p>
<h2><code>&lt;nys-breadcrumbs&gt;</code> now available</h2>
<p>The new <code>&lt;nys-breadcrumbs&gt;</code> component shows users their location within a site's structure and provides links to navigate back through parent pages. The new component provides a couple of customization options like size and background color. It should be placed near the main content of your web pages.</p>
<p><a href="https://designsystem.ny.gov/components/breadcrumbs">Read the full breadcrumbs documentation</a></p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-breadcrumbs>
  <ol>
    <li><a href="https://designsystem.ny.gov/">Home</a></li>
    <li><a href="https://designsystem.ny.gov/services">Services</a></li>
    <li><a href="https://designsystem.ny.gov/tickets">Ticket System</a></li>
    <li>Current Page</li>
  </ol>
</nys-breadcrumbs>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-breadcrumbs</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ol</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Home<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/services<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Services<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/tickets<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Ticket System<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span>Current Page<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ol</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-breadcrumbs</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/novacat35">Robert Chen</a> followed the trail of breadcrumbs</p>
<h2><code>&lt;nys-button&gt;</code> text variant now allows <code>prefixIcon</code> and <code>suffixIcon</code></h2>
<p>Our initial design of the <code>text</code> variant of the button restricted use of icons. We were presented with use cases for adding the icons to the text buttons, so we added the ability to use a <code>prefixIcon</code> or <code>suffixIcon</code> along with the text variant of the <code>&lt;nys-button&gt;</code>.</p>
<p><a href="https://designsystem.ny.gov/components/button/#icons">Read the full icon button documentation</a></p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-button variant="text" label="Review Component Proposals" href="https://github.com/ITS-HCD/nysds/discussions/categories/component-proposals" suffixIcon="open_in_new">
</nys-button>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-button</span>
  <span class="token attr-name">variant</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text<span class="token punctuation">"</span></span>
  <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Review Component Proposals<span class="token punctuation">"</span></span>
  <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://github.com/ITS-HCD/nysds/discussions/categories/component-proposals<span class="token punctuation">"</span></span>
  <span class="token attr-name">suffixIcon</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>open_in_new<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-button</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> is an icon</p>
<h2>Figma updates</h2>
<p>Today we’re launching the official version of the breadcrumbs component in our design library.</p>
<ul>
<li><a href="https://www.figma.com/design/U2QpuSUXRTxbgG64Fzi9bu/%F0%9F%92%A0-NYS-Design-System?node-id=24282-39186&amp;t=Fv66oTxBBMgtAtuq-4">Breadcrumbs</a> now available in Figma</li>
<li><a href="https://www.figma.com/design/U2QpuSUXRTxbgG64Fzi9bu/%F0%9F%92%A0-NYS-Design-System?node-id=24027-10050&amp;t=9hHHEkhwWPA4QtUq-4">Tabs</a> now available as a “preview” version in Figma</li>
</ul>
<p><a href="https://github.com/mashyamumin">Mashya Mumin</a> designed her first component this sprint!</p>
<p><a href="https://github.com/ksorrentino">Kristin Sorrentino</a> tabbed to the tabs</p>
<h2>Bug fixes</h2>
<ul>
<li>Added more Web Test Runner tests</li>
<li>Unable to set null values to form components</li>
<li><code>&lt;nys-pagination&gt;</code> properly announces the current page</li>
<li>Bundle the CEM and token data into MCP server</li>
<li>Align <code>&lt;nys-datepicker&gt;</code> error message display</li>
<li><code>&lt;nys-dropdown&gt;</code> focus ring too persistent</li>
<li>First push to address ElementInternals standardization across all components</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a>, <a href="https://github.com/novacat35">Robert Chen</a>, and <a href="https://github.com/plasticmind">Jesse Gardner</a> fix broken things</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>none</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.17.0">See the full developer release notes for v.1.17.0 →</a></p>
]]></content>
      <pubDate>Thu, 30 Apr 2026 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.17.0-release/</guid>
    </item>
    <item>
      <title>How CSS Variables Power the NYS Design System</title>
      <link>https://designsystem.ny.gov/about/updates/css-variables/</link>
      <description><![CDATA[<p>Consistency is one of the hardest problems in design. When dozens of teams and agencies each build their own products, even the most minor deviations, like different shades of red or slightly larger border radii, can fragment the user experience. We built the New York State Design System, in part, to solve these issues: to give teams a shared foundation that’s flexible enough for their needs, yet structured enough to remain consistent.</p>
<p>At the heart of that consistency are <strong>design tokens</strong>.  Design tokens are not just an abstract concept, they are named design decisions that map to specific values and can be reused across platforms. In the NYS Design System, tokens are actual defined values that live in the <nys-button label="@nysds/tokens" href="https://www.npmjs.com/package/@nysds/tokens" target="_blank" variant="text"></nys-button> package. One of their key strengths is that they are platform-agnostic: the same token definitions can be compiled down into different formats depending on the target platform, such as XML for Android or Swift for iOS. In our case, they are rendered into CSS custom properties (more commonly called CSS variables). These design tokens connect design intent and implementation, enabling the systematic definition, reuse, and override of values. In the NYS Design System, design tokens are created at a primitive level that then map to a semantic level above that. Then in the components themselves, these design tokens are applied to CSS custom properties (more commonly called variables) that have the same syntax structure of the tokens themselves.</p>
<p>Let’s unpack how that works.</p>
<h2>What Are CSS Variables?</h2>
<p>A CSS variable works like a variable in any programming language; it holds a value that is then used throughout the stylesheet. Instead of writing the same hex code or pixel value repeatedly, you assign it once and reference it with a name.</p>
<pre class="language-css"><code class="language-css"><span class="token selector">:root</span> <span class="token punctuation">{</span>
  <span class="token property">--nys-component-background-color</span><span class="token punctuation">:</span> #154973<span class="token punctuation">;</span>
<span class="token punctuation">}</span></code></pre>
<p>Then, anywhere you need that color:</p>
<pre class="language-css"><code class="language-css"><span class="token selector">.nys-component</span> <span class="token punctuation">{</span>
  <span class="token property">background-color</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--nys-component-background-color<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span></code></pre>
<p>Change the value once, and every element that uses it updates automatically. That’s the power of variables: <strong>one definition, infinite reuse</strong>. But CSS variables in our design system go beyond convenience: they establish a language for consistency and scalability.</p>
<h3>Primitive Tokens — The Foundation</h3>
<p>Primitive tokens are the building blocks of the design system. They are the raw values (hex codes, spacing units, font sizes, border radii) that everything else references.</p>
<p>For example, our color system is organized in <strong>ramps</strong>. Each color family has a scale, from light to dark, where smaller values represent a soft tint, while larger values represent a deep, saturated tone. This predictable pattern lets designers and developers discuss color consistently, and in a structured way. The same logic applies to spacing, typography, and radius.</p>
<img src="https://designsystem.ny.gov/assets/i/2026/css-vars-article/red-ramp.png" alt="Image of red color ramp used in the New York State Design System" width="800" />
<pre class="language-css"><code class="language-css">--nys-color-red-10
--nys-color-red-50
--nys-color-red-100
--nys-color-red-200
...
--nys-color-red-900</code></pre>
<p>These primitives are stable. Their names never change, even if the underlying values are updated over time. <code>--nys-color-red-100</code> might shift to meet new accessibility or brand needs, but the token itself will always exist as a constant in the system.</p>
<h3>Semantic Tokens — Meaning and Context</h3>
<p>On top of primitives are semantic tokens, which describe intent rather than raw value. This distinction matters: semantic tokens make it clear what to use where. Rather than leaving developers to guess whether to reach for <code>--nys-color-red-600</code> or <code>-nys-color-red-500</code>, semantic tokens communicate purpose directly in their name. Primitive tokens should only ever be referenced when mapping them to a semantic token. When codebases skip this layer and reference primitives directly, changes become painful: a single rebrand or accessibility adjustment means hunting down every raw value instead of updating one token.</p>
<p>Instead of referencing <code>--nys-color-red-600</code>, we use:</p>
<pre class="language-css"><code class="language-css"><span class="token property">--nys-color-danger</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--nys-color-red-600<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre>
<p>The semantic term &quot;danger,&quot; communicates the intent conveyed by the color it maps to. It tells anyone reading the code that &quot;this color indicates an error or destructive action.&quot;</p>
<p>If an agency decides their &quot;danger&quot; color shouldn’t be as intense, they can override just one variable:</p>
<pre class="language-css"><code class="language-css"><span class="token property">--nys-color-danger</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--nys-color-red-400<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre>
<p>Every instance of &quot;danger&quot; across their application is automatically updated. They don’t need to hunt through dozens of components or CSS files.</p>
<p>Semantic tokens abstract meaning from implementation, making the design system adaptable to different contexts (like accessibility needs or branding variations) without compromising structure.</p>
<h2>Public vs. Private Tokens</h2>
<p>Not every variable is intended for direct use or override. To keep things predictable, we use an underscore convention to distinguish between internal and public-facing tokens:</p>
<ul>
<li><code>--_nys-button-background-color</code>: internal (used inside the component)</li>
<li><code>--nys-button-background-color</code>: public (documented and safe to override)</li>
</ul>
<p>CSS doesn’t support private variables, so this convention helps our team organize and maintain the system. From a user perspective, you don’t need to worry about which is which—if a variable is safe to override, it will appear on the component’s documentation page under CSS Variables. Please note that most components will NOT have overridable variables, these public variables are rare and created intentionally to ensure a cohesive design system.</p>
<p>Internally, private tokens often map to their semantic or primitive version. Let’s look at the background color of <code>nys-button</code> and follow its token map:</p>
<pre class="language-css"><code class="language-css"><span class="token property">--_nys-button-background-color</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--nys-button-background-color<span class="token punctuation">,</span> <span class="token function">var</span><span class="token punctuation">(</span>--nys-color-theme<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre>
<img src="https://designsystem.ny.gov/assets/i/2026/css-vars-article/vars-path.png" alt="Image of how raw values map to useable tokens in the New York State Design System" />
<p>This means:</p>
<ul>
<li>If a public override exists, use it.</li>
<li>If not, fall back to the default color, in this scenario <code>--nys-color-theme</code>.</li>
</ul>
<p>That layering ensures reliability even when variables aren’t explicitly defined.</p>
<h3>Override Hierarchy and Theming</h3>
<p>One of the most significant advantages of this token structure is theming.</p>
<p>Agency groupings under the NYS umbrella often have distinct brand colors: Environmental uses green, Admin uses orange, Safety uses gray. Instead of rewriting styles, they simply override semantic tokens through the data-theme attribute. So while the default <code>--nys-color-theme</code> is set to <code>var(--nys-color-nys-blue-600)</code>, by setting <code>data-theme=&quot;admin&quot;</code> at the top most level of the project, <code>--nys-color-theme</code> will instead map to <code>var(--nys-color-admin-orange-700)</code>.</p>
<img src="https://designsystem.ny.gov/assets/i/2026/css-vars-article/theme-override-diag.png" alt="Image of admin color ramp overriding the default NYS theme in the New York State Design System" width="800" />
<p>All components referencing <code>--nys-color-theme</code> automatically adapt to use the proper color ramp of the set theme.
This design makes the New York State Design System scalable across diverse agencies while maintaining visual unity and predictable behavior.</p>
<h3>When (and Why) Overrides Inform the System</h3>
<p>When multiple teams consistently override the same token in the same way, it suggests a gap in the system.</p>
<p>For example, if several agencies keep overriding the <code>--nys-button-background-color</code> to the agency’s accent color, that’s valuable data. It tells us that an &quot;accent&quot; button might deserve to become an official variant. If you find your team doing this often, consider helping us (and ultimately you) by <nys-button variant="text" href="https://github.com/ITS-HCD/nysds/discussions/categories/component-proposals" target="_blank" label="submitting a component proposal" suffixIcon="open_in_new"></nys-button>
suggesting a new variant or enhancement.</p>
<p>In other words, overrides help the system evolve organically, guided by real-world use rather than guesswork.</p>
<h3>Balancing Flexibility and Control</h3>
<p>Design systems often struggle between two extremes:</p>
<ul>
<li>Too rigid: teams can’t adapt the components to their needs.</li>
<li>Too loose: every team customizes everything, and consistency collapses.</li>
</ul>
<p>CSS variables offer a middle ground. They allow overrides for legitimate edge cases without introducing dozens of one-off variants.</p>
<p>By creating public-facing CSS variables we are not encouraging teams to stray from the provided variants of our existing components, but, instead, we are providing a safe way for them to diverge in these edge-case scenarios where the existing options are not possible to implement.</p>
<h3>Naming Conventions and Readability</h3>
<p>One final principle: readability beats cleverness.</p>
<p>Every variable name in our design system maps directly to its CSS property name. For instance, the text color of a button maps to  <code>--_nys-button-color</code> rather than to <code>--_nys-button-text-color</code>.</p>
<p>This one-to-one mapping reduces cognitive load for engineers. No need to remember abbreviations or shorthand. You can look at the variable and instantly know which property it controls.</p>
<p>Modifiers (<code>--hover</code>, <code>--active</code>, etc.) extend that clarity to states.
Note: If you override <code>--nys-button-background-color</code>, remember to override the hover and active variants too. Otherwise, your hover state will revert to the default.</p>
<h2>Why This Matters</h2>
<p>CSS variables are the key to making our web components scalable, flexible, and maintainable.
Because the CSS variables used the shared vocabulary of the design tokens across the ecosystem, color, spacing, and typography mean the same thing in every product.</p>
<p>They allow:</p>
<ul>
<li><strong>Designers</strong> to define intent once and apply it everywhere.</li>
<li><strong>Developers</strong> to override safely within a structured system.</li>
<li><strong>Agencies</strong> to customize branding without rewriting components.</li>
<li><strong>The NYS Design System team</strong> to evolve the design language based on actual usage.</li>
</ul>
<p>This shared language is what turns our collection of components into a true design system.</p>
]]></description>
      <content><![CDATA[<p>Consistency is one of the hardest problems in design. When dozens of teams and agencies each build their own products, even the most minor deviations, like different shades of red or slightly larger border radii, can fragment the user experience. We built the New York State Design System, in part, to solve these issues: to give teams a shared foundation that’s flexible enough for their needs, yet structured enough to remain consistent.</p>
<p>At the heart of that consistency are <strong>design tokens</strong>.  Design tokens are not just an abstract concept, they are named design decisions that map to specific values and can be reused across platforms. In the NYS Design System, tokens are actual defined values that live in the <nys-button label="@nysds/tokens" href="https://www.npmjs.com/package/@nysds/tokens" target="_blank" variant="text"></nys-button> package. One of their key strengths is that they are platform-agnostic: the same token definitions can be compiled down into different formats depending on the target platform, such as XML for Android or Swift for iOS. In our case, they are rendered into CSS custom properties (more commonly called CSS variables). These design tokens connect design intent and implementation, enabling the systematic definition, reuse, and override of values. In the NYS Design System, design tokens are created at a primitive level that then map to a semantic level above that. Then in the components themselves, these design tokens are applied to CSS custom properties (more commonly called variables) that have the same syntax structure of the tokens themselves.</p>
<p>Let’s unpack how that works.</p>
<h2>What Are CSS Variables?</h2>
<p>A CSS variable works like a variable in any programming language; it holds a value that is then used throughout the stylesheet. Instead of writing the same hex code or pixel value repeatedly, you assign it once and reference it with a name.</p>
<pre class="language-css"><code class="language-css"><span class="token selector">:root</span> <span class="token punctuation">{</span>
  <span class="token property">--nys-component-background-color</span><span class="token punctuation">:</span> #154973<span class="token punctuation">;</span>
<span class="token punctuation">}</span></code></pre>
<p>Then, anywhere you need that color:</p>
<pre class="language-css"><code class="language-css"><span class="token selector">.nys-component</span> <span class="token punctuation">{</span>
  <span class="token property">background-color</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--nys-component-background-color<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span></code></pre>
<p>Change the value once, and every element that uses it updates automatically. That’s the power of variables: <strong>one definition, infinite reuse</strong>. But CSS variables in our design system go beyond convenience: they establish a language for consistency and scalability.</p>
<h3>Primitive Tokens — The Foundation</h3>
<p>Primitive tokens are the building blocks of the design system. They are the raw values (hex codes, spacing units, font sizes, border radii) that everything else references.</p>
<p>For example, our color system is organized in <strong>ramps</strong>. Each color family has a scale, from light to dark, where smaller values represent a soft tint, while larger values represent a deep, saturated tone. This predictable pattern lets designers and developers discuss color consistently, and in a structured way. The same logic applies to spacing, typography, and radius.</p>
<img src="https://designsystem.ny.gov/assets/i/2026/css-vars-article/red-ramp.png" alt="Image of red color ramp used in the New York State Design System" width="800" />
<pre class="language-css"><code class="language-css">--nys-color-red-10
--nys-color-red-50
--nys-color-red-100
--nys-color-red-200
...
--nys-color-red-900</code></pre>
<p>These primitives are stable. Their names never change, even if the underlying values are updated over time. <code>--nys-color-red-100</code> might shift to meet new accessibility or brand needs, but the token itself will always exist as a constant in the system.</p>
<h3>Semantic Tokens — Meaning and Context</h3>
<p>On top of primitives are semantic tokens, which describe intent rather than raw value. This distinction matters: semantic tokens make it clear what to use where. Rather than leaving developers to guess whether to reach for <code>--nys-color-red-600</code> or <code>-nys-color-red-500</code>, semantic tokens communicate purpose directly in their name. Primitive tokens should only ever be referenced when mapping them to a semantic token. When codebases skip this layer and reference primitives directly, changes become painful: a single rebrand or accessibility adjustment means hunting down every raw value instead of updating one token.</p>
<p>Instead of referencing <code>--nys-color-red-600</code>, we use:</p>
<pre class="language-css"><code class="language-css"><span class="token property">--nys-color-danger</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--nys-color-red-600<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre>
<p>The semantic term &quot;danger,&quot; communicates the intent conveyed by the color it maps to. It tells anyone reading the code that &quot;this color indicates an error or destructive action.&quot;</p>
<p>If an agency decides their &quot;danger&quot; color shouldn’t be as intense, they can override just one variable:</p>
<pre class="language-css"><code class="language-css"><span class="token property">--nys-color-danger</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--nys-color-red-400<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre>
<p>Every instance of &quot;danger&quot; across their application is automatically updated. They don’t need to hunt through dozens of components or CSS files.</p>
<p>Semantic tokens abstract meaning from implementation, making the design system adaptable to different contexts (like accessibility needs or branding variations) without compromising structure.</p>
<h2>Public vs. Private Tokens</h2>
<p>Not every variable is intended for direct use or override. To keep things predictable, we use an underscore convention to distinguish between internal and public-facing tokens:</p>
<ul>
<li><code>--_nys-button-background-color</code>: internal (used inside the component)</li>
<li><code>--nys-button-background-color</code>: public (documented and safe to override)</li>
</ul>
<p>CSS doesn’t support private variables, so this convention helps our team organize and maintain the system. From a user perspective, you don’t need to worry about which is which—if a variable is safe to override, it will appear on the component’s documentation page under CSS Variables. Please note that most components will NOT have overridable variables, these public variables are rare and created intentionally to ensure a cohesive design system.</p>
<p>Internally, private tokens often map to their semantic or primitive version. Let’s look at the background color of <code>nys-button</code> and follow its token map:</p>
<pre class="language-css"><code class="language-css"><span class="token property">--_nys-button-background-color</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--nys-button-background-color<span class="token punctuation">,</span> <span class="token function">var</span><span class="token punctuation">(</span>--nys-color-theme<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre>
<img src="https://designsystem.ny.gov/assets/i/2026/css-vars-article/vars-path.png" alt="Image of how raw values map to useable tokens in the New York State Design System" />
<p>This means:</p>
<ul>
<li>If a public override exists, use it.</li>
<li>If not, fall back to the default color, in this scenario <code>--nys-color-theme</code>.</li>
</ul>
<p>That layering ensures reliability even when variables aren’t explicitly defined.</p>
<h3>Override Hierarchy and Theming</h3>
<p>One of the most significant advantages of this token structure is theming.</p>
<p>Agency groupings under the NYS umbrella often have distinct brand colors: Environmental uses green, Admin uses orange, Safety uses gray. Instead of rewriting styles, they simply override semantic tokens through the data-theme attribute. So while the default <code>--nys-color-theme</code> is set to <code>var(--nys-color-nys-blue-600)</code>, by setting <code>data-theme=&quot;admin&quot;</code> at the top most level of the project, <code>--nys-color-theme</code> will instead map to <code>var(--nys-color-admin-orange-700)</code>.</p>
<img src="https://designsystem.ny.gov/assets/i/2026/css-vars-article/theme-override-diag.png" alt="Image of admin color ramp overriding the default NYS theme in the New York State Design System" width="800" />
<p>All components referencing <code>--nys-color-theme</code> automatically adapt to use the proper color ramp of the set theme.
This design makes the New York State Design System scalable across diverse agencies while maintaining visual unity and predictable behavior.</p>
<h3>When (and Why) Overrides Inform the System</h3>
<p>When multiple teams consistently override the same token in the same way, it suggests a gap in the system.</p>
<p>For example, if several agencies keep overriding the <code>--nys-button-background-color</code> to the agency’s accent color, that’s valuable data. It tells us that an &quot;accent&quot; button might deserve to become an official variant. If you find your team doing this often, consider helping us (and ultimately you) by <nys-button variant="text" href="https://github.com/ITS-HCD/nysds/discussions/categories/component-proposals" target="_blank" label="submitting a component proposal" suffixIcon="open_in_new"></nys-button>
suggesting a new variant or enhancement.</p>
<p>In other words, overrides help the system evolve organically, guided by real-world use rather than guesswork.</p>
<h3>Balancing Flexibility and Control</h3>
<p>Design systems often struggle between two extremes:</p>
<ul>
<li>Too rigid: teams can’t adapt the components to their needs.</li>
<li>Too loose: every team customizes everything, and consistency collapses.</li>
</ul>
<p>CSS variables offer a middle ground. They allow overrides for legitimate edge cases without introducing dozens of one-off variants.</p>
<p>By creating public-facing CSS variables we are not encouraging teams to stray from the provided variants of our existing components, but, instead, we are providing a safe way for them to diverge in these edge-case scenarios where the existing options are not possible to implement.</p>
<h3>Naming Conventions and Readability</h3>
<p>One final principle: readability beats cleverness.</p>
<p>Every variable name in our design system maps directly to its CSS property name. For instance, the text color of a button maps to  <code>--_nys-button-color</code> rather than to <code>--_nys-button-text-color</code>.</p>
<p>This one-to-one mapping reduces cognitive load for engineers. No need to remember abbreviations or shorthand. You can look at the variable and instantly know which property it controls.</p>
<p>Modifiers (<code>--hover</code>, <code>--active</code>, etc.) extend that clarity to states.
Note: If you override <code>--nys-button-background-color</code>, remember to override the hover and active variants too. Otherwise, your hover state will revert to the default.</p>
<h2>Why This Matters</h2>
<p>CSS variables are the key to making our web components scalable, flexible, and maintainable.
Because the CSS variables used the shared vocabulary of the design tokens across the ecosystem, color, spacing, and typography mean the same thing in every product.</p>
<p>They allow:</p>
<ul>
<li><strong>Designers</strong> to define intent once and apply it everywhere.</li>
<li><strong>Developers</strong> to override safely within a structured system.</li>
<li><strong>Agencies</strong> to customize branding without rewriting components.</li>
<li><strong>The NYS Design System team</strong> to evolve the design language based on actual usage.</li>
</ul>
<p>This shared language is what turns our collection of components into a true design system.</p>
]]></content>
      <pubDate>Tue, 21 Apr 2026 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/css-variables/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.16.1</title>
      <link>https://designsystem.ny.gov/about/updates/1.16.1-release/</link>
      <description><![CDATA[<h2><code>&lt;nys-datepicker&gt;</code> minDate and maxDate support</h2>
<p>We've added the ability to restrict selectable dates in the datepicker component. See it live in action below. Special thanks to <a href="https://github.com/sqrrl">@Sqrrl</a> for maintaining the base wc-datepicker component our nys-datepicker is based off of.
<a href="https://designsystem.ny.gov/components/datepicker/#restrict-selectable-dates">Read the minDate maxDate documentation</a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-datepicker label="Select a date" description="Only dates within April 4/5/2026 - 4/15/2026 are selectable" minDate="2026-04-05" maxDate="2026-04-15"></nys-datepicker>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-datepicker</span>
  <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Select a date<span class="token punctuation">"</span></span>
  <span class="token attr-name">description</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Only dates within April 4/5/2026 - 4/15/2026 are selectable<span class="token punctuation">"</span></span>
  <span class="token attr-name">minDate</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>2026-04-05<span class="token punctuation">"</span></span>
  <span class="token attr-name">maxDate</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>2026-04-15<span class="token punctuation">"</span></span>
<span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-datepicker</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<h2>Figma updates</h2>
<p>Today we’re launching the preview version of the breadcrumb and tab components in our design library.</p>
<ul>
<li><a href="https://www.figma.com/design/U2QpuSUXRTxbgG64Fzi9bu/%F0%9F%92%A0-NYS-Design-System?node-id=24282-39186&amp;t=fsl0niqeU3xSuzaQ-4">Breadcrumbs</a> now available in Figma</li>
<li><a href="https://www.figma.com/design/U2QpuSUXRTxbgG64Fzi9bu/%F0%9F%92%A0-NYS-Design-System?node-id=24027-9968&amp;t=fsl0niqeU3xSuzaQ-4">Tabs</a> now available in Figma</li>
</ul>
<p><a href="https://github.com/ksorrentino">Kristin Sorrentino</a> and <a href="https://github.com/mashyamumin">Mashya Mumin</a> are creating important components!</p>
<h2>Bug fixes</h2>
<ul>
<li><a href="https://github.com/ITS-HCD/nysds/issues/1451">BUG: <code>nys-video</code> min-width breaks out of mobile viewports</a></li>
<li>Update Storybook</li>
<li>Fix JSX errors</li>
<li>Simplify border-radius setup</li>
<li>Fix empty submission bug in <code>&lt;nys-combobox&gt;</code></li>
<li>Add CSS inverted border to button</li>
<li>Fix <code>&lt;nys-video&gt;</code> package contents</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a>, <a href="https://github.com/novacat35">Robert Chen</a>, and <a href="https://github.com/esteinborn">Eric Steinborn</a> fix broken things.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>none</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.16.1">See the full developer release notes for v.1.16.1 →</a></p>
]]></description>
      <content><![CDATA[<h2><code>&lt;nys-datepicker&gt;</code> minDate and maxDate support</h2>
<p>We've added the ability to restrict selectable dates in the datepicker component. See it live in action below. Special thanks to <a href="https://github.com/sqrrl">@Sqrrl</a> for maintaining the base wc-datepicker component our nys-datepicker is based off of.
<a href="https://designsystem.ny.gov/components/datepicker/#restrict-selectable-dates">Read the minDate maxDate documentation</a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-datepicker label="Select a date" description="Only dates within April 4/5/2026 - 4/15/2026 are selectable" minDate="2026-04-05" maxDate="2026-04-15"></nys-datepicker>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-datepicker</span>
  <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Select a date<span class="token punctuation">"</span></span>
  <span class="token attr-name">description</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Only dates within April 4/5/2026 - 4/15/2026 are selectable<span class="token punctuation">"</span></span>
  <span class="token attr-name">minDate</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>2026-04-05<span class="token punctuation">"</span></span>
  <span class="token attr-name">maxDate</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>2026-04-15<span class="token punctuation">"</span></span>
<span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-datepicker</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<h2>Figma updates</h2>
<p>Today we’re launching the preview version of the breadcrumb and tab components in our design library.</p>
<ul>
<li><a href="https://www.figma.com/design/U2QpuSUXRTxbgG64Fzi9bu/%F0%9F%92%A0-NYS-Design-System?node-id=24282-39186&amp;t=fsl0niqeU3xSuzaQ-4">Breadcrumbs</a> now available in Figma</li>
<li><a href="https://www.figma.com/design/U2QpuSUXRTxbgG64Fzi9bu/%F0%9F%92%A0-NYS-Design-System?node-id=24027-9968&amp;t=fsl0niqeU3xSuzaQ-4">Tabs</a> now available in Figma</li>
</ul>
<p><a href="https://github.com/ksorrentino">Kristin Sorrentino</a> and <a href="https://github.com/mashyamumin">Mashya Mumin</a> are creating important components!</p>
<h2>Bug fixes</h2>
<ul>
<li><a href="https://github.com/ITS-HCD/nysds/issues/1451">BUG: <code>nys-video</code> min-width breaks out of mobile viewports</a></li>
<li>Update Storybook</li>
<li>Fix JSX errors</li>
<li>Simplify border-radius setup</li>
<li>Fix empty submission bug in <code>&lt;nys-combobox&gt;</code></li>
<li>Add CSS inverted border to button</li>
<li>Fix <code>&lt;nys-video&gt;</code> package contents</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a>, <a href="https://github.com/novacat35">Robert Chen</a>, and <a href="https://github.com/esteinborn">Eric Steinborn</a> fix broken things.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>none</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.16.1">See the full developer release notes for v.1.16.1 →</a></p>
]]></content>
      <pubDate>Thu, 16 Apr 2026 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.16.1-release/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.16.0 “Algonquin”</title>
      <link>https://designsystem.ny.gov/about/updates/1.16.0-release/</link>
      <description><![CDATA[<h2>“Algonquin” 🏔️</h2>
<p>We held a vote during our office hours this week, and the winning vote was for naming this release “Algonquin” after the 2<sup>nd</sup> highest peak in New York: Algonquin Peak. Algonquin Peak has an elevation of 5,114 ft (1,558 m).</p>
<p><a href="https://en.wikipedia.org/wiki/Algonquin_Peak">Learn more about Algonquin Peak.</a></p>
<h2><code>&lt;nys-video&gt;</code> now available</h2>
<p>The new <code>&lt;nys-video&gt;</code> embeds a YouTube video with a clickable thumbnail and on-demand playback. The iframe loads only after interaction by default, helping improve page performance while keeping the experience responsive and accessible.</p>
<p><a href="https://designsystem.ny.gov/components/video">Read the full video documentation</a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-video videourl="https://www.youtube.com/watch?v=TBfFzt0150Q" titleText="IT'S a Tech Podcast, Episode 3: Human-Centered Design"></nys-video>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-video</span>
  <span class="token attr-name">videourl</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://www.youtube.com/watch?v=TBfFzt0150Q<span class="token punctuation">"</span></span>
  <span class="token attr-name">titleText</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>IT'S a Tech Podcast, Episode 3: Human-Centered Design<span class="token punctuation">"</span></span>
<span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-video</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/novacat35">Robert Chen</a> pressed play on this one.</p>
<h2><code>.nys-flex-gap</code> classes now available</h2>
<p>We've added flex gap configuration classes to the NYS DS styles package. You can use them in your HTML to set gap widths that fit your application needs.</p>
<p><a href="https://designsystem.ny.gov/foundations/utilities/flex/#flex-gap">Read the full flex-gap documentation</a>.</p>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> Flexed her muscles on this one.</p>
<h2>Figma updates</h2>
<p>Today we’re launching the official version of the video component in our design library.</p>
<ul>
<li><a href="https://www.figma.com/design/U2QpuSUXRTxbgG64Fzi9bu/%F0%9F%92%A0-NYS-Design-System?node-id=20897-9561&amp;t=Y3c7CNRjerknJQgj-4">Video Player</a> now available in Figma</li>
</ul>
<p><a href="https://github.com/ksorrentino">Kristin Sorrentino</a> is creating important components!</p>
<h2>Bug fixes</h2>
<ul>
<li><code>&lt;nys-dropdownmenu&gt;</code> in v1.15.0 had z-index issues. They have been resolved in this release.</li>
<li><code>maxLength</code> fixed in <code>&lt;nys-textinput&gt;</code></li>
<li>React support has expanded to add react wrappers and JSX definitions for React-like</li>
<li>Dispatch events now bubble up and are composed</li>
<li>Project build time reduced significantly</li>
<li>Fixed table sort event not firing</li>
<li>Globalheader no longer scheduling updates</li>
<li>Fixes to build scripts</li>
<li>Focus and logic fixes for <code>&lt;nys-checkboxgroup&gt;</code></li>
<li>Removed extraneous getButtonElement() function from <code>&lt;nys-modal&gt;</code></li>
<li>Icon alignment fixes</li>
<li>MCP server fixes</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a>, <a href="https://github.com/novacat35">Robert Chen</a>,  <a href="https://github.com/esteinborn">Eric Steinborn</a>, and <a href="https://github.com/plasticmind">Jesse Gardner</a> fix broken things.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li><a href="https://github.com/ITS-HCD/nysds/issues/1451">BUG: <code>nys-video</code> min-width breaks out of mobile viewports</a></li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.16.0">See the full developer release notes for v.1.16.0 →</a></p>
]]></description>
      <content><![CDATA[<h2>“Algonquin” 🏔️</h2>
<p>We held a vote during our office hours this week, and the winning vote was for naming this release “Algonquin” after the 2<sup>nd</sup> highest peak in New York: Algonquin Peak. Algonquin Peak has an elevation of 5,114 ft (1,558 m).</p>
<p><a href="https://en.wikipedia.org/wiki/Algonquin_Peak">Learn more about Algonquin Peak.</a></p>
<h2><code>&lt;nys-video&gt;</code> now available</h2>
<p>The new <code>&lt;nys-video&gt;</code> embeds a YouTube video with a clickable thumbnail and on-demand playback. The iframe loads only after interaction by default, helping improve page performance while keeping the experience responsive and accessible.</p>
<p><a href="https://designsystem.ny.gov/components/video">Read the full video documentation</a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-video videourl="https://www.youtube.com/watch?v=TBfFzt0150Q" titleText="IT'S a Tech Podcast, Episode 3: Human-Centered Design"></nys-video>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-video</span>
  <span class="token attr-name">videourl</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://www.youtube.com/watch?v=TBfFzt0150Q<span class="token punctuation">"</span></span>
  <span class="token attr-name">titleText</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>IT'S a Tech Podcast, Episode 3: Human-Centered Design<span class="token punctuation">"</span></span>
<span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-video</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/novacat35">Robert Chen</a> pressed play on this one.</p>
<h2><code>.nys-flex-gap</code> classes now available</h2>
<p>We've added flex gap configuration classes to the NYS DS styles package. You can use them in your HTML to set gap widths that fit your application needs.</p>
<p><a href="https://designsystem.ny.gov/foundations/utilities/flex/#flex-gap">Read the full flex-gap documentation</a>.</p>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> Flexed her muscles on this one.</p>
<h2>Figma updates</h2>
<p>Today we’re launching the official version of the video component in our design library.</p>
<ul>
<li><a href="https://www.figma.com/design/U2QpuSUXRTxbgG64Fzi9bu/%F0%9F%92%A0-NYS-Design-System?node-id=20897-9561&amp;t=Y3c7CNRjerknJQgj-4">Video Player</a> now available in Figma</li>
</ul>
<p><a href="https://github.com/ksorrentino">Kristin Sorrentino</a> is creating important components!</p>
<h2>Bug fixes</h2>
<ul>
<li><code>&lt;nys-dropdownmenu&gt;</code> in v1.15.0 had z-index issues. They have been resolved in this release.</li>
<li><code>maxLength</code> fixed in <code>&lt;nys-textinput&gt;</code></li>
<li>React support has expanded to add react wrappers and JSX definitions for React-like</li>
<li>Dispatch events now bubble up and are composed</li>
<li>Project build time reduced significantly</li>
<li>Fixed table sort event not firing</li>
<li>Globalheader no longer scheduling updates</li>
<li>Fixes to build scripts</li>
<li>Focus and logic fixes for <code>&lt;nys-checkboxgroup&gt;</code></li>
<li>Removed extraneous getButtonElement() function from <code>&lt;nys-modal&gt;</code></li>
<li>Icon alignment fixes</li>
<li>MCP server fixes</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a>, <a href="https://github.com/novacat35">Robert Chen</a>,  <a href="https://github.com/esteinborn">Eric Steinborn</a>, and <a href="https://github.com/plasticmind">Jesse Gardner</a> fix broken things.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li><a href="https://github.com/ITS-HCD/nysds/issues/1451">BUG: <code>nys-video</code> min-width breaks out of mobile viewports</a></li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.16.0">See the full developer release notes for v.1.16.0 →</a></p>
]]></content>
      <pubDate>Thu, 02 Apr 2026 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.16.0-release/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.15.0 “Nye”</title>
      <link>https://designsystem.ny.gov/about/updates/1.15.0-release/</link>
      <description><![CDATA[<h2>“Nye” 🏔️</h2>
<p>This is our 35<sup>th</sup> release of the New York State Design System. Nye is the 45<sup>th</sup> highest peak in New York, with an elevation of 3,895 ft (1,187 m)!</p>
<p><a href="https://en.wikipedia.org/wiki/Nye_Mountain">Learn more about Nye Mountain.</a></p>
<h2><code>&lt;nys-combobox&gt;</code> now available</h2>
<p>The new <code>&lt;nys-combobox&gt;</code> combines a text box with a dropdown list, allowing users to either select a predefined option or type to select a value from the list.</p>
<p><a href="https://designsystem.ny.gov/components/combobox">Read the full combobox documentation</a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-combobox label="Choose a county" id="my-combobox" width="lg">
  <option value="albany">Albany</option>
  <option value="allegany">Allegany</option>
  <option value="bronx">Bronx</option>
  <option value="broome">Broome</option>
  <option value="cattaraugus">Cattaraugus</option>
  <option value="cayuga">Cayuga</option>
  <option value="chautauqua">Chautauqua</option>
  <option value="chemung">Chemung</option>
  <option value="chenango">Chenango</option>
  <option value="clinton">Clinton</option>
  <option value="columbia">Columbia</option>
  <option value="cortland">Cortland</option>
  <option value="delaware">Delaware</option>
  <option value="dutchess">Dutchess</option>
  <option value="erie">Erie</option>
  <option value="essex">Essex</option>
  <option value="franklin">Franklin</option>
  <option value="fulton">Fulton</option>
  <option value="genesee">Genesee</option>
  <option value="greene">Greene</option>
  <option value="hamilton">Hamilton</option>
  <option value="herkimer">Herkimer</option>
  <option value="jefferson">Jefferson</option>
  <option value="kings">Kings</option>
  <option value="lewis">Lewis</option>
  <option value="livingston">Livingston</option>
  <option value="madison">Madison</option>
  <option value="monroe">Monroe</option>
  <option value="montgomery">Montgomery</option>
  <option value="nassau">Nassau</option>
  <option value="new-york">New York</option>
  <option value="niagara">Niagara</option>
  <option value="oneida">Oneida</option>
  <option value="onondaga">Onondaga</option>
  <option value="ontario">Ontario</option>
  <option value="orange">Orange</option>
  <option value="orleans">Orleans</option>
  <option value="oswego">Oswego</option>
  <option value="otsego">Otsego</option>
  <option value="putnam">Putnam</option>
  <option value="queens">Queens</option>
  <option value="rensselaer">Rensselaer</option>
  <option value="richmond">Richmond</option>
  <option value="rockland">Rockland</option>
  <option value="st-lawrence">St. Lawrence</option>
  <option value="saratoga">Saratoga</option>
  <option value="schenectady">Schenectady</option>
  <option value="schoharie">Schoharie</option>
  <option value="schuyler">Schuyler</option>
  <option value="seneca">Seneca</option>
  <option value="steuben">Steuben</option>
  <option value="suffolk">Suffolk</option>
  <option value="sullivan">Sullivan</option>
  <option value="tioga">Tioga</option>
  <option value="tompkins">Tompkins</option>
  <option value="ulster">Ulster</option>
  <option value="warren">Warren</option>
  <option value="washington">Washington</option>
  <option value="wayne">Wayne</option>
  <option value="westchester">Westchester</option>
  <option value="wyoming">Wyoming</option>
  <option value="yates">Yates</option>
</nys-combobox>
  </div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-combobox</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Choose a county<span class="token punctuation">"</span></span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>my-combobox<span class="token punctuation">'</span></span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>albany<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Albany<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>allegany<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Allegany<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>bronx<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Bronx<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>broome<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Broome<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
  ...rest of options...
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-combobox</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> combo'd these boxes.</p>
<h2><code>&lt;nys-dropdownmenu&gt;</code> now available</h2>
<p>The new <code>&lt;nys-dropdownmenu&gt;</code> is a highly rquested feature for the NYS Design System. Featuring a trigger element, and dropdown content you can either assign URL's to the dropdown items, or listen to their JavaScript events to fire off a script. Give it a try today in the <a href="https://designsystem.ny.gov/components/globalheader"><code>&lt;nys-globalheader&gt;</code></a>.</p>
<p><a href="https://designsystem.ny.gov/components/dropdownmenu">Read the full dropdownmenu documentation</a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-button id="my-trigger-id" label="Dropdown Menu"></nys-button>
<nys-dropdownmenu id="my-dropdownmenu" for="my-trigger-id">
  <nys-dropdownmenuitem label="Profile" href="/profile"></nys-dropdownmenuitem>
  <nys-dropdownmenuitem label="Repositories & Github Pages" href="/repos"></nys-dropdownmenuitem>
  <nys-dropdownmenuitem label="Organizations" href="/organizations"></nys-dropdownmenuitem>
  <nys-dropdownmenuitem label="Sign out" href="/logout"></nys-dropdownmenuitem>
</nys-dropdownmenu>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-button</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>my-trigger-id<span class="token punctuation">"</span></span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Dropdown Menu<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-button</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-dropdownmenu</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>my-dropdownmenu<span class="token punctuation">"</span></span> <span class="token attr-name">for</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>my-trigger-id<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-dropdownmenuitem</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Profile<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/profile<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-dropdownmenuitem</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-dropdownmenuitem</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Repositories &amp; Github Pages<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/repos<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-dropdownmenuitem</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-dropdownmenuitem</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Organizations<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/organizations<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-dropdownmenuitem</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-dropdownmenuitem</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Sign out<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/logout<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-dropdownmenuitem</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-dropdownmenu</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/novacat35">Robert Chen</a> dropped this hot new component!</p>
<h2>Custom language list in <code>&lt;nys-unavheader&gt;</code></h2>
<p>Different agencies solve the multi-lingual issue in different ways. Initially the unavheader component only supported specifically formatted URLs with subdomains for each language. The latest update to <code>&lt;nys-unavheader&gt;</code> allows you to customize the language list in the &quot;translate&quot; dropdown.</p>
<p><a href="https://designsystem.ny.gov/components/unav-header/#custom-language-endpoints">Read the full custom language endpoint documentation</a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-unavheader id="my-header" hideSearch=""></nys-unavheader>
<script>
  const header = document.querySelector('#my-header');
  header.languages = [
    { code: 'en', label: 'Custom' },
    { code: 'es', label: 'Language' , url: '?lang=es'},
    { code: 'fr', label: 'Support', url: '?lang=fr'},
    { code: 'fr', label: 'in v1.15.0', url: '?lang=js'},
  ];
</script>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-unavheader</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>my-header<span class="token punctuation">"</span></span> <span class="token attr-name">hideSearch</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-unavheader</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">></span></span><span class="token script"><span class="token language-javascript">
  <span class="token keyword">const</span> header <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">querySelector</span><span class="token punctuation">(</span><span class="token string">'#my-header'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  header<span class="token punctuation">.</span>languages <span class="token operator">=</span> <span class="token punctuation">[</span>
    <span class="token punctuation">{</span> <span class="token literal-property property">code</span><span class="token operator">:</span> <span class="token string">'en'</span><span class="token punctuation">,</span> <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token string">'Custom'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
    <span class="token punctuation">{</span> <span class="token literal-property property">code</span><span class="token operator">:</span> <span class="token string">'es'</span><span class="token punctuation">,</span> <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token string">'Language'</span> <span class="token punctuation">,</span> <span class="token literal-property property">url</span><span class="token operator">:</span> <span class="token string">'?lang=es'</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
    <span class="token punctuation">{</span> <span class="token literal-property property">code</span><span class="token operator">:</span> <span class="token string">'fr'</span><span class="token punctuation">,</span> <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token string">'Support'</span><span class="token punctuation">,</span> <span class="token literal-property property">url</span><span class="token operator">:</span> <span class="token string">'?lang=fr'</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
    <span class="token punctuation">{</span> <span class="token literal-property property">code</span><span class="token operator">:</span> <span class="token string">'fr'</span><span class="token punctuation">,</span> <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token string">'in v1.15.0'</span><span class="token punctuation">,</span> <span class="token literal-property property">url</span><span class="token operator">:</span> <span class="token string">'?lang=js'</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
  <span class="token punctuation">]</span><span class="token punctuation">;</span>
</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> customized the header!</p>
<h2>Three new icons available:</h2>
<p>Check out the new icons in <code>&lt;nys-icon&gt;</code>: <code>filter_list</code>, <code>filter_alt</code>, and <code>sort</code> are now available for use!</p>
<p><a href="https://designsystem.ny.gov/components/icon">View the full icon list</a>.</p>
<p><nys-icon name="filter_list" size="4xl"></nys-icon>
<nys-icon name="filter_alt" size="4xl"></nys-icon>
<nys-icon name="sort" size="4xl"></nys-icon></p>
<p><a href="https://github.com/novacat35">Robert Chen</a> sorted this out!</p>
<h2>Figma updates</h2>
<p>Today we’re launching the official versions of our new combobox and dropdown components in our design library.</p>
<ul>
<li><strong><a href="https://www.figma.com/design/U2QpuSUXRTxbgG64Fzi9bu/%F0%9F%92%A0-NYS-Design-System?node-id=17435-37173&amp;t=P5qCmlyHYP3OBj3Y-4">Combobox</a></strong> - Give your users a type-ahead list of values to search and select</li>
<li><strong><a href="https://www.figma.com/design/U2QpuSUXRTxbgG64Fzi9bu/%F0%9F%92%A0-NYS-Design-System?node-id=19283-19719&amp;t=P5qCmlyHYP3OBj3Y-4">Dropdown</a></strong> - A trigger with a dropdown attached to it</li>
<li><code>Video Player</code> now available in Figma</li>
</ul>
<p><a href="https://github.com/ksorrentino">Kristin Sorrentino</a> is creating important components!</p>
<h2>Bug fixes</h2>
<ul>
<li>Fix form field ability to be focused programatically</li>
<li>Dispatch unique events for both <code>&lt;nys-checkbox&gt;</code> and <code>&lt;nys-radiobutton&gt;</code> “other” fields</li>
<li>Fixed buttons that were taking up too much horizontal space in the DOM</li>
<li>De-duplicate the build script to only build each component once</li>
<li>Re-apply version numbers to build JS and CSS files</li>
<li>Fixed Sass errors in utility scripts</li>
<li><code>&lt;nys-radiobutton&gt;</code> and <code>&lt;nys-checkbox&gt;</code> with no label no longer prints &quot;false&quot;</li>
<li>Dispatch an input event when typing in <code>&lt;nys-datepicker&gt;</code></li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a>, <a href="https://github.com/novacat35">Robert Chen</a>, and <a href="https://github.com/esteinborn">Eric Steinborn</a> fix broken things.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li><code>&lt;nys-dropdownmenu&gt;</code> in v1.15.0 has z-index issues. They have been resolved in a hotfix, but will not be released until next release.</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.15.0">See the full developer release notes for v.1.15.0 →</a></p>
]]></description>
      <content><![CDATA[<h2>“Nye” 🏔️</h2>
<p>This is our 35<sup>th</sup> release of the New York State Design System. Nye is the 45<sup>th</sup> highest peak in New York, with an elevation of 3,895 ft (1,187 m)!</p>
<p><a href="https://en.wikipedia.org/wiki/Nye_Mountain">Learn more about Nye Mountain.</a></p>
<h2><code>&lt;nys-combobox&gt;</code> now available</h2>
<p>The new <code>&lt;nys-combobox&gt;</code> combines a text box with a dropdown list, allowing users to either select a predefined option or type to select a value from the list.</p>
<p><a href="https://designsystem.ny.gov/components/combobox">Read the full combobox documentation</a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-combobox label="Choose a county" id="my-combobox" width="lg">
  <option value="albany">Albany</option>
  <option value="allegany">Allegany</option>
  <option value="bronx">Bronx</option>
  <option value="broome">Broome</option>
  <option value="cattaraugus">Cattaraugus</option>
  <option value="cayuga">Cayuga</option>
  <option value="chautauqua">Chautauqua</option>
  <option value="chemung">Chemung</option>
  <option value="chenango">Chenango</option>
  <option value="clinton">Clinton</option>
  <option value="columbia">Columbia</option>
  <option value="cortland">Cortland</option>
  <option value="delaware">Delaware</option>
  <option value="dutchess">Dutchess</option>
  <option value="erie">Erie</option>
  <option value="essex">Essex</option>
  <option value="franklin">Franklin</option>
  <option value="fulton">Fulton</option>
  <option value="genesee">Genesee</option>
  <option value="greene">Greene</option>
  <option value="hamilton">Hamilton</option>
  <option value="herkimer">Herkimer</option>
  <option value="jefferson">Jefferson</option>
  <option value="kings">Kings</option>
  <option value="lewis">Lewis</option>
  <option value="livingston">Livingston</option>
  <option value="madison">Madison</option>
  <option value="monroe">Monroe</option>
  <option value="montgomery">Montgomery</option>
  <option value="nassau">Nassau</option>
  <option value="new-york">New York</option>
  <option value="niagara">Niagara</option>
  <option value="oneida">Oneida</option>
  <option value="onondaga">Onondaga</option>
  <option value="ontario">Ontario</option>
  <option value="orange">Orange</option>
  <option value="orleans">Orleans</option>
  <option value="oswego">Oswego</option>
  <option value="otsego">Otsego</option>
  <option value="putnam">Putnam</option>
  <option value="queens">Queens</option>
  <option value="rensselaer">Rensselaer</option>
  <option value="richmond">Richmond</option>
  <option value="rockland">Rockland</option>
  <option value="st-lawrence">St. Lawrence</option>
  <option value="saratoga">Saratoga</option>
  <option value="schenectady">Schenectady</option>
  <option value="schoharie">Schoharie</option>
  <option value="schuyler">Schuyler</option>
  <option value="seneca">Seneca</option>
  <option value="steuben">Steuben</option>
  <option value="suffolk">Suffolk</option>
  <option value="sullivan">Sullivan</option>
  <option value="tioga">Tioga</option>
  <option value="tompkins">Tompkins</option>
  <option value="ulster">Ulster</option>
  <option value="warren">Warren</option>
  <option value="washington">Washington</option>
  <option value="wayne">Wayne</option>
  <option value="westchester">Westchester</option>
  <option value="wyoming">Wyoming</option>
  <option value="yates">Yates</option>
</nys-combobox>
  </div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-combobox</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Choose a county<span class="token punctuation">"</span></span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>my-combobox<span class="token punctuation">'</span></span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>albany<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Albany<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>allegany<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Allegany<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>bronx<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Bronx<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>broome<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Broome<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
  ...rest of options...
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-combobox</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> combo'd these boxes.</p>
<h2><code>&lt;nys-dropdownmenu&gt;</code> now available</h2>
<p>The new <code>&lt;nys-dropdownmenu&gt;</code> is a highly rquested feature for the NYS Design System. Featuring a trigger element, and dropdown content you can either assign URL's to the dropdown items, or listen to their JavaScript events to fire off a script. Give it a try today in the <a href="https://designsystem.ny.gov/components/globalheader"><code>&lt;nys-globalheader&gt;</code></a>.</p>
<p><a href="https://designsystem.ny.gov/components/dropdownmenu">Read the full dropdownmenu documentation</a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-button id="my-trigger-id" label="Dropdown Menu"></nys-button>
<nys-dropdownmenu id="my-dropdownmenu" for="my-trigger-id">
  <nys-dropdownmenuitem label="Profile" href="/profile"></nys-dropdownmenuitem>
  <nys-dropdownmenuitem label="Repositories & Github Pages" href="/repos"></nys-dropdownmenuitem>
  <nys-dropdownmenuitem label="Organizations" href="/organizations"></nys-dropdownmenuitem>
  <nys-dropdownmenuitem label="Sign out" href="/logout"></nys-dropdownmenuitem>
</nys-dropdownmenu>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-button</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>my-trigger-id<span class="token punctuation">"</span></span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Dropdown Menu<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-button</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-dropdownmenu</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>my-dropdownmenu<span class="token punctuation">"</span></span> <span class="token attr-name">for</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>my-trigger-id<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-dropdownmenuitem</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Profile<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/profile<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-dropdownmenuitem</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-dropdownmenuitem</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Repositories &amp; Github Pages<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/repos<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-dropdownmenuitem</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-dropdownmenuitem</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Organizations<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/organizations<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-dropdownmenuitem</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-dropdownmenuitem</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Sign out<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/logout<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-dropdownmenuitem</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-dropdownmenu</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/novacat35">Robert Chen</a> dropped this hot new component!</p>
<h2>Custom language list in <code>&lt;nys-unavheader&gt;</code></h2>
<p>Different agencies solve the multi-lingual issue in different ways. Initially the unavheader component only supported specifically formatted URLs with subdomains for each language. The latest update to <code>&lt;nys-unavheader&gt;</code> allows you to customize the language list in the &quot;translate&quot; dropdown.</p>
<p><a href="https://designsystem.ny.gov/components/unav-header/#custom-language-endpoints">Read the full custom language endpoint documentation</a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-unavheader id="my-header" hideSearch=""></nys-unavheader>
<script>
  const header = document.querySelector('#my-header');
  header.languages = [
    { code: 'en', label: 'Custom' },
    { code: 'es', label: 'Language' , url: '?lang=es'},
    { code: 'fr', label: 'Support', url: '?lang=fr'},
    { code: 'fr', label: 'in v1.15.0', url: '?lang=js'},
  ];
</script>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-unavheader</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>my-header<span class="token punctuation">"</span></span> <span class="token attr-name">hideSearch</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-unavheader</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">></span></span><span class="token script"><span class="token language-javascript">
  <span class="token keyword">const</span> header <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">querySelector</span><span class="token punctuation">(</span><span class="token string">'#my-header'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  header<span class="token punctuation">.</span>languages <span class="token operator">=</span> <span class="token punctuation">[</span>
    <span class="token punctuation">{</span> <span class="token literal-property property">code</span><span class="token operator">:</span> <span class="token string">'en'</span><span class="token punctuation">,</span> <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token string">'Custom'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
    <span class="token punctuation">{</span> <span class="token literal-property property">code</span><span class="token operator">:</span> <span class="token string">'es'</span><span class="token punctuation">,</span> <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token string">'Language'</span> <span class="token punctuation">,</span> <span class="token literal-property property">url</span><span class="token operator">:</span> <span class="token string">'?lang=es'</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
    <span class="token punctuation">{</span> <span class="token literal-property property">code</span><span class="token operator">:</span> <span class="token string">'fr'</span><span class="token punctuation">,</span> <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token string">'Support'</span><span class="token punctuation">,</span> <span class="token literal-property property">url</span><span class="token operator">:</span> <span class="token string">'?lang=fr'</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
    <span class="token punctuation">{</span> <span class="token literal-property property">code</span><span class="token operator">:</span> <span class="token string">'fr'</span><span class="token punctuation">,</span> <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token string">'in v1.15.0'</span><span class="token punctuation">,</span> <span class="token literal-property property">url</span><span class="token operator">:</span> <span class="token string">'?lang=js'</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
  <span class="token punctuation">]</span><span class="token punctuation">;</span>
</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> customized the header!</p>
<h2>Three new icons available:</h2>
<p>Check out the new icons in <code>&lt;nys-icon&gt;</code>: <code>filter_list</code>, <code>filter_alt</code>, and <code>sort</code> are now available for use!</p>
<p><a href="https://designsystem.ny.gov/components/icon">View the full icon list</a>.</p>
<p><nys-icon name="filter_list" size="4xl"></nys-icon>
<nys-icon name="filter_alt" size="4xl"></nys-icon>
<nys-icon name="sort" size="4xl"></nys-icon></p>
<p><a href="https://github.com/novacat35">Robert Chen</a> sorted this out!</p>
<h2>Figma updates</h2>
<p>Today we’re launching the official versions of our new combobox and dropdown components in our design library.</p>
<ul>
<li><strong><a href="https://www.figma.com/design/U2QpuSUXRTxbgG64Fzi9bu/%F0%9F%92%A0-NYS-Design-System?node-id=17435-37173&amp;t=P5qCmlyHYP3OBj3Y-4">Combobox</a></strong> - Give your users a type-ahead list of values to search and select</li>
<li><strong><a href="https://www.figma.com/design/U2QpuSUXRTxbgG64Fzi9bu/%F0%9F%92%A0-NYS-Design-System?node-id=19283-19719&amp;t=P5qCmlyHYP3OBj3Y-4">Dropdown</a></strong> - A trigger with a dropdown attached to it</li>
<li><code>Video Player</code> now available in Figma</li>
</ul>
<p><a href="https://github.com/ksorrentino">Kristin Sorrentino</a> is creating important components!</p>
<h2>Bug fixes</h2>
<ul>
<li>Fix form field ability to be focused programatically</li>
<li>Dispatch unique events for both <code>&lt;nys-checkbox&gt;</code> and <code>&lt;nys-radiobutton&gt;</code> “other” fields</li>
<li>Fixed buttons that were taking up too much horizontal space in the DOM</li>
<li>De-duplicate the build script to only build each component once</li>
<li>Re-apply version numbers to build JS and CSS files</li>
<li>Fixed Sass errors in utility scripts</li>
<li><code>&lt;nys-radiobutton&gt;</code> and <code>&lt;nys-checkbox&gt;</code> with no label no longer prints &quot;false&quot;</li>
<li>Dispatch an input event when typing in <code>&lt;nys-datepicker&gt;</code></li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a>, <a href="https://github.com/novacat35">Robert Chen</a>, and <a href="https://github.com/esteinborn">Eric Steinborn</a> fix broken things.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li><code>&lt;nys-dropdownmenu&gt;</code> in v1.15.0 has z-index issues. They have been resolved in a hotfix, but will not be released until next release.</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.15.0">See the full developer release notes for v.1.15.0 →</a></p>
]]></content>
      <pubDate>Fri, 06 Mar 2026 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.15.0-release/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.14.0 “Marcy”</title>
      <link>https://designsystem.ny.gov/about/updates/1.14.0-release/</link>
      <description><![CDATA[<h2>Why “Marcy?” 🏔️</h2>
<p>Mount Marcy is huge. This release is a huge milestone for us too. This is our <a href="https://designsystem.ny.gov/about/updates/1.14.0-release/">one year anniversary</a> of the 1.0 release of the NYS Design System, so we figured we'd go with the biggest mountain around! Marcy is the highest peak in New York, with an elevation of 5,343.1 ft (1,628.6 m)!</p>
<p><a href="https://en.wikipedia.org/wiki/Mount_Marcy">Learn more about Mount Marcy.</a></p>
<h2>New approach to agency themes</h2>
<p>New agency theme files have been added back to the <code>@nysds/styles</code> package. They are no longer minified so they are easier to read. To get the new agency themes to work, you'll need to either link to the separate file, or add a data-theme attribute to your body or HTML tags.</p>
<p>There are now three ways to apply agency themes to your apps and sites:</p>
<div class="code-preview-container">
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_down" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container expanded">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html">1. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>html</span> <span class="token attr-name">lang</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>en<span class="token punctuation">"</span></span> <span class="token attr-name">data-theme</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>admin<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
2. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>link</span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>stylesheet<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>theme-admin.css<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
3. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>body</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>nys-theme-admin<span class="token punctuation">"</span></span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/plasticmind">Jesse Gardner</a> and <a href="https://github.com/esteinborn">Eric Steinborn</a> are stylish.</p>
<h2>Customize the <code>&lt;nys-accordion&gt;</code></h2>
<p>Based off a contribution from <a href="https://github.com/brianmiller86">Brian Miller</a> (<a href="https://github.com/ITS-HCD/nysds/discussions/1270">in discussion #1270</a>) we realized that in some instances you may want an accordion's content to expand the full width of a screen. Additionally, we have provided a set of new css variables which can be overridden to set a max length for accordion content, and to color the accordion headings. <a href="https://designsystem.ny.gov/components/accordion/">Read the accordion documentation</a>.</p>
<style>
  :root {
    --nys-accordion-background-color--header: var(--nys-color-theme-weak);
    --nys-accordion-background-color--header--hover: var(--nys-color-theme-weaker);
    --nys-accordion-content-max-width: 150ch;
  }
</style>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<style>
  :root {
    --nys-accordion-background-color--header: var(--nys-color-theme-weak);
    --nys-accordion-background-color--header--hover: var(--nys-color-theme-weaker);
    --nys-accordion-content-max-width: 150ch;
  }
</style>
<nys-accordion>
  <nys-accordionitem id="accordionId1" heading="How do I renew my passport or apply for a new one?" expanded="">
    <p>
      You can apply for or renew a U.S. passport through the U.S. Department
      of State. Some renewals can be done by mail.
    </p>
    <div>
      <a href="https://www.ny.gov/" target="_blank">Check your registration</a>
      <a href="https://www.ny.gov/" target="_blank">Fill out application</a>
    </div>
  </nys-accordionitem>
  <nys-accordionitem id="accordionId2" heading="How can I find out if I’m registered to vote?">
    <p>You can check your registration status, update your information, or find out how to register through the National Association of Secretaries of State.</p>
  </nys-accordionitem>
</nys-accordion>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>style</span><span class="token punctuation">></span></span><span class="token style"><span class="token language-css">
  <span class="token selector">:root</span> <span class="token punctuation">{</span>
    <span class="token property">--nys-accordion-background-color--header</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--nys-color-theme-weak<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token property">--nys-accordion-background-color--header--hover</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--nys-color-theme-weaker<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token property">--nys-accordion-content-max-width</span><span class="token punctuation">:</span> 150ch<span class="token punctuation">;</span>
  <span class="token punctuation">}</span>
</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>style</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-accordion</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-accordionitem</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>accordionId1<span class="token punctuation">"</span></span> <span class="token attr-name">heading</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>How do I renew my passport or apply for a new one?<span class="token punctuation">"</span></span> <span class="token attr-name">expanded</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">></span></span>
      You can apply for or renew a U.S. passport through the U.S. Department
      of State. Some renewals can be done by mail.
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://www.ny.gov<span class="token punctuation">"</span></span> <span class="token attr-name">target</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>_blank<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Check your registration<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://www.ny.gov<span class="token punctuation">"</span></span> <span class="token attr-name">target</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>_blank<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Fill out application<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-accordionitem</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-accordionitem</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>accordionId2<span class="token punctuation">"</span></span> <span class="token attr-name">heading</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>How can I find out if I’m registered to vote?<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">></span></span>You can check your registration status, update your information, or find out how to register through the National Association of Secretaries of State.<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-accordionitem</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-accordion</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/novacat35">Robert Chen</a> performed accordion surgery.</p>
<h2>“Other” option available in <code>&lt;nys-checkbox&gt;</code></h2>
<p>Most times when you need to collect information from a user you present them with a list. Somethings though, that list is incomplete, and you need an option for a user to type in their reply. The <code>other</code> option is now available to create a user-entered selection in a <code>&lt;nys-radiobutton&gt;</code> and <code>&lt;nys-checkbox&gt;</code>.  <a href="https://designsystem.ny.gov/components/checkbox/#other">Read the checkbox <code>other</code> documentation</a>
<a href="https://designsystem.ny.gov/components/radiobutton/#other">Read the radiobutton <code>other</code> documentation</a></p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-checkboxgroup label="Select your favorite New York landmarks">
  <nys-checkbox label="Adirondacks" name="landmarks" value="adirondacks"></nys-checkbox>
  <nys-checkbox name="landmarks" value="finger-lakes" label="Finger Lakes"></nys-checkbox>
  <nys-checkbox name="landmarks" value="catskills" label="Catskills"></nys-checkbox>
  <nys-checkbox name="landmarks" other=""></nys-checkbox>
</nys-checkboxgroup>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-checkboxgroup</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Select your favorite New York landmarks<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-checkbox</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Adirondacks<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>landmarks<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>adirondacks<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-checkbox</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-checkbox</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>landmarks<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>finger-lakes<span class="token punctuation">"</span></span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Finger Lakes<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-checkbox</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-checkbox</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>landmarks<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>catskills<span class="token punctuation">"</span></span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Catskills<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-checkbox</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-checkbox</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>landmarks<span class="token punctuation">"</span></span> <span class="token attr-name">other</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-checkbox</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-checkboxgroup</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/novacat35">Robert Chen</a> checked the both for “other.”</p>
<h2>Figma updates</h2>
<p>Today we’re launching the preview versions of our new combobox and dropdown components in our design library.</p>
<ul>
<li><strong><a href="https://www.figma.com/design/U2QpuSUXRTxbgG64Fzi9bu/%F0%9F%92%A0-NYS-Design-System?node-id=17435-37173&amp;t=P5qCmlyHYP3OBj3Y-4">Combobox</a></strong> - Give your users a type-ahead list of values to search and select</li>
<li><strong><a href="https://www.figma.com/design/U2QpuSUXRTxbgG64Fzi9bu/%F0%9F%92%A0-NYS-Design-System?node-id=19283-19719&amp;t=P5qCmlyHYP3OBj3Y-4">Dropdown</a></strong> - A trigger with a dropdown attached to it</li>
<li><code>other</code> option now available for radiobuttons and checkboxes</li>
<li><code>&lt;nys-label&gt;</code> font style is &quot;normal&quot; instead of &quot;italics&quot;</li>
<li><code>&lt;nys-accordion&gt;</code> max width is now 80ch in Figma</li>
<li>Updated the hover and pressed state varibale on NYS Ghost Button</li>
</ul>
<p><a href="https://github.com/ksorrentino">Kristin Sorrentino</a> is creating important components!</p>
<h2>Bug fixes</h2>
<ul>
<li>Fix radiobutton focus styles</li>
<li>Output CSS theme files again (sorry)</li>
<li>Stylelint rule fixes</li>
<li>MCP server fixes</li>
<li>Properly following the DTCG schema</li>
<li>Lint and lint:fix working in Windows</li>
<li>Datepicker accessibility fixes</li>
<li>nys-label accessibility fixes</li>
<li>Properly export React type definitions</li>
<li>Many JSDoc updates for better Custom Element Manifest integration</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a>, <a href="https://github.com/novacat35">Robert Chen</a>, and <a href="https://github.com/mendeza">Aaron Mendez</a> fix broken things.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li><a href="https://github.com/ITS-HCD/nysds/issues/1302">nys-datepicker missing dispatch event for calendar clicks</a></li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.14.0">See the full developer release notes for v.1.14.0 →</a></p>
]]></description>
      <content><![CDATA[<h2>Why “Marcy?” 🏔️</h2>
<p>Mount Marcy is huge. This release is a huge milestone for us too. This is our <a href="https://designsystem.ny.gov/about/updates/1.14.0-release/">one year anniversary</a> of the 1.0 release of the NYS Design System, so we figured we'd go with the biggest mountain around! Marcy is the highest peak in New York, with an elevation of 5,343.1 ft (1,628.6 m)!</p>
<p><a href="https://en.wikipedia.org/wiki/Mount_Marcy">Learn more about Mount Marcy.</a></p>
<h2>New approach to agency themes</h2>
<p>New agency theme files have been added back to the <code>@nysds/styles</code> package. They are no longer minified so they are easier to read. To get the new agency themes to work, you'll need to either link to the separate file, or add a data-theme attribute to your body or HTML tags.</p>
<p>There are now three ways to apply agency themes to your apps and sites:</p>
<div class="code-preview-container">
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_down" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container expanded">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html">1. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>html</span> <span class="token attr-name">lang</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>en<span class="token punctuation">"</span></span> <span class="token attr-name">data-theme</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>admin<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
2. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>link</span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>stylesheet<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>theme-admin.css<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
3. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>body</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>nys-theme-admin<span class="token punctuation">"</span></span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/plasticmind">Jesse Gardner</a> and <a href="https://github.com/esteinborn">Eric Steinborn</a> are stylish.</p>
<h2>Customize the <code>&lt;nys-accordion&gt;</code></h2>
<p>Based off a contribution from <a href="https://github.com/brianmiller86">Brian Miller</a> (<a href="https://github.com/ITS-HCD/nysds/discussions/1270">in discussion #1270</a>) we realized that in some instances you may want an accordion's content to expand the full width of a screen. Additionally, we have provided a set of new css variables which can be overridden to set a max length for accordion content, and to color the accordion headings. <a href="https://designsystem.ny.gov/components/accordion/">Read the accordion documentation</a>.</p>
<style>
  :root {
    --nys-accordion-background-color--header: var(--nys-color-theme-weak);
    --nys-accordion-background-color--header--hover: var(--nys-color-theme-weaker);
    --nys-accordion-content-max-width: 150ch;
  }
</style>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<style>
  :root {
    --nys-accordion-background-color--header: var(--nys-color-theme-weak);
    --nys-accordion-background-color--header--hover: var(--nys-color-theme-weaker);
    --nys-accordion-content-max-width: 150ch;
  }
</style>
<nys-accordion>
  <nys-accordionitem id="accordionId1" heading="How do I renew my passport or apply for a new one?" expanded="">
    <p>
      You can apply for or renew a U.S. passport through the U.S. Department
      of State. Some renewals can be done by mail.
    </p>
    <div>
      <a href="https://www.ny.gov/" target="_blank">Check your registration</a>
      <a href="https://www.ny.gov/" target="_blank">Fill out application</a>
    </div>
  </nys-accordionitem>
  <nys-accordionitem id="accordionId2" heading="How can I find out if I’m registered to vote?">
    <p>You can check your registration status, update your information, or find out how to register through the National Association of Secretaries of State.</p>
  </nys-accordionitem>
</nys-accordion>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>style</span><span class="token punctuation">></span></span><span class="token style"><span class="token language-css">
  <span class="token selector">:root</span> <span class="token punctuation">{</span>
    <span class="token property">--nys-accordion-background-color--header</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--nys-color-theme-weak<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token property">--nys-accordion-background-color--header--hover</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--nys-color-theme-weaker<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token property">--nys-accordion-content-max-width</span><span class="token punctuation">:</span> 150ch<span class="token punctuation">;</span>
  <span class="token punctuation">}</span>
</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>style</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-accordion</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-accordionitem</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>accordionId1<span class="token punctuation">"</span></span> <span class="token attr-name">heading</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>How do I renew my passport or apply for a new one?<span class="token punctuation">"</span></span> <span class="token attr-name">expanded</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">></span></span>
      You can apply for or renew a U.S. passport through the U.S. Department
      of State. Some renewals can be done by mail.
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://www.ny.gov<span class="token punctuation">"</span></span> <span class="token attr-name">target</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>_blank<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Check your registration<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://www.ny.gov<span class="token punctuation">"</span></span> <span class="token attr-name">target</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>_blank<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Fill out application<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-accordionitem</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-accordionitem</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>accordionId2<span class="token punctuation">"</span></span> <span class="token attr-name">heading</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>How can I find out if I’m registered to vote?<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">></span></span>You can check your registration status, update your information, or find out how to register through the National Association of Secretaries of State.<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-accordionitem</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-accordion</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/novacat35">Robert Chen</a> performed accordion surgery.</p>
<h2>“Other” option available in <code>&lt;nys-checkbox&gt;</code></h2>
<p>Most times when you need to collect information from a user you present them with a list. Somethings though, that list is incomplete, and you need an option for a user to type in their reply. The <code>other</code> option is now available to create a user-entered selection in a <code>&lt;nys-radiobutton&gt;</code> and <code>&lt;nys-checkbox&gt;</code>.  <a href="https://designsystem.ny.gov/components/checkbox/#other">Read the checkbox <code>other</code> documentation</a>
<a href="https://designsystem.ny.gov/components/radiobutton/#other">Read the radiobutton <code>other</code> documentation</a></p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-checkboxgroup label="Select your favorite New York landmarks">
  <nys-checkbox label="Adirondacks" name="landmarks" value="adirondacks"></nys-checkbox>
  <nys-checkbox name="landmarks" value="finger-lakes" label="Finger Lakes"></nys-checkbox>
  <nys-checkbox name="landmarks" value="catskills" label="Catskills"></nys-checkbox>
  <nys-checkbox name="landmarks" other=""></nys-checkbox>
</nys-checkboxgroup>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-checkboxgroup</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Select your favorite New York landmarks<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-checkbox</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Adirondacks<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>landmarks<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>adirondacks<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-checkbox</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-checkbox</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>landmarks<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>finger-lakes<span class="token punctuation">"</span></span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Finger Lakes<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-checkbox</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-checkbox</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>landmarks<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>catskills<span class="token punctuation">"</span></span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Catskills<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-checkbox</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-checkbox</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>landmarks<span class="token punctuation">"</span></span> <span class="token attr-name">other</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-checkbox</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-checkboxgroup</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/novacat35">Robert Chen</a> checked the both for “other.”</p>
<h2>Figma updates</h2>
<p>Today we’re launching the preview versions of our new combobox and dropdown components in our design library.</p>
<ul>
<li><strong><a href="https://www.figma.com/design/U2QpuSUXRTxbgG64Fzi9bu/%F0%9F%92%A0-NYS-Design-System?node-id=17435-37173&amp;t=P5qCmlyHYP3OBj3Y-4">Combobox</a></strong> - Give your users a type-ahead list of values to search and select</li>
<li><strong><a href="https://www.figma.com/design/U2QpuSUXRTxbgG64Fzi9bu/%F0%9F%92%A0-NYS-Design-System?node-id=19283-19719&amp;t=P5qCmlyHYP3OBj3Y-4">Dropdown</a></strong> - A trigger with a dropdown attached to it</li>
<li><code>other</code> option now available for radiobuttons and checkboxes</li>
<li><code>&lt;nys-label&gt;</code> font style is &quot;normal&quot; instead of &quot;italics&quot;</li>
<li><code>&lt;nys-accordion&gt;</code> max width is now 80ch in Figma</li>
<li>Updated the hover and pressed state varibale on NYS Ghost Button</li>
</ul>
<p><a href="https://github.com/ksorrentino">Kristin Sorrentino</a> is creating important components!</p>
<h2>Bug fixes</h2>
<ul>
<li>Fix radiobutton focus styles</li>
<li>Output CSS theme files again (sorry)</li>
<li>Stylelint rule fixes</li>
<li>MCP server fixes</li>
<li>Properly following the DTCG schema</li>
<li>Lint and lint:fix working in Windows</li>
<li>Datepicker accessibility fixes</li>
<li>nys-label accessibility fixes</li>
<li>Properly export React type definitions</li>
<li>Many JSDoc updates for better Custom Element Manifest integration</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a>, <a href="https://github.com/novacat35">Robert Chen</a>, and <a href="https://github.com/mendeza">Aaron Mendez</a> fix broken things.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li><a href="https://github.com/ITS-HCD/nysds/issues/1302">nys-datepicker missing dispatch event for calendar clicks</a></li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.14.0">See the full developer release notes for v.1.14.0 →</a></p>
]]></content>
      <pubDate>Thu, 19 Feb 2026 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.14.0-release/</guid>
    </item>
    <item>
      <title>Happy Birthday NYS Design System!</title>
      <link>https://designsystem.ny.gov/about/updates/happy-birthday-nysds/</link>
      <description><![CDATA[<h2>Happy first birthday NYS Design System!</h2>
<p>Thanks to <a href="https://github.com/dougbartow">Doug Bartow</a> and <a href="https://github.com/goodship11">Kevin Luddy</a> for designing and animating the perfect birthday badge for our one year anniversary!</p>
<div class="badge-container">
<svg id="badgeSvg" xmlns="http://www.w3.org/2000/svg" viewBox="-15 -15 447.50273 447.50273">
<defs>
<!-- ============================================ -->
<!-- LOGO SHADOW GRADIENT (reverse wave - fades OUT) -->
<!-- Stop opacities driven by JS updateShadowWaves() -->
<!-- ============================================ -->
<linearGradient id="logoShadowGrad" gradientUnits="userSpaceOnUse" x1="49.9" y1="49.9" x2="414.1" y2="414.1">
<stop offset="0%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
<stop offset="10%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
<stop offset="20%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
<stop offset="30%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
<stop offset="40%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
<stop offset="50%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
<stop offset="60%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
<stop offset="70%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
<stop offset="80%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
<stop offset="90%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
<stop offset="100%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
</linearGradient>
<!-- ============================================ -->
<!-- BADGE "1" SHADOW GRADIENT (wave fades IN)    -->
<!-- Stop opacities driven by JS updateShadowWaves() -->
<!-- ============================================ -->
<linearGradient id="badgeShadowGrad" gradientTransform="rotate(30)">
<stop offset="0%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
<stop offset="10%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
<stop offset="20%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
<stop offset="30%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
<stop offset="40%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
<stop offset="50%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
<stop offset="60%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
<stop offset="70%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
<stop offset="80%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
<stop offset="90%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
<stop offset="100%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
</linearGradient>
</defs>
<!-- ============================================ -->
<!-- MORPHING CLIP PATH: circle → scallops        -->
<!-- ============================================ -->
<clipPath id="clippath">
<path id="morphPath" d="M192.31504,11.58231C203.25362,10.67045,214.24911,10.67045,225.18769,11.58231C234.90734,12.39255,244.55376,13.92040,254.04808,16.15334C264.73307,18.66632,275.19041,22.06412,285.31183,26.31155C294.30539,30.08567,303.00756,34.51965,311.34717,39.57721C320.73264,45.26904,329.62819,51.73203,337.94171,58.89928C345.32881,65.26785,352.23489,72.17393,358.60346,79.56103C365.77071,87.87455,372.23370,96.77010,377.92553,106.15557C382.98309,114.49518,387.41707,123.19735,391.19119,132.19091C395.43862,142.31233,398.83642,152.76967,401.34940,163.45466C403.58234,172.94898,405.11019,182.59540,405.92043,192.31505C406.83229,203.25363,406.83229,214.24912,405.92043,225.18770C405.11018,234.90735,403.58234,244.55377,401.34939,254.04809C398.83642,264.73308,395.43862,275.19042,391.19118,285.31184C387.41706,294.30540,382.98309,303.00757,377.92552,311.34717C372.23369,320.73265,365.77070,329.62819,358.60345,337.94171C352.23489,345.32882,345.32881,352.23490,337.94170,358.60346C329.62818,365.77071,320.73264,372.23370,311.34717,377.92553C303.00756,382.98309,294.30539,387.41707,285.31183,391.19119C275.19040,395.43862,264.73307,398.83642,254.04808,401.34940C244.55376,403.58234,234.90734,405.11019,225.18769,405.92043C214.24911,406.83229,203.25362,406.83229,192.31504,405.92043C182.59539,405.11018,172.94897,403.58234,163.45465,401.34939C152.76967,398.83642,142.31233,395.43862,132.19090,391.19119C123.19735,387.41707,114.49518,382.98309,106.15557,377.92552C96.77010,372.23370,87.87455,365.77071,79.56103,358.60346C72.17393,352.23489,65.26785,345.32881,58.89928,337.94171C51.73203,329.62819,45.26904,320.73264,39.57722,311.34717C34.51965,303.00756,30.08567,294.30539,26.31155,285.31184C22.06412,275.19041,18.66632,264.73307,16.15335,254.04809C13.92040,244.55377,12.39256,234.90735,11.58231,225.18770C10.67045,214.24912,10.67045,203.25363,11.58231,192.31505C12.39255,182.59540,13.92040,172.94898,16.15334,163.45466C18.66632,152.76967,22.06412,142.31234,26.31155,132.19091C30.08567,123.19735,34.51965,114.49518,39.57721,106.15557C45.26904,96.77010,51.73203,87.87456,58.89928,79.56104C65.26784,72.17393,72.17392,65.26785,79.56103,58.89929C87.87455,51.73204,96.77009,45.26905,106.15557,39.57722C114.49517,34.51965,123.19734,30.08568,132.19090,26.31156C142.31232,22.06412,152.76966,18.66632,163.45465,16.15335C172.94897,13.92040,182.59539,12.39256,192.31504,11.58231Z">
<!-- Morph: circle → scallops (timing set by JS) -->
<animate id="morphAnim" attributeName="d" from="M192.31504,11.58231C203.25362,10.67045,214.24911,10.67045,225.18769,11.58231C234.90734,12.39255,244.55376,13.92040,254.04808,16.15334C264.73307,18.66632,275.19041,22.06412,285.31183,26.31155C294.30539,30.08567,303.00756,34.51965,311.34717,39.57721C320.73264,45.26904,329.62819,51.73203,337.94171,58.89928C345.32881,65.26785,352.23489,72.17393,358.60346,79.56103C365.77071,87.87455,372.23370,96.77010,377.92553,106.15557C382.98309,114.49518,387.41707,123.19735,391.19119,132.19091C395.43862,142.31233,398.83642,152.76967,401.34940,163.45466C403.58234,172.94898,405.11019,182.59540,405.92043,192.31505C406.83229,203.25363,406.83229,214.24912,405.92043,225.18770C405.11018,234.90735,403.58234,244.55377,401.34939,254.04809C398.83642,264.73308,395.43862,275.19042,391.19118,285.31184C387.41706,294.30540,382.98309,303.00757,377.92552,311.34717C372.23369,320.73265,365.77070,329.62819,358.60345,337.94171C352.23489,345.32882,345.32881,352.23490,337.94170,358.60346C329.62818,365.77071,320.73264,372.23370,311.34717,377.92553C303.00756,382.98309,294.30539,387.41707,285.31183,391.19119C275.19040,395.43862,264.73307,398.83642,254.04808,401.34940C244.55376,403.58234,234.90734,405.11019,225.18769,405.92043C214.24911,406.83229,203.25362,406.83229,192.31504,405.92043C182.59539,405.11018,172.94897,403.58234,163.45465,401.34939C152.76967,398.83642,142.31233,395.43862,132.19090,391.19119C123.19735,387.41707,114.49518,382.98309,106.15557,377.92552C96.77010,372.23370,87.87455,365.77071,79.56103,358.60346C72.17393,352.23489,65.26785,345.32881,58.89928,337.94171C51.73203,329.62819,45.26904,320.73264,39.57722,311.34717C34.51965,303.00756,30.08567,294.30539,26.31155,285.31184C22.06412,275.19041,18.66632,264.73307,16.15335,254.04809C13.92040,244.55377,12.39256,234.90735,11.58231,225.18770C10.67045,214.24912,10.67045,203.25363,11.58231,192.31505C12.39255,182.59540,13.92040,172.94898,16.15334,163.45466C18.66632,152.76967,22.06412,142.31234,26.31155,132.19091C30.08567,123.19735,34.51965,114.49518,39.57721,106.15557C45.26904,96.77010,51.73203,87.87456,58.89928,79.56104C65.26784,72.17393,72.17392,65.26785,79.56103,58.89929C87.87455,51.73204,96.77009,45.26905,106.15557,39.57722C114.49517,34.51965,123.19734,30.08568,132.19090,26.31156C142.31232,22.06412,152.76966,18.66632,163.45465,16.15335C172.94897,13.92040,182.59539,12.39256,192.31504,11.58231Z" to="M192.31504,11.58231C201.35502,17.29170,216.14771,17.29170,225.18769,11.58231C234.22768,5.87292,247.21485,7.92988,254.04808,16.15335C260.88131,24.37680,274.94999,28.94800,285.31183,26.31156C295.67366,23.67512,307.38956,29.64467,311.34717,39.57722C315.30477,49.50978,327.27231,58.20471,337.94170,58.89929C348.61109,59.59387,357.90888,68.89165,358.60345,79.56104C359.29802,90.23043,367.99295,102.19797,377.92552,106.15557C387.85808,110.11317,393.82762,121.82907,391.19118,132.19091C388.55474,142.55274,393.12594,156.62142,401.34939,163.45466C409.57285,170.28790,411.62981,183.27507,405.92043,192.31505C400.21105,201.35502,400.21104,216.14772,405.92043,225.18770C411.62982,234.22769,409.57286,247.21485,401.34939,254.04809C393.12594,260.88132,388.55474,274.95000,391.19118,285.31184C393.82762,295.67367,387.85807,307.38957,377.92552,311.34717C367.99296,315.30478,359.29803,327.27232,358.60345,337.94171C357.90887,348.61110,348.61109,357.90889,337.94170,358.60346C327.27231,359.29804,315.30477,367.99296,311.34717,377.92553C307.38957,387.85808,295.67367,393.82763,285.31183,391.19119C274.95000,388.55475,260.88132,393.12595,254.04808,401.34940C247.21485,409.57286,234.22767,411.62982,225.18769,405.92044C216.14771,400.21105,201.35502,400.21105,192.31504,405.92044C183.27505,411.62983,170.28789,409.57287,163.45465,401.34940C156.62142,393.12595,142.55274,388.55475,132.19090,391.19119C121.82907,393.82763,110.11317,387.85808,106.15557,377.92553C102.19797,367.99297,90.23042,359.29804,79.56103,358.60346C68.89164,357.90888,59.59385,348.61110,58.89928,337.94171C58.20470,327.27232,49.50978,315.30477,39.57721,311.34717C29.64466,307.38957,23.67511,295.67368,26.31155,285.31184C28.94799,274.95001,24.37679,260.88133,16.15334,254.04809C7.92988,247.21485,5.87292,234.22768,11.58230,225.18770C17.29168,216.14773,17.29169,201.35503,11.58230,192.31505C5.87291,183.27506,7.92987,170.28789,16.15334,163.45466C24.37680,156.62143,28.94799,142.55275,26.31155,132.19091C23.67511,121.82908,29.64466,110.11318,39.57721,106.15557C49.50977,102.19797,58.20470,90.23043,58.89928,79.56104C59.59386,68.89165,68.89164,59.59386,79.56103,58.89929C90.23042,58.20471,102.19797,49.50979,106.15557,39.57722C110.11317,29.64467,121.82906,23.67512,132.19090,26.31156C142.55273,28.94800,156.62141,24.37680,163.45465,16.15335C170.28789,7.92989,183.27506,5.87293,192.31504,11.58231Z" dur="4s" begin="indefinite" fill="freeze" calcMode="spline" keyTimes="0;1" keySplines="0.25 0.1 0.25 1"></animate>
</path>
</clipPath>
<!-- ============================================ -->
<!-- MAIN BADGE GROUP                             -->
<!-- ============================================ -->
<g id="badge">
<!-- Invisible hit target -->
<rect x="-15" y="-15" width="447.50273" height="447.50273" fill="transparent"></rect>
<!-- ============================================ -->
<!-- CLIP GROUP: spins 5s–17s (JS-driven)         -->
<!-- ============================================ -->
<g id="clipGroup" clip-path="url(#clippath)">
<!-- ============================================ -->
<!-- COUNTER-ROTATE: cancels clip spin (JS)       -->
<!-- ============================================ -->
<g id="counterGroup">
<!-- Blue background -->
<rect x="-15" y="-15" width="447.50273" height="447.50273" fill="#245FC2"></rect>
<!-- ============================================ -->
<!-- LOGO SHADOW (wave dissolves 2s–5s)           -->
<!-- Centered: translate by (8.75, 8.25)          -->
<!-- ============================================ -->
<g transform="translate(8.75, 8.25)">
<path d="M400 177.982V177.717L311.472 88.5752V315.576H254.744V185.429L80.1399 360.098L80.1417 360.1L40.2449 400H400.003V177.982H400Z" fill="url(#logoShadowGrad)"></path>
<path d="M214.604 145.481L149.581 210.53L84.5566 145.481H214.604Z" fill="url(#logoShadowGrad)"></path>
</g>
<!-- ============================================ -->
<!-- BADGE "1" SHADOW (wave fades in 12s–15s)     -->
<!-- Z-ORDER: BELOW the "1" and content spin      -->
<!-- ============================================ -->
<g transform="translate(-34.84, -34.84)">
<path d="M482.48047,447.47295v-.69679h-.69691v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.02304l125.50899-12.89352-126.20578-125.50899v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-42.35401c-13.14425,21.17694-41.25791,38.095-84.34249,50.75152v51.29951c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99119c.22671-.09333.46783-.19889.69691-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99119c.22671-.09333.46783-.19889.69691-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99114c.22671-.09333.46783-.19889.69691-.29435v.99119c.22671-.09333.46772-.19895.69679-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99119c.22671-.09333.46783-.19889.69691-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99119c.22671-.09333.46783-.19889.69691-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99114c.22671-.09333.46783-.19889.69691-.29435v.99119c.22671-.09333.46772-.19895.69679-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99119c.22671-.09333.46783-.19889.69691-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99119c.22671-.09333.46783-.19889.69691-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99114c.22671-.09333.46783-.19889.69691-.29435v.99119c.22671-.09333.46772-.19895.69679-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99119c.22671-.09333.46783-.19889.69691-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99119c.22671-.09333.46783-.19889.69691-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99114c.22671-.09333.46783-.19889.69691-.29435v.99119c.22671-.09333.46772-.19895.69679-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.12617-.05198.26121-.11141.38821-.16404v36.51553h-75.57958v51.89027h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h201.9109v-51.89027h-.69679Z" fill="url(#badgeShadowGrad)"></path>
</g>
<!-- ============================================ -->
<!-- CONTENT SPIN GROUP (arrow + "1")             -->
<!-- Spins 5s–12s (JS-driven)                     -->
<!-- ============================================ -->
<g id="contentGroup">
<!-- WHITE ARROW (fades out at crossfade ~8s) -->
<g transform="translate(8.75, 8.25)">
<path id="arrowPath" d="M84.556 145.474H214.604L0 360.223V400.149H40.2418L80.14 360.247L254.744 185.578V315.725H311.472V88.873H84.556V145.474Z" fill="white"></path>
</g>
<!-- WHITE "1" (fades in at crossfade ~8s) -->
<path id="onePath" d="M113.26827,167.93204v-51.29952c43.08464-12.65649,71.19825-29.57453,84.34259-50.75151h42.35396v207.3875h69.00797v51.89025H107.06187v-51.89025h75.5797v-142.57874c-29.69791,18.01362-52.82235,30.42728-69.37331,37.24228Z" fill="#ffffff" opacity="0"></path>
</g>
</g>
</g>
</g>
</svg>
<div class="controls">
<button onclick="replay()">Stop</button>
<span class="time-display" id="timeDisplay">0.0s</span>
</div>
</div>
<h2>New homepage</h2>
<p>We've redesigned the homepage to better reflect the work being done on the design system. We've added sections with quick access to popular features like design tokens, and typography. We list the latest updates so you can keep track of releases right from the homepage. More improvements to come!</p>
<h2>Quicker access to the things you need</h2>
<p>Improved the search function on the website to fit into the unav header (top white bar on this page). This allowed us to remove a separate search link in the header and implements the unified unav search pattern.</p>
<h2>New contribute page</h2>
<p>There are multiple ways to contribute to the NYS Design System. Our new <a href="https://designsystem.ny.gov/about/contribute/">contributing page</a> provides multiple ways you can contribute to the NYS Design System. We've included a link for requesting new components and enhancements, a link for reporting bugs, and a link to join the conversation in our MS Teams channel. We love contributions!</p>
<p>Thanks to <a href="https://github.com/mashyamumin">Mashya Mumin</a>, <a href="https://github.com/ksorrentino">Kristin Sorrentino</a>, and <a href="https://github.com/dougbartow">Doug Bartow</a> for this new style!</p>
<style>
.badge-container { width: 500px; max-width: 90vw; }
.controls.hidden { display: none; }
button {
padding: 0.6rem 1.4rem;
border: 1px solid #286ad8;
background: transparent;
color: #286ad8;
border-radius: 6px;
cursor: pointer;
font-size: 0.9rem;
transition: all 0.2s;
}
button:hover { background: #286ad8; color: #fff; }
.caption {
margin-top: 1.5rem;
font-size: 0.85rem;
color: #5a5a5a;
text-align: center;
}
.time-display {
font-size: 0.8rem;
color: #5a5a5a;
font-variant-numeric: tabular-nums;
min-width: 4em;
}

.controls {
margin-top: 1rem;
display: flex;
gap: 1rem;
align-items: center;
flex-direction: column;
}
</style>
<script>
// ═══════════════════════════════════════════════
// CONFIG
// ═══════════════════════════════════════════════
const SHOW_CONTROLS = true; // false = hide replay button, timer, caption
const TEMPO = 0.875;
const START_ARROW_FADE = 1.0 * TEMPO;
const FINISH_ARROW_FADE = 5.0 * TEMPO;
const START_ARROW_SPIN = 3.0 * TEMPO;
const CROSSFADE_ARROW_TO_ONE = 8.0 * TEMPO;
const CROSSFADE_RATE = 0.3 * TEMPO;
const START_SCALLOP_MORPH = 9.0 * TEMPO;
const FINISH_ONE_SPIN = 12.0 * TEMPO;
const START_ONE_FADE = 12.0 * TEMPO;
const FINISH_SCALLOP_MORPH = 13.0 * TEMPO;
const FINISH_ONE_FADE = 15.0 * TEMPO;
const FINISH_CLIPPING_SPIN = 18.0 * TEMPO;
const ACCEL_DURATION = CROSSFADE_ARROW_TO_ONE - START_ARROW_SPIN; // 4s * TEMPO
const CONTENT_DECEL_DURATION = FINISH_ONE_SPIN - CROSSFADE_ARROW_TO_ONE; // 4s * TEMPO
const CLIP_ACCEL_DURATION = 2 * TEMPO;
const CLIP_DECEL_DURATION =
FINISH_CLIPPING_SPIN - (START_ARROW_SPIN + CLIP_ACCEL_DURATION);
const TOTAL_ROTATIONS = 6;
const PEAK_OMEGA =
(TOTAL_ROTATIONS * 360) / (ACCEL_DURATION / 4 + CONTENT_DECEL_DURATION / 2);
const CX = 208.75137,
CY = 208.75137;
const SHADOW_STOP_COUNT = 11; // 0% to 100% in 10% steps
const SHADOW_FADE_DUR = 0.5 * TEMPO; // each stop's fade duration
const ARROW_WAVE_SPACING =
(FINISH_ARROW_FADE - START_ARROW_FADE - SHADOW_FADE_DUR) /
(SHADOW_STOP_COUNT - 1);
const BADGE_WAVE_SPACING =
(FINISH_ONE_FADE - START_ONE_FADE - SHADOW_FADE_DUR) /
(SHADOW_STOP_COUNT - 1);
let clipGroup, counterGroup, contentGroup, arrowPath, onePath;
let logoStops = []; // arrow shadow gradient stops
let badgeStops = []; // "1" shadow gradient stops
let morphAnim; // SMIL morph element
let morphTriggered = false;
function getElements() {
clipGroup = document.getElementById("clipGroup");
counterGroup = document.getElementById("counterGroup");
contentGroup = document.getElementById("contentGroup");
arrowPath = document.getElementById("arrowPath");
onePath = document.getElementById("onePath");
morphAnim = document.getElementById("morphAnim");
logoStops = Array.from(document.querySelectorAll(".logo-stop"));
badgeStops = Array.from(document.querySelectorAll(".badge-stop"));
}
// ═══════════════════════════════════════════════
// SHADOW WAVE UPDATES (replaces SMIL)
// ═══════════════════════════════════════════════
function updateShadowWaves(t) {
// Arrow shadow: each stop fades 1->0
for (let i = 0; i < SHADOW_STOP_COUNT; i++) {
const triggerTime = START_ARROW_FADE + i * ARROW_WAVE_SPACING;
let opacity;
if (t < triggerTime) {
opacity = 1;
} else if (t < triggerTime + SHADOW_FADE_DUR) {
opacity = 1 - (t - triggerTime) / SHADOW_FADE_DUR;
} else {
opacity = 0;
}
logoStops[i].setAttribute("stop-opacity", String(opacity));
}
// Badge "1" shadow: each stop fades 0->1
for (let i = 0; i < SHADOW_STOP_COUNT; i++) {
const triggerTime = START_ONE_FADE + i * BADGE_WAVE_SPACING;
let opacity;
if (t < triggerTime) {
opacity = 0;
} else if (t < triggerTime + SHADOW_FADE_DUR) {
opacity = (t - triggerTime) / SHADOW_FADE_DUR;
} else {
opacity = 1;
}
badgeStops[i].setAttribute("stop-opacity", String(opacity));
}
}
// ═══════════════════════════════════════════════
// MORPH (SMIL, triggered by JS at scaled time)
// ═══════════════════════════════════════════════
function updateMorph(t) {
if (!morphTriggered && t >= START_SCALLOP_MORPH) {
const morphDur = FINISH_SCALLOP_MORPH - START_SCALLOP_MORPH;
morphAnim.setAttribute("dur", morphDur + "s");
morphAnim.beginElement();
morphTriggered = true;
}
}
// ═══════════════════════════════════════════════
// SPIN PHYSICS
// ═══════════════════════════════════════════════
function getContentAngle(t) {
if (t < START_ARROW_SPIN) return 0;
const elapsed = t - START_ARROW_SPIN;
const totalDur = FINISH_ONE_SPIN - START_ARROW_SPIN;
if (elapsed >= totalDur) {
return computeAngleAtEnd("content");
}
if (elapsed <= ACCEL_DURATION) {
const progress = elapsed / ACCEL_DURATION;
return ((PEAK_OMEGA * ACCEL_DURATION) / 4) * Math.pow(progress, 4);
} else {
const accelAngle = (PEAK_OMEGA * ACCEL_DURATION) / 4;
const decelElapsed = elapsed - ACCEL_DURATION;
const decelAngle =
PEAK_OMEGA * decelElapsed -
0.5 * (PEAK_OMEGA / CONTENT_DECEL_DURATION) * decelElapsed * decelElapsed;
return accelAngle + decelAngle;
}
}
function getClipAngle(t) {
if (t < START_ARROW_SPIN) return 0;
const elapsed = t - START_ARROW_SPIN;
const totalDur = FINISH_CLIPPING_SPIN - START_ARROW_SPIN;
if (elapsed >= totalDur) {
return computeAngleAtEnd("clip");
}
if (elapsed <= CLIP_ACCEL_DURATION) {
const progress = elapsed / CLIP_ACCEL_DURATION;
return ((PEAK_OMEGA * CLIP_ACCEL_DURATION) / 4) * Math.pow(progress, 4);
} else {
const accelAngle = (PEAK_OMEGA * CLIP_ACCEL_DURATION) / 4;
const decelElapsed = elapsed - CLIP_ACCEL_DURATION;
const progress = decelElapsed / CLIP_DECEL_DURATION;
const decelAngle =
((PEAK_OMEGA * CLIP_DECEL_DURATION) / 4) *
(1 - Math.pow(1 - progress, 4));
return accelAngle + decelAngle;
}
}
function computeAngleAtEnd(type) {
if (type === "clip") {
return (
(PEAK_OMEGA * CLIP_ACCEL_DURATION) / 4 +
(PEAK_OMEGA * CLIP_DECEL_DURATION) / 4
);
}
return (
(PEAK_OMEGA * ACCEL_DURATION) / 4 +
(PEAK_OMEGA * CONTENT_DECEL_DURATION) / 2
);
}
// ═══════════════════════════════════════════════
// CROSSFADE (arrow -> "1")
// ═══════════════════════════════════════════════
function updateCrossfade(t) {
if (t < CROSSFADE_ARROW_TO_ONE) {
arrowPath.setAttribute("opacity", "1");
onePath.setAttribute("opacity", "0");
} else if (t < CROSSFADE_ARROW_TO_ONE + CROSSFADE_RATE) {
const progress = (t - CROSSFADE_ARROW_TO_ONE) / CROSSFADE_RATE;
arrowPath.setAttribute("opacity", String(1 - progress));
onePath.setAttribute("opacity", String(progress));
} else {
arrowPath.setAttribute("opacity", "0");
onePath.setAttribute("opacity", "1");
}
}
// ═══════════════════════════════════════════════
// ANIMATION LOOP
// ═══════════════════════════════════════════════
let startTime = null;
let animId = null;
function animate(timestamp) {
if (!startTime) startTime = timestamp;
const t = (timestamp - startTime) / 1000;
document.getElementById("timeDisplay").textContent = t.toFixed(1) + "s";
// Spin transforms
const clipAngle = getClipAngle(t);
const contentAngle = getContentAngle(t);
clipGroup.setAttribute("transform", `rotate(${clipAngle} ${CX} ${CY})`);
counterGroup.setAttribute("transform", `rotate(${-clipAngle} ${CX} ${CY})`);
contentGroup.setAttribute("transform", `rotate(${contentAngle} ${CX} ${CY})`);
// Shadow waves
updateShadowWaves(t);
// Morph trigger
updateMorph(t);
// Crossfade
updateCrossfade(t);
// Keep running until everything is done
if (t < FINISH_CLIPPING_SPIN + 1) {
  animId = requestAnimationFrame(animate);
} else {
  animId = null;
  document.querySelector('.controls button').textContent = 'Replay';
}
}
function startAnimation() {
getElements();
morphTriggered = false;
startTime = null;
if (animId) cancelAnimationFrame(animId);
// Apply controls visibility
if (!SHOW_CONTROLS) {
document.querySelector(".controls").classList.add("hidden");
document.querySelector(".caption").classList.add("hidden");
}
animId = requestAnimationFrame(animate);
}
function replay() {
  const btn = document.querySelector('.controls button');
  if (animId) {
    // Animation is running — stop it
    cancelAnimationFrame(animId);
    animId = null;
    btn.textContent = 'Replay';
  } else {
    // Animation is stopped — restart it
    const svg = document.getElementById("badgeSvg");
    const container = svg.parentElement;
    const clone = svg.cloneNode(true);
    clone.id = "badgeSvg";
    container.replaceChild(clone, svg);
    startAnimation();
    btn.textContent = 'Stop';
  }
}
window.addEventListener("load", function() {
  const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
  if (!prefersReducedMotion) {
    startAnimation();
  }
});
</script>
<script src="https://cdn.jsdelivr.net/npm/canvas-confetti@1.9.4/dist/confetti.browser.min.js"></script>
<script>
var duration = 2.5 * 1000;
var animationEnd = Date.now() + duration;
var defaults = { startVelocity: 30, spread: 360, ticks: 60, zIndex: 0, disableForReducedMotion: true };
function randomInRange(min, max) {
  return Math.random() * (max - min) + min;
}
var interval = setInterval(function() {
  var timeLeft = animationEnd - Date.now();
  if (timeLeft <= 0) {
    return clearInterval(interval);
  }
  var particleCount = 50 * (timeLeft / duration);
  // since particles fall down, start a bit higher than random
  confetti({ ...defaults, particleCount, origin: { x: randomInRange(0.1, 0.3), y: Math.random() - 0.2 } });
  confetti({ ...defaults, particleCount, origin: { x: randomInRange(0.7, 0.9), y: Math.random() - 0.2 } });
}, 250);
</script>]]></description>
      <content><![CDATA[<h2>Happy first birthday NYS Design System!</h2>
<p>Thanks to <a href="https://github.com/dougbartow">Doug Bartow</a> and <a href="https://github.com/goodship11">Kevin Luddy</a> for designing and animating the perfect birthday badge for our one year anniversary!</p>
<div class="badge-container">
<svg id="badgeSvg" xmlns="http://www.w3.org/2000/svg" viewBox="-15 -15 447.50273 447.50273">
<defs>
<!-- ============================================ -->
<!-- LOGO SHADOW GRADIENT (reverse wave - fades OUT) -->
<!-- Stop opacities driven by JS updateShadowWaves() -->
<!-- ============================================ -->
<linearGradient id="logoShadowGrad" gradientUnits="userSpaceOnUse" x1="49.9" y1="49.9" x2="414.1" y2="414.1">
<stop offset="0%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
<stop offset="10%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
<stop offset="20%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
<stop offset="30%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
<stop offset="40%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
<stop offset="50%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
<stop offset="60%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
<stop offset="70%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
<stop offset="80%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
<stop offset="90%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
<stop offset="100%" stop-color="#0E324F" stop-opacity="1" class="logo-stop"></stop>
</linearGradient>
<!-- ============================================ -->
<!-- BADGE "1" SHADOW GRADIENT (wave fades IN)    -->
<!-- Stop opacities driven by JS updateShadowWaves() -->
<!-- ============================================ -->
<linearGradient id="badgeShadowGrad" gradientTransform="rotate(30)">
<stop offset="0%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
<stop offset="10%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
<stop offset="20%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
<stop offset="30%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
<stop offset="40%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
<stop offset="50%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
<stop offset="60%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
<stop offset="70%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
<stop offset="80%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
<stop offset="90%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
<stop offset="100%" stop-color="#0E324F" stop-opacity="0" class="badge-stop"></stop>
</linearGradient>
</defs>
<!-- ============================================ -->
<!-- MORPHING CLIP PATH: circle → scallops        -->
<!-- ============================================ -->
<clipPath id="clippath">
<path id="morphPath" d="M192.31504,11.58231C203.25362,10.67045,214.24911,10.67045,225.18769,11.58231C234.90734,12.39255,244.55376,13.92040,254.04808,16.15334C264.73307,18.66632,275.19041,22.06412,285.31183,26.31155C294.30539,30.08567,303.00756,34.51965,311.34717,39.57721C320.73264,45.26904,329.62819,51.73203,337.94171,58.89928C345.32881,65.26785,352.23489,72.17393,358.60346,79.56103C365.77071,87.87455,372.23370,96.77010,377.92553,106.15557C382.98309,114.49518,387.41707,123.19735,391.19119,132.19091C395.43862,142.31233,398.83642,152.76967,401.34940,163.45466C403.58234,172.94898,405.11019,182.59540,405.92043,192.31505C406.83229,203.25363,406.83229,214.24912,405.92043,225.18770C405.11018,234.90735,403.58234,244.55377,401.34939,254.04809C398.83642,264.73308,395.43862,275.19042,391.19118,285.31184C387.41706,294.30540,382.98309,303.00757,377.92552,311.34717C372.23369,320.73265,365.77070,329.62819,358.60345,337.94171C352.23489,345.32882,345.32881,352.23490,337.94170,358.60346C329.62818,365.77071,320.73264,372.23370,311.34717,377.92553C303.00756,382.98309,294.30539,387.41707,285.31183,391.19119C275.19040,395.43862,264.73307,398.83642,254.04808,401.34940C244.55376,403.58234,234.90734,405.11019,225.18769,405.92043C214.24911,406.83229,203.25362,406.83229,192.31504,405.92043C182.59539,405.11018,172.94897,403.58234,163.45465,401.34939C152.76967,398.83642,142.31233,395.43862,132.19090,391.19119C123.19735,387.41707,114.49518,382.98309,106.15557,377.92552C96.77010,372.23370,87.87455,365.77071,79.56103,358.60346C72.17393,352.23489,65.26785,345.32881,58.89928,337.94171C51.73203,329.62819,45.26904,320.73264,39.57722,311.34717C34.51965,303.00756,30.08567,294.30539,26.31155,285.31184C22.06412,275.19041,18.66632,264.73307,16.15335,254.04809C13.92040,244.55377,12.39256,234.90735,11.58231,225.18770C10.67045,214.24912,10.67045,203.25363,11.58231,192.31505C12.39255,182.59540,13.92040,172.94898,16.15334,163.45466C18.66632,152.76967,22.06412,142.31234,26.31155,132.19091C30.08567,123.19735,34.51965,114.49518,39.57721,106.15557C45.26904,96.77010,51.73203,87.87456,58.89928,79.56104C65.26784,72.17393,72.17392,65.26785,79.56103,58.89929C87.87455,51.73204,96.77009,45.26905,106.15557,39.57722C114.49517,34.51965,123.19734,30.08568,132.19090,26.31156C142.31232,22.06412,152.76966,18.66632,163.45465,16.15335C172.94897,13.92040,182.59539,12.39256,192.31504,11.58231Z">
<!-- Morph: circle → scallops (timing set by JS) -->
<animate id="morphAnim" attributeName="d" from="M192.31504,11.58231C203.25362,10.67045,214.24911,10.67045,225.18769,11.58231C234.90734,12.39255,244.55376,13.92040,254.04808,16.15334C264.73307,18.66632,275.19041,22.06412,285.31183,26.31155C294.30539,30.08567,303.00756,34.51965,311.34717,39.57721C320.73264,45.26904,329.62819,51.73203,337.94171,58.89928C345.32881,65.26785,352.23489,72.17393,358.60346,79.56103C365.77071,87.87455,372.23370,96.77010,377.92553,106.15557C382.98309,114.49518,387.41707,123.19735,391.19119,132.19091C395.43862,142.31233,398.83642,152.76967,401.34940,163.45466C403.58234,172.94898,405.11019,182.59540,405.92043,192.31505C406.83229,203.25363,406.83229,214.24912,405.92043,225.18770C405.11018,234.90735,403.58234,244.55377,401.34939,254.04809C398.83642,264.73308,395.43862,275.19042,391.19118,285.31184C387.41706,294.30540,382.98309,303.00757,377.92552,311.34717C372.23369,320.73265,365.77070,329.62819,358.60345,337.94171C352.23489,345.32882,345.32881,352.23490,337.94170,358.60346C329.62818,365.77071,320.73264,372.23370,311.34717,377.92553C303.00756,382.98309,294.30539,387.41707,285.31183,391.19119C275.19040,395.43862,264.73307,398.83642,254.04808,401.34940C244.55376,403.58234,234.90734,405.11019,225.18769,405.92043C214.24911,406.83229,203.25362,406.83229,192.31504,405.92043C182.59539,405.11018,172.94897,403.58234,163.45465,401.34939C152.76967,398.83642,142.31233,395.43862,132.19090,391.19119C123.19735,387.41707,114.49518,382.98309,106.15557,377.92552C96.77010,372.23370,87.87455,365.77071,79.56103,358.60346C72.17393,352.23489,65.26785,345.32881,58.89928,337.94171C51.73203,329.62819,45.26904,320.73264,39.57722,311.34717C34.51965,303.00756,30.08567,294.30539,26.31155,285.31184C22.06412,275.19041,18.66632,264.73307,16.15335,254.04809C13.92040,244.55377,12.39256,234.90735,11.58231,225.18770C10.67045,214.24912,10.67045,203.25363,11.58231,192.31505C12.39255,182.59540,13.92040,172.94898,16.15334,163.45466C18.66632,152.76967,22.06412,142.31234,26.31155,132.19091C30.08567,123.19735,34.51965,114.49518,39.57721,106.15557C45.26904,96.77010,51.73203,87.87456,58.89928,79.56104C65.26784,72.17393,72.17392,65.26785,79.56103,58.89929C87.87455,51.73204,96.77009,45.26905,106.15557,39.57722C114.49517,34.51965,123.19734,30.08568,132.19090,26.31156C142.31232,22.06412,152.76966,18.66632,163.45465,16.15335C172.94897,13.92040,182.59539,12.39256,192.31504,11.58231Z" to="M192.31504,11.58231C201.35502,17.29170,216.14771,17.29170,225.18769,11.58231C234.22768,5.87292,247.21485,7.92988,254.04808,16.15335C260.88131,24.37680,274.94999,28.94800,285.31183,26.31156C295.67366,23.67512,307.38956,29.64467,311.34717,39.57722C315.30477,49.50978,327.27231,58.20471,337.94170,58.89929C348.61109,59.59387,357.90888,68.89165,358.60345,79.56104C359.29802,90.23043,367.99295,102.19797,377.92552,106.15557C387.85808,110.11317,393.82762,121.82907,391.19118,132.19091C388.55474,142.55274,393.12594,156.62142,401.34939,163.45466C409.57285,170.28790,411.62981,183.27507,405.92043,192.31505C400.21105,201.35502,400.21104,216.14772,405.92043,225.18770C411.62982,234.22769,409.57286,247.21485,401.34939,254.04809C393.12594,260.88132,388.55474,274.95000,391.19118,285.31184C393.82762,295.67367,387.85807,307.38957,377.92552,311.34717C367.99296,315.30478,359.29803,327.27232,358.60345,337.94171C357.90887,348.61110,348.61109,357.90889,337.94170,358.60346C327.27231,359.29804,315.30477,367.99296,311.34717,377.92553C307.38957,387.85808,295.67367,393.82763,285.31183,391.19119C274.95000,388.55475,260.88132,393.12595,254.04808,401.34940C247.21485,409.57286,234.22767,411.62982,225.18769,405.92044C216.14771,400.21105,201.35502,400.21105,192.31504,405.92044C183.27505,411.62983,170.28789,409.57287,163.45465,401.34940C156.62142,393.12595,142.55274,388.55475,132.19090,391.19119C121.82907,393.82763,110.11317,387.85808,106.15557,377.92553C102.19797,367.99297,90.23042,359.29804,79.56103,358.60346C68.89164,357.90888,59.59385,348.61110,58.89928,337.94171C58.20470,327.27232,49.50978,315.30477,39.57721,311.34717C29.64466,307.38957,23.67511,295.67368,26.31155,285.31184C28.94799,274.95001,24.37679,260.88133,16.15334,254.04809C7.92988,247.21485,5.87292,234.22768,11.58230,225.18770C17.29168,216.14773,17.29169,201.35503,11.58230,192.31505C5.87291,183.27506,7.92987,170.28789,16.15334,163.45466C24.37680,156.62143,28.94799,142.55275,26.31155,132.19091C23.67511,121.82908,29.64466,110.11318,39.57721,106.15557C49.50977,102.19797,58.20470,90.23043,58.89928,79.56104C59.59386,68.89165,68.89164,59.59386,79.56103,58.89929C90.23042,58.20471,102.19797,49.50979,106.15557,39.57722C110.11317,29.64467,121.82906,23.67512,132.19090,26.31156C142.55273,28.94800,156.62141,24.37680,163.45465,16.15335C170.28789,7.92989,183.27506,5.87293,192.31504,11.58231Z" dur="4s" begin="indefinite" fill="freeze" calcMode="spline" keyTimes="0;1" keySplines="0.25 0.1 0.25 1"></animate>
</path>
</clipPath>
<!-- ============================================ -->
<!-- MAIN BADGE GROUP                             -->
<!-- ============================================ -->
<g id="badge">
<!-- Invisible hit target -->
<rect x="-15" y="-15" width="447.50273" height="447.50273" fill="transparent"></rect>
<!-- ============================================ -->
<!-- CLIP GROUP: spins 5s–17s (JS-driven)         -->
<!-- ============================================ -->
<g id="clipGroup" clip-path="url(#clippath)">
<!-- ============================================ -->
<!-- COUNTER-ROTATE: cancels clip spin (JS)       -->
<!-- ============================================ -->
<g id="counterGroup">
<!-- Blue background -->
<rect x="-15" y="-15" width="447.50273" height="447.50273" fill="#245FC2"></rect>
<!-- ============================================ -->
<!-- LOGO SHADOW (wave dissolves 2s–5s)           -->
<!-- Centered: translate by (8.75, 8.25)          -->
<!-- ============================================ -->
<g transform="translate(8.75, 8.25)">
<path d="M400 177.982V177.717L311.472 88.5752V315.576H254.744V185.429L80.1399 360.098L80.1417 360.1L40.2449 400H400.003V177.982H400Z" fill="url(#logoShadowGrad)"></path>
<path d="M214.604 145.481L149.581 210.53L84.5566 145.481H214.604Z" fill="url(#logoShadowGrad)"></path>
</g>
<!-- ============================================ -->
<!-- BADGE "1" SHADOW (wave fades in 12s–15s)     -->
<!-- Z-ORDER: BELOW the "1" and content spin      -->
<!-- ============================================ -->
<g transform="translate(-34.84, -34.84)">
<path d="M482.48047,447.47295v-.69679h-.69691v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.02304l125.50899-12.89352-126.20578-125.50899v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69691v-.69679h-.69679v-.69685h-.69691v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69679v-.69679h-.69679v-.69685h-.69691v-.69679h-42.35401c-13.14425,21.17694-41.25791,38.095-84.34249,50.75152v51.29951c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99119c.22671-.09333.46783-.19889.69691-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99119c.22671-.09333.46783-.19889.69691-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99114c.22671-.09333.46783-.19889.69691-.29435v.99119c.22671-.09333.46772-.19895.69679-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99119c.22671-.09333.46783-.19889.69691-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99119c.22671-.09333.46783-.19889.69691-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99114c.22671-.09333.46783-.19889.69691-.29435v.99119c.22671-.09333.46772-.19895.69679-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99119c.22671-.09333.46783-.19889.69691-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99119c.22671-.09333.46783-.19889.69691-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99114c.22671-.09333.46783-.19889.69691-.29435v.99119c.22671-.09333.46772-.19895.69679-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99119c.22671-.09333.46783-.19889.69691-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99119c.22671-.09333.46783-.19889.69691-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.22659-.09333.4676-.19895.69679-.29435v.99119c.22659-.09333.4676-.19889.69679-.29435v.99114c.22659-.09333.46772-.19895.69679-.29435v.99119c.22659-.09333.46772-.19889.69679-.29435v.99114c.22671-.09333.46783-.19895.69679-.29435v.99114c.22671-.09333.46783-.19889.69691-.29435v.99119c.22671-.09333.46772-.19895.69679-.29435v.99114c.22671-.09333.46772-.19895.69679-.29435v.99119c.22671-.09333.46772-.19889.69691-.29435v.99114c.12617-.05198.26121-.11141.38821-.16404v36.51553h-75.57958v51.89027h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69679v.69685h.69679v.69679h.69691v.69685h.69679v.69679h.69691v.69685h.69679v.69679h201.9109v-51.89027h-.69679Z" fill="url(#badgeShadowGrad)"></path>
</g>
<!-- ============================================ -->
<!-- CONTENT SPIN GROUP (arrow + "1")             -->
<!-- Spins 5s–12s (JS-driven)                     -->
<!-- ============================================ -->
<g id="contentGroup">
<!-- WHITE ARROW (fades out at crossfade ~8s) -->
<g transform="translate(8.75, 8.25)">
<path id="arrowPath" d="M84.556 145.474H214.604L0 360.223V400.149H40.2418L80.14 360.247L254.744 185.578V315.725H311.472V88.873H84.556V145.474Z" fill="white"></path>
</g>
<!-- WHITE "1" (fades in at crossfade ~8s) -->
<path id="onePath" d="M113.26827,167.93204v-51.29952c43.08464-12.65649,71.19825-29.57453,84.34259-50.75151h42.35396v207.3875h69.00797v51.89025H107.06187v-51.89025h75.5797v-142.57874c-29.69791,18.01362-52.82235,30.42728-69.37331,37.24228Z" fill="#ffffff" opacity="0"></path>
</g>
</g>
</g>
</g>
</svg>
<div class="controls">
<button onclick="replay()">Stop</button>
<span class="time-display" id="timeDisplay">0.0s</span>
</div>
</div>
<h2>New homepage</h2>
<p>We've redesigned the homepage to better reflect the work being done on the design system. We've added sections with quick access to popular features like design tokens, and typography. We list the latest updates so you can keep track of releases right from the homepage. More improvements to come!</p>
<h2>Quicker access to the things you need</h2>
<p>Improved the search function on the website to fit into the unav header (top white bar on this page). This allowed us to remove a separate search link in the header and implements the unified unav search pattern.</p>
<h2>New contribute page</h2>
<p>There are multiple ways to contribute to the NYS Design System. Our new <a href="https://designsystem.ny.gov/about/contribute/">contributing page</a> provides multiple ways you can contribute to the NYS Design System. We've included a link for requesting new components and enhancements, a link for reporting bugs, and a link to join the conversation in our MS Teams channel. We love contributions!</p>
<p>Thanks to <a href="https://github.com/mashyamumin">Mashya Mumin</a>, <a href="https://github.com/ksorrentino">Kristin Sorrentino</a>, and <a href="https://github.com/dougbartow">Doug Bartow</a> for this new style!</p>
<style>
.badge-container { width: 500px; max-width: 90vw; }
.controls.hidden { display: none; }
button {
padding: 0.6rem 1.4rem;
border: 1px solid #286ad8;
background: transparent;
color: #286ad8;
border-radius: 6px;
cursor: pointer;
font-size: 0.9rem;
transition: all 0.2s;
}
button:hover { background: #286ad8; color: #fff; }
.caption {
margin-top: 1.5rem;
font-size: 0.85rem;
color: #5a5a5a;
text-align: center;
}
.time-display {
font-size: 0.8rem;
color: #5a5a5a;
font-variant-numeric: tabular-nums;
min-width: 4em;
}

.controls {
margin-top: 1rem;
display: flex;
gap: 1rem;
align-items: center;
flex-direction: column;
}
</style>
<script>
// ═══════════════════════════════════════════════
// CONFIG
// ═══════════════════════════════════════════════
const SHOW_CONTROLS = true; // false = hide replay button, timer, caption
const TEMPO = 0.875;
const START_ARROW_FADE = 1.0 * TEMPO;
const FINISH_ARROW_FADE = 5.0 * TEMPO;
const START_ARROW_SPIN = 3.0 * TEMPO;
const CROSSFADE_ARROW_TO_ONE = 8.0 * TEMPO;
const CROSSFADE_RATE = 0.3 * TEMPO;
const START_SCALLOP_MORPH = 9.0 * TEMPO;
const FINISH_ONE_SPIN = 12.0 * TEMPO;
const START_ONE_FADE = 12.0 * TEMPO;
const FINISH_SCALLOP_MORPH = 13.0 * TEMPO;
const FINISH_ONE_FADE = 15.0 * TEMPO;
const FINISH_CLIPPING_SPIN = 18.0 * TEMPO;
const ACCEL_DURATION = CROSSFADE_ARROW_TO_ONE - START_ARROW_SPIN; // 4s * TEMPO
const CONTENT_DECEL_DURATION = FINISH_ONE_SPIN - CROSSFADE_ARROW_TO_ONE; // 4s * TEMPO
const CLIP_ACCEL_DURATION = 2 * TEMPO;
const CLIP_DECEL_DURATION =
FINISH_CLIPPING_SPIN - (START_ARROW_SPIN + CLIP_ACCEL_DURATION);
const TOTAL_ROTATIONS = 6;
const PEAK_OMEGA =
(TOTAL_ROTATIONS * 360) / (ACCEL_DURATION / 4 + CONTENT_DECEL_DURATION / 2);
const CX = 208.75137,
CY = 208.75137;
const SHADOW_STOP_COUNT = 11; // 0% to 100% in 10% steps
const SHADOW_FADE_DUR = 0.5 * TEMPO; // each stop's fade duration
const ARROW_WAVE_SPACING =
(FINISH_ARROW_FADE - START_ARROW_FADE - SHADOW_FADE_DUR) /
(SHADOW_STOP_COUNT - 1);
const BADGE_WAVE_SPACING =
(FINISH_ONE_FADE - START_ONE_FADE - SHADOW_FADE_DUR) /
(SHADOW_STOP_COUNT - 1);
let clipGroup, counterGroup, contentGroup, arrowPath, onePath;
let logoStops = []; // arrow shadow gradient stops
let badgeStops = []; // "1" shadow gradient stops
let morphAnim; // SMIL morph element
let morphTriggered = false;
function getElements() {
clipGroup = document.getElementById("clipGroup");
counterGroup = document.getElementById("counterGroup");
contentGroup = document.getElementById("contentGroup");
arrowPath = document.getElementById("arrowPath");
onePath = document.getElementById("onePath");
morphAnim = document.getElementById("morphAnim");
logoStops = Array.from(document.querySelectorAll(".logo-stop"));
badgeStops = Array.from(document.querySelectorAll(".badge-stop"));
}
// ═══════════════════════════════════════════════
// SHADOW WAVE UPDATES (replaces SMIL)
// ═══════════════════════════════════════════════
function updateShadowWaves(t) {
// Arrow shadow: each stop fades 1->0
for (let i = 0; i < SHADOW_STOP_COUNT; i++) {
const triggerTime = START_ARROW_FADE + i * ARROW_WAVE_SPACING;
let opacity;
if (t < triggerTime) {
opacity = 1;
} else if (t < triggerTime + SHADOW_FADE_DUR) {
opacity = 1 - (t - triggerTime) / SHADOW_FADE_DUR;
} else {
opacity = 0;
}
logoStops[i].setAttribute("stop-opacity", String(opacity));
}
// Badge "1" shadow: each stop fades 0->1
for (let i = 0; i < SHADOW_STOP_COUNT; i++) {
const triggerTime = START_ONE_FADE + i * BADGE_WAVE_SPACING;
let opacity;
if (t < triggerTime) {
opacity = 0;
} else if (t < triggerTime + SHADOW_FADE_DUR) {
opacity = (t - triggerTime) / SHADOW_FADE_DUR;
} else {
opacity = 1;
}
badgeStops[i].setAttribute("stop-opacity", String(opacity));
}
}
// ═══════════════════════════════════════════════
// MORPH (SMIL, triggered by JS at scaled time)
// ═══════════════════════════════════════════════
function updateMorph(t) {
if (!morphTriggered && t >= START_SCALLOP_MORPH) {
const morphDur = FINISH_SCALLOP_MORPH - START_SCALLOP_MORPH;
morphAnim.setAttribute("dur", morphDur + "s");
morphAnim.beginElement();
morphTriggered = true;
}
}
// ═══════════════════════════════════════════════
// SPIN PHYSICS
// ═══════════════════════════════════════════════
function getContentAngle(t) {
if (t < START_ARROW_SPIN) return 0;
const elapsed = t - START_ARROW_SPIN;
const totalDur = FINISH_ONE_SPIN - START_ARROW_SPIN;
if (elapsed >= totalDur) {
return computeAngleAtEnd("content");
}
if (elapsed <= ACCEL_DURATION) {
const progress = elapsed / ACCEL_DURATION;
return ((PEAK_OMEGA * ACCEL_DURATION) / 4) * Math.pow(progress, 4);
} else {
const accelAngle = (PEAK_OMEGA * ACCEL_DURATION) / 4;
const decelElapsed = elapsed - ACCEL_DURATION;
const decelAngle =
PEAK_OMEGA * decelElapsed -
0.5 * (PEAK_OMEGA / CONTENT_DECEL_DURATION) * decelElapsed * decelElapsed;
return accelAngle + decelAngle;
}
}
function getClipAngle(t) {
if (t < START_ARROW_SPIN) return 0;
const elapsed = t - START_ARROW_SPIN;
const totalDur = FINISH_CLIPPING_SPIN - START_ARROW_SPIN;
if (elapsed >= totalDur) {
return computeAngleAtEnd("clip");
}
if (elapsed <= CLIP_ACCEL_DURATION) {
const progress = elapsed / CLIP_ACCEL_DURATION;
return ((PEAK_OMEGA * CLIP_ACCEL_DURATION) / 4) * Math.pow(progress, 4);
} else {
const accelAngle = (PEAK_OMEGA * CLIP_ACCEL_DURATION) / 4;
const decelElapsed = elapsed - CLIP_ACCEL_DURATION;
const progress = decelElapsed / CLIP_DECEL_DURATION;
const decelAngle =
((PEAK_OMEGA * CLIP_DECEL_DURATION) / 4) *
(1 - Math.pow(1 - progress, 4));
return accelAngle + decelAngle;
}
}
function computeAngleAtEnd(type) {
if (type === "clip") {
return (
(PEAK_OMEGA * CLIP_ACCEL_DURATION) / 4 +
(PEAK_OMEGA * CLIP_DECEL_DURATION) / 4
);
}
return (
(PEAK_OMEGA * ACCEL_DURATION) / 4 +
(PEAK_OMEGA * CONTENT_DECEL_DURATION) / 2
);
}
// ═══════════════════════════════════════════════
// CROSSFADE (arrow -> "1")
// ═══════════════════════════════════════════════
function updateCrossfade(t) {
if (t < CROSSFADE_ARROW_TO_ONE) {
arrowPath.setAttribute("opacity", "1");
onePath.setAttribute("opacity", "0");
} else if (t < CROSSFADE_ARROW_TO_ONE + CROSSFADE_RATE) {
const progress = (t - CROSSFADE_ARROW_TO_ONE) / CROSSFADE_RATE;
arrowPath.setAttribute("opacity", String(1 - progress));
onePath.setAttribute("opacity", String(progress));
} else {
arrowPath.setAttribute("opacity", "0");
onePath.setAttribute("opacity", "1");
}
}
// ═══════════════════════════════════════════════
// ANIMATION LOOP
// ═══════════════════════════════════════════════
let startTime = null;
let animId = null;
function animate(timestamp) {
if (!startTime) startTime = timestamp;
const t = (timestamp - startTime) / 1000;
document.getElementById("timeDisplay").textContent = t.toFixed(1) + "s";
// Spin transforms
const clipAngle = getClipAngle(t);
const contentAngle = getContentAngle(t);
clipGroup.setAttribute("transform", `rotate(${clipAngle} ${CX} ${CY})`);
counterGroup.setAttribute("transform", `rotate(${-clipAngle} ${CX} ${CY})`);
contentGroup.setAttribute("transform", `rotate(${contentAngle} ${CX} ${CY})`);
// Shadow waves
updateShadowWaves(t);
// Morph trigger
updateMorph(t);
// Crossfade
updateCrossfade(t);
// Keep running until everything is done
if (t < FINISH_CLIPPING_SPIN + 1) {
  animId = requestAnimationFrame(animate);
} else {
  animId = null;
  document.querySelector('.controls button').textContent = 'Replay';
}
}
function startAnimation() {
getElements();
morphTriggered = false;
startTime = null;
if (animId) cancelAnimationFrame(animId);
// Apply controls visibility
if (!SHOW_CONTROLS) {
document.querySelector(".controls").classList.add("hidden");
document.querySelector(".caption").classList.add("hidden");
}
animId = requestAnimationFrame(animate);
}
function replay() {
  const btn = document.querySelector('.controls button');
  if (animId) {
    // Animation is running — stop it
    cancelAnimationFrame(animId);
    animId = null;
    btn.textContent = 'Replay';
  } else {
    // Animation is stopped — restart it
    const svg = document.getElementById("badgeSvg");
    const container = svg.parentElement;
    const clone = svg.cloneNode(true);
    clone.id = "badgeSvg";
    container.replaceChild(clone, svg);
    startAnimation();
    btn.textContent = 'Stop';
  }
}
window.addEventListener("load", function() {
  const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
  if (!prefersReducedMotion) {
    startAnimation();
  }
});
</script>
<script src="https://cdn.jsdelivr.net/npm/canvas-confetti@1.9.4/dist/confetti.browser.min.js"></script>
<script>
var duration = 2.5 * 1000;
var animationEnd = Date.now() + duration;
var defaults = { startVelocity: 30, spread: 360, ticks: 60, zIndex: 0, disableForReducedMotion: true };
function randomInRange(min, max) {
  return Math.random() * (max - min) + min;
}
var interval = setInterval(function() {
  var timeLeft = animationEnd - Date.now();
  if (timeLeft <= 0) {
    return clearInterval(interval);
  }
  var particleCount = 50 * (timeLeft / duration);
  // since particles fall down, start a bit higher than random
  confetti({ ...defaults, particleCount, origin: { x: randomInRange(0.1, 0.3), y: Math.random() - 0.2 } });
  confetti({ ...defaults, particleCount, origin: { x: randomInRange(0.7, 0.9), y: Math.random() - 0.2 } });
}, 250);
</script>]]></content>
      <pubDate>Thu, 19 Feb 2026 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/happy-birthday-nysds/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.13.1</title>
      <link>https://designsystem.ny.gov/about/updates/1.13.1-release/</link>
      <description><![CDATA[<h2>Customize your search engine in <code>&lt;nys-unavheader&gt;</code></h2>
<p>The <code>&lt;nys-unavheader&gt;</code> now supports a custom search url. Simply change the property <code>&quot;searchUrl&quot;</code> to point to a valid search endpoint and be sure to include the search parameter (Usually &quot;q=&quot;, but your mileage may vary). To see an example of the search, use the search at the very top right of this page to search this site. <a href="https://designsystem.ny.gov/components/unav-header/#custom-search-endpoint">Read the custom search endpoint documentation for <code>&lt;nys-unavheader&gt;</code></a>.</p>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> searched for this solution.</p>
<h2>New <code>&lt;nys-badge&gt;</code> <strong>STRONG</strong> variants</h2>
<p>When creating the <code>&lt;nys-table&gt;</code> component we realized that the muted color badges we created were not standing out enough in a crowd of other table cells. So we created an additional variant: &quot;strong.&quot; Use the strong badge variant to help your badges stand out in a crowd. Continue to use the default variant in most cases. <a href="https://designsystem.ny.gov/components/badge/#variant">Read the badge documentation</a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<div class="nys-grid-row">
  <div class="nys-grid-col-3">
    <nys-badge label="Neutral" variant="strong" prefixIcon=""></nys-badge>
  </div>
  <div class="nys-grid-col-3">
    <nys-badge label="Error" intent="error" variant="strong" prefixIcon=""></nys-badge>
  </div>
  <div class="nys-grid-col-3">
    <nys-badge label="Warning" intent="warning" variant="strong" prefixIcon=""></nys-badge>
  </div>
  <div class="nys-grid-col-3">
    <nys-badge label="Success" intent="success" variant="strong" prefixIcon=""></nys-badge>
  </div>
</div>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-badge</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Neutral<span class="token punctuation">"</span></span> <span class="token attr-name">variant</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>strong<span class="token punctuation">"</span></span> <span class="token attr-name">prefixIcon</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-badge</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-badge</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Error<span class="token punctuation">"</span></span> <span class="token attr-name">intent</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>error<span class="token punctuation">"</span></span> <span class="token attr-name">variant</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>strong<span class="token punctuation">"</span></span> <span class="token attr-name">prefixIcon</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-badge</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-badge</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Warning<span class="token punctuation">"</span></span> <span class="token attr-name">intent</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>warning<span class="token punctuation">"</span></span> <span class="token attr-name">variant</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>strong<span class="token punctuation">"</span></span> <span class="token attr-name">prefixIcon</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-badge</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-badge</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Success<span class="token punctuation">"</span></span> <span class="token attr-name">intent</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>success<span class="token punctuation">"</span></span> <span class="token attr-name">variant</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>strong<span class="token punctuation">"</span></span> <span class="token attr-name">prefixIcon</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-badge</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> showed her strength.</p>
<h2>Bug fixes</h2>
<ul>
<li>Windows build fixes</li>
<li>Pagination style fixes</li>
<li>Modal component fixes</li>
<li>Remove Stepper demo files from NPM package</li>
<li>Table fixed &quot;scheduled update&quot; error</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a>, <a href="https://github.com/novacat35">Robert Chen</a>, and <a href="https://github.com/mendeza">Aaron Mendez</a> squashed these bugs.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>None</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.13.1">See the full developer release notes for v.1.13.1 →</a></p>
<link rel="stylesheet" href="https://designsystem.ny.gov/assets/css/utilities.css" />
]]></description>
      <content><![CDATA[<h2>Customize your search engine in <code>&lt;nys-unavheader&gt;</code></h2>
<p>The <code>&lt;nys-unavheader&gt;</code> now supports a custom search url. Simply change the property <code>&quot;searchUrl&quot;</code> to point to a valid search endpoint and be sure to include the search parameter (Usually &quot;q=&quot;, but your mileage may vary). To see an example of the search, use the search at the very top right of this page to search this site. <a href="https://designsystem.ny.gov/components/unav-header/#custom-search-endpoint">Read the custom search endpoint documentation for <code>&lt;nys-unavheader&gt;</code></a>.</p>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> searched for this solution.</p>
<h2>New <code>&lt;nys-badge&gt;</code> <strong>STRONG</strong> variants</h2>
<p>When creating the <code>&lt;nys-table&gt;</code> component we realized that the muted color badges we created were not standing out enough in a crowd of other table cells. So we created an additional variant: &quot;strong.&quot; Use the strong badge variant to help your badges stand out in a crowd. Continue to use the default variant in most cases. <a href="https://designsystem.ny.gov/components/badge/#variant">Read the badge documentation</a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<div class="nys-grid-row">
  <div class="nys-grid-col-3">
    <nys-badge label="Neutral" variant="strong" prefixIcon=""></nys-badge>
  </div>
  <div class="nys-grid-col-3">
    <nys-badge label="Error" intent="error" variant="strong" prefixIcon=""></nys-badge>
  </div>
  <div class="nys-grid-col-3">
    <nys-badge label="Warning" intent="warning" variant="strong" prefixIcon=""></nys-badge>
  </div>
  <div class="nys-grid-col-3">
    <nys-badge label="Success" intent="success" variant="strong" prefixIcon=""></nys-badge>
  </div>
</div>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-badge</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Neutral<span class="token punctuation">"</span></span> <span class="token attr-name">variant</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>strong<span class="token punctuation">"</span></span> <span class="token attr-name">prefixIcon</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-badge</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-badge</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Error<span class="token punctuation">"</span></span> <span class="token attr-name">intent</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>error<span class="token punctuation">"</span></span> <span class="token attr-name">variant</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>strong<span class="token punctuation">"</span></span> <span class="token attr-name">prefixIcon</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-badge</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-badge</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Warning<span class="token punctuation">"</span></span> <span class="token attr-name">intent</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>warning<span class="token punctuation">"</span></span> <span class="token attr-name">variant</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>strong<span class="token punctuation">"</span></span> <span class="token attr-name">prefixIcon</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-badge</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-badge</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Success<span class="token punctuation">"</span></span> <span class="token attr-name">intent</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>success<span class="token punctuation">"</span></span> <span class="token attr-name">variant</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>strong<span class="token punctuation">"</span></span> <span class="token attr-name">prefixIcon</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-badge</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> showed her strength.</p>
<h2>Bug fixes</h2>
<ul>
<li>Windows build fixes</li>
<li>Pagination style fixes</li>
<li>Modal component fixes</li>
<li>Remove Stepper demo files from NPM package</li>
<li>Table fixed &quot;scheduled update&quot; error</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a>, <a href="https://github.com/novacat35">Robert Chen</a>, and <a href="https://github.com/mendeza">Aaron Mendez</a> squashed these bugs.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>None</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.13.1">See the full developer release notes for v.1.13.1 →</a></p>
<link rel="stylesheet" href="https://designsystem.ny.gov/assets/css/utilities.css" />
]]></content>
      <pubDate>Thu, 05 Feb 2026 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.13.1-release/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.13.0 “TableTop”</title>
      <link>https://designsystem.ny.gov/about/updates/1.13.0-release/</link>
      <description><![CDATA[<h2>Why “TableTop?” 🏔️</h2>
<p>When we name our releases, we pick from a list of Adirondack high peaks. For this release, we felt it appropriate to name it after the <code>&lt;nys-table&gt;</code> component. TableTop is the 19th highest peak in New York, with an elevation of 4,427 feet (1,349 m)!</p>
<p><a href="https://en.wikipedia.org/wiki/Table_Top_Mountain_(New_York)">Learn more about TableTop Mountain.</a></p>
<h2>New <code>&lt;nys-datepicker&gt;</code> component</h2>
<p>The user experience for scheduling appointments, and selecting future dates, can be confusing without a calendar view. The new <code>&lt;nys-datepicker&gt;</code> component provides you a way to give users a quick calendar view of dates. <strong>Importantly</strong>, do not use this for “memorable dates” such as “date of birth” or “anniversary date,” instead use a textinput for entering the date manually. <a href="https://designsystem.ny.gov/components/datepicker/">Read the datepicker documentation</a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-datepicker></nys-datepicker>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-datepicker</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-datepicker</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/novacat35">Robert Chen</a> saved the date!</p>
<h2>New <code>&lt;nys-table&gt;</code> component</h2>
<p>Tables are very useful for displaying structured data on the web. The new <code>&lt;nys-table&gt;</code> component aims to standardize the look, feel, and functionality of a table element. You'll find features such as zebra striping, column sorting, and more. <a href="https://designsystem.ny.gov/components/table/">Read the table documentation</a></p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-table id="table3" name="table3" bordered="" sortable="" striped="">
  <table>
    <caption>
    New York State High Peaks and Popular Hikes
    </caption>
    <thead>
      <tr>
        <th>Mountain</th>
        <th>Peak Height (ft)</th>
        <th>Hike Name</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>Marcy</td>
        <td>5,344</td>
        <td>Van Hoevenberg Trail</td>
      </tr>
      <tr>
        <td>Algonquin</td>
        <td>5,114</td>
        <td>Northeast Trail</td>
      </tr>
      <tr>
        <td>Haystack</td>
        <td>4,960</td>
        <td>Johns Brook Trail</td>
      </tr>
      <tr>
        <td>Skylight</td>
        <td>4,926</td>
        <td>Lake Tear Trail</td>
      </tr>
      <tr>
        <td>Whiteface</td>
        <td>4,867</td>
        <td>Whiteface Mountain Trail</td>
      </tr>
    </tbody>
  </table>
</nys-table>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-table</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>table3<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>table3<span class="token punctuation">"</span></span> <span class="token attr-name">bordered</span> <span class="token attr-name">sortable</span> <span class="token attr-name">striped</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>table</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>caption</span><span class="token punctuation">></span></span>
    New York State High Peaks and Popular Hikes
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>caption</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>thead</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>tr</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>th</span><span class="token punctuation">></span></span>Mountain<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>th</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>th</span><span class="token punctuation">></span></span>Peak Height (ft)<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>th</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>th</span><span class="token punctuation">></span></span>Hike Name<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>th</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>tr</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>thead</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>tbody</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>tr</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>Marcy<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>5,344<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>Van Hoevenberg Trail<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>tr</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>tr</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>Algonquin<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>5,114<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>Northeast Trail<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>tr</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>tr</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>Haystack<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>4,960<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>Johns Brook Trail<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>tr</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>tr</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>Skylight<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>4,926<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>Lake Tear Trail<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>tr</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>tr</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>Whiteface<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>4,867<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>Whiteface Mountain Trail<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>tr</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>tbody</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>table</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-table</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> tabled this component.</p>
<h2>“User Actions” in <code>&lt;nys-globalheader&gt;</code></h2>
<p>Based on community feedback, we identified a need to allow engineers to add a “user” menu to the global header. The <code>&lt;nys-globalheader&gt;</code> component includes a named slot called <code>user-actions</code>. This slot allows you to insert custom HTML content, such as user profile links, settings, or logout buttons, into the header. <a href="https://designsystem.ny.gov/components/globalheader/#user-actions">Read the user actions documentation</a></p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-globalheader appName="User Registration Form" agencyName="Office of Information Technology Services">
  <nys-button slot="user-actions" label="Sign out" prefixIcon="slotted">
    <nys-avatar slot="prefix-icon" ariaLabel="User avatar" initials="NY"></nys-avatar>
  </nys-button>
</nys-globalheader>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-globalheader</span> 
  <span class="token attr-name">appName</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>User Registration Form<span class="token punctuation">"</span></span> 
  <span class="token attr-name">agencyName</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Office of Information Technology Services<span class="token punctuation">"</span></span>
<span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-button</span> <span class="token attr-name">slot</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>user-actions<span class="token punctuation">"</span></span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Sign out<span class="token punctuation">"</span></span> <span class="token attr-name">prefixIcon</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>slotted<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-avatar</span>
      <span class="token attr-name">slot</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>prefix-icon<span class="token punctuation">"</span></span>
      <span class="token attr-name">ariaLabel</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>User avatar<span class="token punctuation">"</span></span>
      <span class="token attr-name">initials</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>NY<span class="token punctuation">"</span></span>
    <span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-avatar</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-button</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-globalheader</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> modified this component.</p>
<h2>Figma updates</h2>
<p>Today we’re launching the official versions of our new table and datepicker components in our design library.</p>
<ul>
<li><strong>Table</strong> - The table component is ready to use in your Figma designs.</li>
<li><strong>Datepicker</strong> - The datepicker component is ready to use in your Figma designs, too!</li>
</ul>
<p><a href="https://github.com/ksorrentino">Kristin Sorrentino</a> updated these important components!</p>
<h2>Bug fixes</h2>
<ul>
<li>Fixed some heading tokens to align with Figma library</li>
<li><code>&lt;nys-select&gt;</code> now has a default height applied</li>
<li><code>&lt;nys-select&gt;</code> now has a proper disabled state color applied</li>
<li><code>&lt;nys-table&gt;</code> has a default filled background color now</li>
<li>Clicking the description on an <code>&lt;nys-checkbox&gt;</code> or <code>&lt;nys-radiobutton&gt;</code> now properly selects the element</li>
<li>Many JSDoc updates for better Custom Element Manifest integration</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> and <a href="https://github.com/novacat35">Robert Chen</a> fix broken things.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>None</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.13.0">See the full developer release notes for v.1.13.0 →</a></p>
<link rel="stylesheet" href="https://designsystem.ny.gov/assets/css/utilities.css" />
]]></description>
      <content><![CDATA[<h2>Why “TableTop?” 🏔️</h2>
<p>When we name our releases, we pick from a list of Adirondack high peaks. For this release, we felt it appropriate to name it after the <code>&lt;nys-table&gt;</code> component. TableTop is the 19th highest peak in New York, with an elevation of 4,427 feet (1,349 m)!</p>
<p><a href="https://en.wikipedia.org/wiki/Table_Top_Mountain_(New_York)">Learn more about TableTop Mountain.</a></p>
<h2>New <code>&lt;nys-datepicker&gt;</code> component</h2>
<p>The user experience for scheduling appointments, and selecting future dates, can be confusing without a calendar view. The new <code>&lt;nys-datepicker&gt;</code> component provides you a way to give users a quick calendar view of dates. <strong>Importantly</strong>, do not use this for “memorable dates” such as “date of birth” or “anniversary date,” instead use a textinput for entering the date manually. <a href="https://designsystem.ny.gov/components/datepicker/">Read the datepicker documentation</a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-datepicker></nys-datepicker>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-datepicker</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-datepicker</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/novacat35">Robert Chen</a> saved the date!</p>
<h2>New <code>&lt;nys-table&gt;</code> component</h2>
<p>Tables are very useful for displaying structured data on the web. The new <code>&lt;nys-table&gt;</code> component aims to standardize the look, feel, and functionality of a table element. You'll find features such as zebra striping, column sorting, and more. <a href="https://designsystem.ny.gov/components/table/">Read the table documentation</a></p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-table id="table3" name="table3" bordered="" sortable="" striped="">
  <table>
    <caption>
    New York State High Peaks and Popular Hikes
    </caption>
    <thead>
      <tr>
        <th>Mountain</th>
        <th>Peak Height (ft)</th>
        <th>Hike Name</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>Marcy</td>
        <td>5,344</td>
        <td>Van Hoevenberg Trail</td>
      </tr>
      <tr>
        <td>Algonquin</td>
        <td>5,114</td>
        <td>Northeast Trail</td>
      </tr>
      <tr>
        <td>Haystack</td>
        <td>4,960</td>
        <td>Johns Brook Trail</td>
      </tr>
      <tr>
        <td>Skylight</td>
        <td>4,926</td>
        <td>Lake Tear Trail</td>
      </tr>
      <tr>
        <td>Whiteface</td>
        <td>4,867</td>
        <td>Whiteface Mountain Trail</td>
      </tr>
    </tbody>
  </table>
</nys-table>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-table</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>table3<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>table3<span class="token punctuation">"</span></span> <span class="token attr-name">bordered</span> <span class="token attr-name">sortable</span> <span class="token attr-name">striped</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>table</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>caption</span><span class="token punctuation">></span></span>
    New York State High Peaks and Popular Hikes
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>caption</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>thead</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>tr</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>th</span><span class="token punctuation">></span></span>Mountain<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>th</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>th</span><span class="token punctuation">></span></span>Peak Height (ft)<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>th</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>th</span><span class="token punctuation">></span></span>Hike Name<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>th</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>tr</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>thead</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>tbody</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>tr</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>Marcy<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>5,344<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>Van Hoevenberg Trail<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>tr</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>tr</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>Algonquin<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>5,114<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>Northeast Trail<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>tr</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>tr</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>Haystack<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>4,960<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>Johns Brook Trail<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>tr</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>tr</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>Skylight<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>4,926<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>Lake Tear Trail<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>tr</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>tr</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>Whiteface<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>4,867<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>td</span><span class="token punctuation">></span></span>Whiteface Mountain Trail<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>td</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>tr</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>tbody</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>table</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-table</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> tabled this component.</p>
<h2>“User Actions” in <code>&lt;nys-globalheader&gt;</code></h2>
<p>Based on community feedback, we identified a need to allow engineers to add a “user” menu to the global header. The <code>&lt;nys-globalheader&gt;</code> component includes a named slot called <code>user-actions</code>. This slot allows you to insert custom HTML content, such as user profile links, settings, or logout buttons, into the header. <a href="https://designsystem.ny.gov/components/globalheader/#user-actions">Read the user actions documentation</a></p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-globalheader appName="User Registration Form" agencyName="Office of Information Technology Services">
  <nys-button slot="user-actions" label="Sign out" prefixIcon="slotted">
    <nys-avatar slot="prefix-icon" ariaLabel="User avatar" initials="NY"></nys-avatar>
  </nys-button>
</nys-globalheader>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-globalheader</span> 
  <span class="token attr-name">appName</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>User Registration Form<span class="token punctuation">"</span></span> 
  <span class="token attr-name">agencyName</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Office of Information Technology Services<span class="token punctuation">"</span></span>
<span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-button</span> <span class="token attr-name">slot</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>user-actions<span class="token punctuation">"</span></span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Sign out<span class="token punctuation">"</span></span> <span class="token attr-name">prefixIcon</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>slotted<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-avatar</span>
      <span class="token attr-name">slot</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>prefix-icon<span class="token punctuation">"</span></span>
      <span class="token attr-name">ariaLabel</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>User avatar<span class="token punctuation">"</span></span>
      <span class="token attr-name">initials</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>NY<span class="token punctuation">"</span></span>
    <span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-avatar</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-button</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-globalheader</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> modified this component.</p>
<h2>Figma updates</h2>
<p>Today we’re launching the official versions of our new table and datepicker components in our design library.</p>
<ul>
<li><strong>Table</strong> - The table component is ready to use in your Figma designs.</li>
<li><strong>Datepicker</strong> - The datepicker component is ready to use in your Figma designs, too!</li>
</ul>
<p><a href="https://github.com/ksorrentino">Kristin Sorrentino</a> updated these important components!</p>
<h2>Bug fixes</h2>
<ul>
<li>Fixed some heading tokens to align with Figma library</li>
<li><code>&lt;nys-select&gt;</code> now has a default height applied</li>
<li><code>&lt;nys-select&gt;</code> now has a proper disabled state color applied</li>
<li><code>&lt;nys-table&gt;</code> has a default filled background color now</li>
<li>Clicking the description on an <code>&lt;nys-checkbox&gt;</code> or <code>&lt;nys-radiobutton&gt;</code> now properly selects the element</li>
<li>Many JSDoc updates for better Custom Element Manifest integration</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> and <a href="https://github.com/novacat35">Robert Chen</a> fix broken things.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>None</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.13.0">See the full developer release notes for v.1.13.0 →</a></p>
<link rel="stylesheet" href="https://designsystem.ny.gov/assets/css/utilities.css" />
]]></content>
      <pubDate>Thu, 22 Jan 2026 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.13.0-release/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.12.1</title>
      <link>https://designsystem.ny.gov/about/updates/1.12.1-release/</link>
      <description><![CDATA[<h2>NYS Design System 2025 wrapped</h2>
<p>Visit our <a href="https://designsystem.ny.gov/2025-wrapped">NYS Design System 2025 Wrapped</a> page to see our highlighted accomplishments for the Design System over the last year. We shipped 34 releases featuring a lot of capabilities and configuration options. Design Tokens made available as CSS variables will transform any old UI into an NYS-branded UI in a short amount of time!</p>
<h2>Figma updates</h2>
<p>Today we’re launching <strong>PREVIEW</strong> versions of our new table and datepicker components.</p>
<ul>
<li><strong>Table</strong> - The table component is ready to use in your Figma designs. (Code is close to release!)</li>
<li><strong>Datepicker</strong> - The datepicker component is ready to use in your Figma designs, too!</li>
</ul>
<p><a href="https://github.com/leo-vogel">Leo Vogel</a> and <a href="https://github.com/ksorrentino">Kristin Sorrentino</a> updated these important components!</p>
<h2>Bug fixes</h2>
<ul>
<li>Stepper voiceover bugfix</li>
<li>Begin JSDoc documentation for code components</li>
<li>Fix RTL support in nys-alert and nys-button</li>
<li>Fixed readonly and required props interfering with each other</li>
<li>Added more tests to some components</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> and <a href="https://github.com/novacat35">Robert Chen</a> fix broken things.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>None</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.12.1">See the full developer release notes for v.1.12.1 →</a></p>
<link rel="stylesheet" href="https://designsystem.ny.gov/assets/css/utilities.css" />
]]></description>
      <content><![CDATA[<h2>NYS Design System 2025 wrapped</h2>
<p>Visit our <a href="https://designsystem.ny.gov/2025-wrapped">NYS Design System 2025 Wrapped</a> page to see our highlighted accomplishments for the Design System over the last year. We shipped 34 releases featuring a lot of capabilities and configuration options. Design Tokens made available as CSS variables will transform any old UI into an NYS-branded UI in a short amount of time!</p>
<h2>Figma updates</h2>
<p>Today we’re launching <strong>PREVIEW</strong> versions of our new table and datepicker components.</p>
<ul>
<li><strong>Table</strong> - The table component is ready to use in your Figma designs. (Code is close to release!)</li>
<li><strong>Datepicker</strong> - The datepicker component is ready to use in your Figma designs, too!</li>
</ul>
<p><a href="https://github.com/leo-vogel">Leo Vogel</a> and <a href="https://github.com/ksorrentino">Kristin Sorrentino</a> updated these important components!</p>
<h2>Bug fixes</h2>
<ul>
<li>Stepper voiceover bugfix</li>
<li>Begin JSDoc documentation for code components</li>
<li>Fix RTL support in nys-alert and nys-button</li>
<li>Fixed readonly and required props interfering with each other</li>
<li>Added more tests to some components</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> and <a href="https://github.com/novacat35">Robert Chen</a> fix broken things.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>None</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.12.1">See the full developer release notes for v.1.12.1 →</a></p>
<link rel="stylesheet" href="https://designsystem.ny.gov/assets/css/utilities.css" />
]]></content>
      <pubDate>Wed, 31 Dec 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.12.1-release/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.12.0 “Skylight”</title>
      <link>https://designsystem.ny.gov/about/updates/1.12.0-release/</link>
      <description><![CDATA[<h2>Why “Skylight?” 🏔️</h2>
<p>When we name our releases, we pick from a list of Adirondack high peaks. For this release, we held a vote in our teams channel and Office Hours. After a total of 34 responses, our winner is <strong>Skylight</strong> with 17 votes! Skylight is the fourth-highest peak in New York, with an elevation of 4,924 feet (1,501 m)!</p>
<p><a href="https://en.wikipedia.org/wiki/Mount_Skylight">Learn more about Mount Skylight.</a></p>
<h2>Hello new tooltip!</h2>
<p><nys-alert type="warning" heading="WARNING" text="The old tooltip wrapper has been removed from the package as of 1.12.0. If you are using it, please update your code to use the new standalone tooltip component." primaryLabel="Documentation for new standalone tooltip component" primaryAction="/components/tooltip"></nys-alert></p>
<p>We realized soon after releasing the <code>&lt;nys-tooltip&gt;</code> component that is was too limited in scope. It was only able to be wrapped around buttons and icons. So we took a look at other design systems and decided to implement tooltip as a stand-alone component. Using a <code>for</code> attribute to target an <code>id</code> will display tooltips on the following elements:</p>
<ul>
<li><code>&lt;nys-button&gt;</code></li>
<li><code>&lt;nys-icon&gt;</code></li>
<li><code>&lt;nys-textinput&gt;</code> (appears as a hint icon)</li>
<li><code>&lt;nys-textarea&gt;</code> (appears as a hint icon)</li>
<li><code>&lt;nys-select&gt;</code> (appears as a hint icon)</li>
<li><code>&lt;nys-checkboxgroup&gt;</code> (appears as a hint icon)</li>
<li><code>&lt;nys-checkbox&gt;</code> (appears as a hint icon)</li>
<li><code>&lt;nys-radiogroup&gt;</code> (appears as a hint icon)</li>
<li><code>&lt;nys-fileinput&gt;</code> (appears as a hint icon)</li>
</ul>
<h3>Tooltip demo</h3>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-tooltip for="my-textinput" text="I am a tooltip."></nys-tooltip>
<nys-textinput id="my-textinput" name="fullName" label="Full name" description="Enter your full legal name" width="md"></nys-textinput>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-tooltip</span> <span class="token attr-name">for</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>my-textinput<span class="token punctuation">"</span></span> <span class="token attr-name">text</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>I am a tooltip.<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-tooltip</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-textinput</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>my-textinput<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>fullName<span class="token punctuation">'</span></span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Full name<span class="token punctuation">"</span></span> <span class="token attr-name">description</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Enter your full legal name<span class="token punctuation">"</span></span> <span class="token attr-name">width</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>md<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-textinput</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/novacat35">Robert Chen</a> was tipped off about this change.</p>
<h2>New responsive utility classes</h2>
<p>We have added new responsive variants for our popular utility classes. You can now apply certain utility classes at specific breakpoints as written below:</p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<div class="nys-grid-row border-left bg-white">
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">1</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">2</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">3</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">4</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">5</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">6</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">7</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">8</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">9</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">10</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">11</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">12</div>
  </div>
</div>
<div class="docs-grid-example"><div class="nys-grid-row">
<div class="nys-tablet:nys-grid-col-6 nys-desktop:nys-grid-col-4">12 columns at mobile size</div>
<div class="nys-tablet:nys-grid-col-6 nys-desktop:nys-grid-col-4">6 columns at tablet size</div>
<div class="nys-tablet:nys-grid-col-6 nys-desktop:nys-grid-col-4">4 columns at desktop size</div>
</div>
</div>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>nys-grid-row<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>nys-tablet:nys-grid-col-6 nys-desktop:nys-grid-col-4<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>12 columns at mobile size.<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>nys-tablet:nys-grid-col-6 nys-desktop:nys-grid-col-4<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>6 columns at tablet size.<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>nys-tablet:nys-grid-col-6 nys-desktop:nys-grid-col-4<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>4 columns at desktop size.<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p>You can read the full documentation for the new responsive utility classes on our <a href="https://designsystem.ny.gov/foundations/utilities/responsive">responsive utility documentation page</a>.</p>
<p><a href="https://github.com/esteinborn">Eric Steinborn</a> was responsible for these.</p>
<h2>Figma updates</h2>
<ul>
<li><strong>Table</strong> - The table component is ready to use in your Figma designs!</li>
<li><strong>Datepicker</strong> - The datepicker component is ready to use in your Figma designs, too!</li>
</ul>
<p><a href="https://github.com/leo-vogel">Leo Vogel</a> and <a href="https://github.com/ksorrentino">Kristin Sorrentino</a> rose to the challenge!</p>
<h2>Updates to Custom Element Manifest (CEM)</h2>
<ul>
<li>Added missing events to several components including <code>&lt;nys-textinput&gt;</code>, <code>&lt;nys-textarea&gt;</code>, and <code>&lt;nys-select&gt;</code>.</li>
<li>Improved descriptions and typings for various properties and methods across multiple components.</li>
<li>VSCode intellisense now properly reports back options for properties like <code>size</code> in <code>&lt;nys-icon&gt;</code> and <code>width</code> in <code>&lt;nys-button&gt;</code>.</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> insisted on improving intellisense.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li><code>&lt;nys-tooltip&gt;</code> is now a standalone component. The old tooltip wrapper has been removed from the package. If you are using it, please update your code to use the <a href="https://designsystem.ny.gov/components/tooltip">new standalone tooltip component</a>.</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>None</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.12.0">See the full developer release notes for v.1.12.0 →</a></p>
<link rel="stylesheet" href="https://designsystem.ny.gov/assets/css/utilities.css" />
]]></description>
      <content><![CDATA[<h2>Why “Skylight?” 🏔️</h2>
<p>When we name our releases, we pick from a list of Adirondack high peaks. For this release, we held a vote in our teams channel and Office Hours. After a total of 34 responses, our winner is <strong>Skylight</strong> with 17 votes! Skylight is the fourth-highest peak in New York, with an elevation of 4,924 feet (1,501 m)!</p>
<p><a href="https://en.wikipedia.org/wiki/Mount_Skylight">Learn more about Mount Skylight.</a></p>
<h2>Hello new tooltip!</h2>
<p><nys-alert type="warning" heading="WARNING" text="The old tooltip wrapper has been removed from the package as of 1.12.0. If you are using it, please update your code to use the new standalone tooltip component." primaryLabel="Documentation for new standalone tooltip component" primaryAction="/components/tooltip"></nys-alert></p>
<p>We realized soon after releasing the <code>&lt;nys-tooltip&gt;</code> component that is was too limited in scope. It was only able to be wrapped around buttons and icons. So we took a look at other design systems and decided to implement tooltip as a stand-alone component. Using a <code>for</code> attribute to target an <code>id</code> will display tooltips on the following elements:</p>
<ul>
<li><code>&lt;nys-button&gt;</code></li>
<li><code>&lt;nys-icon&gt;</code></li>
<li><code>&lt;nys-textinput&gt;</code> (appears as a hint icon)</li>
<li><code>&lt;nys-textarea&gt;</code> (appears as a hint icon)</li>
<li><code>&lt;nys-select&gt;</code> (appears as a hint icon)</li>
<li><code>&lt;nys-checkboxgroup&gt;</code> (appears as a hint icon)</li>
<li><code>&lt;nys-checkbox&gt;</code> (appears as a hint icon)</li>
<li><code>&lt;nys-radiogroup&gt;</code> (appears as a hint icon)</li>
<li><code>&lt;nys-fileinput&gt;</code> (appears as a hint icon)</li>
</ul>
<h3>Tooltip demo</h3>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<nys-tooltip for="my-textinput" text="I am a tooltip."></nys-tooltip>
<nys-textinput id="my-textinput" name="fullName" label="Full name" description="Enter your full legal name" width="md"></nys-textinput>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-tooltip</span> <span class="token attr-name">for</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>my-textinput<span class="token punctuation">"</span></span> <span class="token attr-name">text</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>I am a tooltip.<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-tooltip</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-textinput</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>my-textinput<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>fullName<span class="token punctuation">'</span></span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Full name<span class="token punctuation">"</span></span> <span class="token attr-name">description</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Enter your full legal name<span class="token punctuation">"</span></span> <span class="token attr-name">width</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>md<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-textinput</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/novacat35">Robert Chen</a> was tipped off about this change.</p>
<h2>New responsive utility classes</h2>
<p>We have added new responsive variants for our popular utility classes. You can now apply certain utility classes at specific breakpoints as written below:</p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<div class="nys-grid-row border-left bg-white">
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">1</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">2</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">3</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">4</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">5</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">6</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">7</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">8</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">9</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">10</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">11</div>
  </div>
  <div class="nys-grid-col-1 border-right">
    <div class="text-center">12</div>
  </div>
</div>
<div class="docs-grid-example"><div class="nys-grid-row">
<div class="nys-tablet:nys-grid-col-6 nys-desktop:nys-grid-col-4">12 columns at mobile size</div>
<div class="nys-tablet:nys-grid-col-6 nys-desktop:nys-grid-col-4">6 columns at tablet size</div>
<div class="nys-tablet:nys-grid-col-6 nys-desktop:nys-grid-col-4">4 columns at desktop size</div>
</div>
</div>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>nys-grid-row<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>nys-tablet:nys-grid-col-6 nys-desktop:nys-grid-col-4<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>12 columns at mobile size.<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>nys-tablet:nys-grid-col-6 nys-desktop:nys-grid-col-4<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>6 columns at tablet size.<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>nys-tablet:nys-grid-col-6 nys-desktop:nys-grid-col-4<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>4 columns at desktop size.<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p>You can read the full documentation for the new responsive utility classes on our <a href="https://designsystem.ny.gov/foundations/utilities/responsive">responsive utility documentation page</a>.</p>
<p><a href="https://github.com/esteinborn">Eric Steinborn</a> was responsible for these.</p>
<h2>Figma updates</h2>
<ul>
<li><strong>Table</strong> - The table component is ready to use in your Figma designs!</li>
<li><strong>Datepicker</strong> - The datepicker component is ready to use in your Figma designs, too!</li>
</ul>
<p><a href="https://github.com/leo-vogel">Leo Vogel</a> and <a href="https://github.com/ksorrentino">Kristin Sorrentino</a> rose to the challenge!</p>
<h2>Updates to Custom Element Manifest (CEM)</h2>
<ul>
<li>Added missing events to several components including <code>&lt;nys-textinput&gt;</code>, <code>&lt;nys-textarea&gt;</code>, and <code>&lt;nys-select&gt;</code>.</li>
<li>Improved descriptions and typings for various properties and methods across multiple components.</li>
<li>VSCode intellisense now properly reports back options for properties like <code>size</code> in <code>&lt;nys-icon&gt;</code> and <code>width</code> in <code>&lt;nys-button&gt;</code>.</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> insisted on improving intellisense.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li><code>&lt;nys-tooltip&gt;</code> is now a standalone component. The old tooltip wrapper has been removed from the package. If you are using it, please update your code to use the <a href="https://designsystem.ny.gov/components/tooltip">new standalone tooltip component</a>.</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>None</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.12.0">See the full developer release notes for v.1.12.0 →</a></p>
<link rel="stylesheet" href="https://designsystem.ny.gov/assets/css/utilities.css" />
]]></content>
      <pubDate>Thu, 11 Dec 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.12.0-release/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.11.3</title>
      <link>https://designsystem.ny.gov/about/updates/1.11.3-release/</link>
      <description><![CDATA[<h2>Community Figma file now publicly available to non-NYS employees</h2>
<p>The Figma Library for the New York State Design System is now available in the Figma Community for non-NYS Employees. If you are an NYS Employee, contractor, or vendor of NYS please use the actual Figma library.</p>
<p>The Community library contains all of the components in the system, the project template, and you can even configure a custom theme so local governments within New York State can adopt the design system. Use the <a href="https://www.figma.com/community/file/1574803287825265318">NYS Design System Figma file today</a>.</p>
<p><a href="https://github.com/leo-vogel">Leo Vogel</a> and <a href="https://github.com/ksorrentino">Kristin Sorrentino</a> published the Figma file.</p>
<h2>Sass under the hood</h2>
<p>Our initial setup for the NYS Design System included raw CSS file imports through JavaScript. We have run out of runway with vanilla CSS and have made the conversion to Sass for all style files. Sass gives us more flexibility in generating CSS programatically. All components have been converted to use Sass, and an added benefit, the file size for the package was reduced by 40KB just by including minified CSS instead of expanded. Stay tuned for an extensive utility class expansion coming soon!</p>
<p><a href="https://github.com/esteinborn">Eric Steinborn</a> ended up getting real sassy.</p>
<h2>VSCode autocomplete support</h2>
<p>To add NYS Design System vscode autocompletion to your editor:</p>
<p>Copy the <code>.vscode/</code> folder into the root of your project. You can find it in <code>/node_modules/@nysds/components/dist/.vscode</code></p>
<p>Edit the following file (create it if it doesn't exist)</p>
<p><code>./vscode/settings.json</code></p>
<p>Add the following lines and save the file:</p>
<pre class="language-json"><code class="language-json"><span class="token property">"html.customData"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">".vscode/vscode.html-custom-data.json"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token property">"css.customData"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">".vscode/vscode.css-custom-data.json"</span><span class="token punctuation">]</span></code></pre>
<p>If you have existing settings, add the custom data in addition to the files already listed.</p>
<h2>Notable bug fixes</h2>
<ul>
<li>Fix: Pagination edge case bug by @emilygorelik</li>
<li>Fix: select initial validation by @emilygorelik</li>
<li>Fix: unavheader aria role by @emilygorelik</li>
<li>Fix: Typography token weights by @emilygorelik</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> is a verified exterminator.</p>
<h2>New icons</h2>
<p><nys-icon name="expand_all" size="4xl"></nys-icon> <code>expand_all</code></p>
<p><nys-icon name="height" size="4xl"></nys-icon> <code>height</code></p>
<p><nys-icon name="straight" size="4xl"></nys-icon> <code>straight</code></p>
<p><a href="https://github.com/novacat35">Robert Chen</a> sees icons in his sleep.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>None</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>None</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.11.3">See the full developer release notes for v.1.11.3 →</a></p>
]]></description>
      <content><![CDATA[<h2>Community Figma file now publicly available to non-NYS employees</h2>
<p>The Figma Library for the New York State Design System is now available in the Figma Community for non-NYS Employees. If you are an NYS Employee, contractor, or vendor of NYS please use the actual Figma library.</p>
<p>The Community library contains all of the components in the system, the project template, and you can even configure a custom theme so local governments within New York State can adopt the design system. Use the <a href="https://www.figma.com/community/file/1574803287825265318">NYS Design System Figma file today</a>.</p>
<p><a href="https://github.com/leo-vogel">Leo Vogel</a> and <a href="https://github.com/ksorrentino">Kristin Sorrentino</a> published the Figma file.</p>
<h2>Sass under the hood</h2>
<p>Our initial setup for the NYS Design System included raw CSS file imports through JavaScript. We have run out of runway with vanilla CSS and have made the conversion to Sass for all style files. Sass gives us more flexibility in generating CSS programatically. All components have been converted to use Sass, and an added benefit, the file size for the package was reduced by 40KB just by including minified CSS instead of expanded. Stay tuned for an extensive utility class expansion coming soon!</p>
<p><a href="https://github.com/esteinborn">Eric Steinborn</a> ended up getting real sassy.</p>
<h2>VSCode autocomplete support</h2>
<p>To add NYS Design System vscode autocompletion to your editor:</p>
<p>Copy the <code>.vscode/</code> folder into the root of your project. You can find it in <code>/node_modules/@nysds/components/dist/.vscode</code></p>
<p>Edit the following file (create it if it doesn't exist)</p>
<p><code>./vscode/settings.json</code></p>
<p>Add the following lines and save the file:</p>
<pre class="language-json"><code class="language-json"><span class="token property">"html.customData"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">".vscode/vscode.html-custom-data.json"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token property">"css.customData"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">".vscode/vscode.css-custom-data.json"</span><span class="token punctuation">]</span></code></pre>
<p>If you have existing settings, add the custom data in addition to the files already listed.</p>
<h2>Notable bug fixes</h2>
<ul>
<li>Fix: Pagination edge case bug by @emilygorelik</li>
<li>Fix: select initial validation by @emilygorelik</li>
<li>Fix: unavheader aria role by @emilygorelik</li>
<li>Fix: Typography token weights by @emilygorelik</li>
</ul>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> is a verified exterminator.</p>
<h2>New icons</h2>
<p><nys-icon name="expand_all" size="4xl"></nys-icon> <code>expand_all</code></p>
<p><nys-icon name="height" size="4xl"></nys-icon> <code>height</code></p>
<p><nys-icon name="straight" size="4xl"></nys-icon> <code>straight</code></p>
<p><a href="https://github.com/novacat35">Robert Chen</a> sees icons in his sleep.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>None</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>None</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.11.3">See the full developer release notes for v.1.11.3 →</a></p>
]]></content>
      <pubDate>Wed, 26 Nov 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.11.3-release/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.11.2</title>
      <link>https://designsystem.ny.gov/about/updates/1.11.2-release/</link>
      <description><![CDATA[<h2>Notable bug fixes</h2>
<ul>
<li><code>&lt;nys-fileinput&gt;</code> used to double click on keyboard. This is no longer the case, a single click is all you will get now!</li>
<li>Updated our <a href="https://github.com/ITS-HCD/nysds/blob/main/LICENSE.md">LICENSE.md</a>. We now identify Lit.dev and Material icon licenses.</li>
<li>Our consoles were filled with warnings, NO LONGER! We fixed ALL browser warnings in Web Test Runner and lit-analyze tests.</li>
</ul>
<p><a href="https://github.com/novacat35">Robert Chen</a>, <a href="https://github.com/emilygorelik">Emily Gorelik</a>, and <a href="https://github.com/greenbergb">Ben Greenberg</a> exterminated these bugs, cleared the console, and updated our license.</p>
<h2>Notable Figma changes</h2>
<ul>
<li><strong>Image component</strong> - Decorative property added for accessibility.</li>
<li><strong>Screen template instructions</strong> - Added detailed guidance for using the Screen Template component, including explanations of fidelity mode, and instructions on adjusting the size and theme.</li>
</ul>
<p><a href="https://github.com/leo-vogel">Leo Vogel</a> and <a href="https://github.com/ksorrentino">Kristin Sorrentino</a> made these changes.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>None</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>None</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.11.2">See the full developer release notes for v.1.11.2 →</a></p>
]]></description>
      <content><![CDATA[<h2>Notable bug fixes</h2>
<ul>
<li><code>&lt;nys-fileinput&gt;</code> used to double click on keyboard. This is no longer the case, a single click is all you will get now!</li>
<li>Updated our <a href="https://github.com/ITS-HCD/nysds/blob/main/LICENSE.md">LICENSE.md</a>. We now identify Lit.dev and Material icon licenses.</li>
<li>Our consoles were filled with warnings, NO LONGER! We fixed ALL browser warnings in Web Test Runner and lit-analyze tests.</li>
</ul>
<p><a href="https://github.com/novacat35">Robert Chen</a>, <a href="https://github.com/emilygorelik">Emily Gorelik</a>, and <a href="https://github.com/greenbergb">Ben Greenberg</a> exterminated these bugs, cleared the console, and updated our license.</p>
<h2>Notable Figma changes</h2>
<ul>
<li><strong>Image component</strong> - Decorative property added for accessibility.</li>
<li><strong>Screen template instructions</strong> - Added detailed guidance for using the Screen Template component, including explanations of fidelity mode, and instructions on adjusting the size and theme.</li>
</ul>
<p><a href="https://github.com/leo-vogel">Leo Vogel</a> and <a href="https://github.com/ksorrentino">Kristin Sorrentino</a> made these changes.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>None</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>None</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.11.2">See the full developer release notes for v.1.11.2 →</a></p>
]]></content>
      <pubDate>Thu, 13 Nov 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.11.2-release/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.11.0 “Gothics”</title>
      <link>https://designsystem.ny.gov/about/updates/1.11.0-release/</link>
      <description><![CDATA[<!-- SPOOKY RELEASE!!! 👻 -->
<h2>Why “Gothics?”</h2>
<p>When we name our releases, we pick from a list of Adirondack high peaks. This week's release is named <strong>Gothics</strong>. We wanted to take advantage of spooky season and find an appropriate name! BOO! 👻</p>
<p><a href="https://en.wikipedia.org/wiki/Gothics">Learn more about Gothics mountain.</a></p>
<h2><code>&lt;nys-option&gt;</code> deprecated</h2>
<p><code>&lt;nys-select&gt;</code> has been updated to use “native guts.” <strong>If you are running v1.11.0 or higher, you should use native <code>&lt;option&gt;</code> and <code>&lt;optgroup&gt;</code> tags instead of <code>&lt;nys-option&gt;</code>.</strong> Check it out below and on the <a href="https://designsystem.ny.gov/components/select"><code>&lt;nys-select&gt;</code> documentation page</a>.</p>
<p><nys-alert type="warning" heading="WARNING: Installations prior to v1.11.0 should continue to use `<nys-option>`">
</nys-alert></p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
  <nys-select label="Which New York State service are you contacting us about?" description="This is for demo purposes and the list might not be exhaustive.">
  <optgroup label="Transportation Services">
    <option value="mta">MTA / Public Transit</option>
    <option value="dmv">Department of Motor Vehicles (DMV)</option>
    <option value="highway">Highway Maintenance</option>
  </optgroup>
  <optgroup label="Health & Human Services">
    <option value="medicaid">Medicaid / Health Insurance</option>
    <option value="mental-health">Mental Health Support</option>
    <option value="child-family">Child and Family Services</option>
  </optgroup>
  <optgroup label="Public Safety">
    <option value="state-police">State Police</option>
    <option value="emergency-management">Emergency Management</option>
    <option value="fire-safety">Fire Safety</option>
  </optgroup>
  <optgroup label="Environment & Energy">
    <option value="environmental-conservation">Environmental Conservation</option>
    <option value="clean-energy">Clean Energy Programs</option>
    <option value="waste-management">Waste Management</option>
  </optgroup>
</nys-select>
  </div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-select</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Which New York State service are you contacting us about?<span class="token punctuation">"</span></span> <span class="token attr-name">description</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>This is for demo purposes and the list might not be exhaustive.<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>optgroup</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Transportation Services<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>mta<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>MTA / Public Transit<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>dmv<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Department of Motor Vehicles (DMV)<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>highway<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Highway Maintenance<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>optgroup</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>optgroup</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Health &amp; Human Services<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>medicaid<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Medicaid / Health Insurance<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>mental-health<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Mental Health Support<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>child-family<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Child and Family Services<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>optgroup</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>optgroup</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Public Safety<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>state-police<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>State Police<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>emergency-management<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Emergency Management<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fire-safety<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Fire Safety<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>optgroup</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>optgroup</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Environment &amp; Energy<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>environmental-conservation<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Environmental Conservation<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>clean-energy<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Clean Energy Programs<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>waste-management<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Waste Management<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>optgroup</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-select</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> selected this ticket to work on.</p>
<h2><code>nys-icon</code> size ramp change</h2>
<p><code>&lt;nys-icon&gt;</code> sizes synced between design and code - <a href="https://designsystem.ny.gov/components/icon/#size">Read the icon size documentation</a>.
This release includes <strong>major changes</strong> to the icon size system to align with new design tokens and improve consistency between Figma and code.</p>
<p><strong>Relative size updates:</strong></p>
<ul>
<li>Added: <code>5xl</code></li>
<li>Removed: <code>2xs</code></li>
<li><code>md</code> is now the <strong>default</strong> size (previously <code>sm</code>)</li>
<li>The size ramp has been shifted up, so if you have been using relative sizes, your icons may be smaller</li>
</ul>
<p><strong>Literal size updates:</strong></p>
<ul>
<li>Added: <code>14</code>, <code>18</code>, <code>20</code>, <code>40</code>, <code>50</code></li>
<li>Removed: <code>48</code>, <code>64</code></li>
</ul>
<img width="547" height="88" alt="Screenshot 2025-10-31 at 11 56 07 AM" src="https://github.com/user-attachments/assets/93673462-40ae-4ddf-94e8-dd4dc1fcfac5" />
<p>If you reference icon sizes directly in code, Figma, or documentation, <strong>please review and update</strong> your usage accordingly.<br />
<a href="https://designsystem.ny.gov/components/icon/#size">See the updated size documentation →</a></p>
<p><a href="https://github.com/novacat35">Robert Chen</a>, <a href="https://github.com/ksorrentino">Kristin Sorrentino</a>, and <a href="https://github.com/leo-vogel">Leo Vogel</a> ramped this up!</p>
<h2>Other notable code changes</h2>
<ul>
<li>Keyboard controls work with buttons again - <a href="https://github.com/ITS-HCD/nysds/issues/935">#935</a>.</li>
<li>New <code>elevation</code> design tokens - <a href="https://designsystem.ny.gov/tokens/other/#elevation">Check out the elevation tokens</a>.</li>
<li>Better accessibility in <code>&lt;nys-globalfooter&gt;</code> - The agencyname value now prints as an <code>&lt;h2&gt;</code>.</li>
</ul>
<p><a href="https://github.com/novacat35">Robert Chen</a> and <a href="https://github.com/emilygorelik">Emily Gorelik</a>, Thank you.</p>
<h2>Figma Screen Template changes</h2>
<p>Added option to add modal and ability to configure screen size from top of right sidebar before detaching. Also revised layer names for better code generation by AI from Figma Screens.</p>
<h2>Other notable Figma changes</h2>
<ul>
<li><strong>Text input and text area</strong> components now have a &quot;readonly&quot; property.</li>
<li><strong>Fixed prototyping issues</strong> in nys-unavheader and nys-unavfooter.</li>
<li><strong>Size naming in nys-icon</strong> have been resolved.</li>
</ul>
<p><a href="https://github.com/novacat35">Leo Vogel</a> and <a href="https://github.com/ksorrentino">Kristin Sorrentino</a> made these changes.</p>
<h2>Bug fixes</h2>
<ul>
<li><code>&lt;nys-select&gt;</code> now defaults to <code>full</code> width instead of <code>md</code></li>
<li><code>&lt;nys-select&gt;</code> font is now properly Proxima Nova</li>
<li><code>&lt;nys-globalfooter&gt;</code> now uses native <code>&lt;nys-divider&gt;</code></li>
</ul>
<h2>🚨 Breaking changes</h2>
<ul>
<li><code>&lt;nys-icon&gt;</code> size scale updated</li>
</ul>
<p>If you have used or referenced icon sizes directly in code, Figma, or documentation, please review and update your usage accordingly.<br />
<a href="https://designsystem.ny.gov/components/icon/#size">See the updated size documentation →</a></p>
<h2>⚠️ Known issues</h2>
<ul>
<li>None</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.11.0">See the full developer release notes for v.1.11.0 →</a></p>
]]></description>
      <content><![CDATA[<!-- SPOOKY RELEASE!!! 👻 -->
<h2>Why “Gothics?”</h2>
<p>When we name our releases, we pick from a list of Adirondack high peaks. This week's release is named <strong>Gothics</strong>. We wanted to take advantage of spooky season and find an appropriate name! BOO! 👻</p>
<p><a href="https://en.wikipedia.org/wiki/Gothics">Learn more about Gothics mountain.</a></p>
<h2><code>&lt;nys-option&gt;</code> deprecated</h2>
<p><code>&lt;nys-select&gt;</code> has been updated to use “native guts.” <strong>If you are running v1.11.0 or higher, you should use native <code>&lt;option&gt;</code> and <code>&lt;optgroup&gt;</code> tags instead of <code>&lt;nys-option&gt;</code>.</strong> Check it out below and on the <a href="https://designsystem.ny.gov/components/select"><code>&lt;nys-select&gt;</code> documentation page</a>.</p>
<p><nys-alert type="warning" heading="WARNING: Installations prior to v1.11.0 should continue to use `<nys-option>`">
</nys-alert></p>
<div class="code-preview-container">
  <div class="code-preview__preview  solid" data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
  <nys-select label="Which New York State service are you contacting us about?" description="This is for demo purposes and the list might not be exhaustive.">
  <optgroup label="Transportation Services">
    <option value="mta">MTA / Public Transit</option>
    <option value="dmv">Department of Motor Vehicles (DMV)</option>
    <option value="highway">Highway Maintenance</option>
  </optgroup>
  <optgroup label="Health & Human Services">
    <option value="medicaid">Medicaid / Health Insurance</option>
    <option value="mental-health">Mental Health Support</option>
    <option value="child-family">Child and Family Services</option>
  </optgroup>
  <optgroup label="Public Safety">
    <option value="state-police">State Police</option>
    <option value="emergency-management">Emergency Management</option>
    <option value="fire-safety">Fire Safety</option>
  </optgroup>
  <optgroup label="Environment & Energy">
    <option value="environmental-conservation">Environmental Conservation</option>
    <option value="clean-energy">Clean Energy Programs</option>
    <option value="waste-management">Waste Management</option>
  </optgroup>
</nys-select>
  </div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-select</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Which New York State service are you contacting us about?<span class="token punctuation">"</span></span> <span class="token attr-name">description</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>This is for demo purposes and the list might not be exhaustive.<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>optgroup</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Transportation Services<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>mta<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>MTA / Public Transit<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>dmv<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Department of Motor Vehicles (DMV)<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>highway<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Highway Maintenance<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>optgroup</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>optgroup</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Health &amp; Human Services<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>medicaid<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Medicaid / Health Insurance<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>mental-health<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Mental Health Support<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>child-family<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Child and Family Services<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>optgroup</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>optgroup</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Public Safety<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>state-police<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>State Police<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>emergency-management<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Emergency Management<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fire-safety<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Fire Safety<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>optgroup</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>optgroup</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Environment &amp; Energy<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>environmental-conservation<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Environmental Conservation<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>clean-energy<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Clean Energy Programs<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>option</span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>waste-management<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Waste Management<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>option</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>optgroup</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-select</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> selected this ticket to work on.</p>
<h2><code>nys-icon</code> size ramp change</h2>
<p><code>&lt;nys-icon&gt;</code> sizes synced between design and code - <a href="https://designsystem.ny.gov/components/icon/#size">Read the icon size documentation</a>.
This release includes <strong>major changes</strong> to the icon size system to align with new design tokens and improve consistency between Figma and code.</p>
<p><strong>Relative size updates:</strong></p>
<ul>
<li>Added: <code>5xl</code></li>
<li>Removed: <code>2xs</code></li>
<li><code>md</code> is now the <strong>default</strong> size (previously <code>sm</code>)</li>
<li>The size ramp has been shifted up, so if you have been using relative sizes, your icons may be smaller</li>
</ul>
<p><strong>Literal size updates:</strong></p>
<ul>
<li>Added: <code>14</code>, <code>18</code>, <code>20</code>, <code>40</code>, <code>50</code></li>
<li>Removed: <code>48</code>, <code>64</code></li>
</ul>
<img width="547" height="88" alt="Screenshot 2025-10-31 at 11 56 07 AM" src="https://github.com/user-attachments/assets/93673462-40ae-4ddf-94e8-dd4dc1fcfac5" />
<p>If you reference icon sizes directly in code, Figma, or documentation, <strong>please review and update</strong> your usage accordingly.<br />
<a href="https://designsystem.ny.gov/components/icon/#size">See the updated size documentation →</a></p>
<p><a href="https://github.com/novacat35">Robert Chen</a>, <a href="https://github.com/ksorrentino">Kristin Sorrentino</a>, and <a href="https://github.com/leo-vogel">Leo Vogel</a> ramped this up!</p>
<h2>Other notable code changes</h2>
<ul>
<li>Keyboard controls work with buttons again - <a href="https://github.com/ITS-HCD/nysds/issues/935">#935</a>.</li>
<li>New <code>elevation</code> design tokens - <a href="https://designsystem.ny.gov/tokens/other/#elevation">Check out the elevation tokens</a>.</li>
<li>Better accessibility in <code>&lt;nys-globalfooter&gt;</code> - The agencyname value now prints as an <code>&lt;h2&gt;</code>.</li>
</ul>
<p><a href="https://github.com/novacat35">Robert Chen</a> and <a href="https://github.com/emilygorelik">Emily Gorelik</a>, Thank you.</p>
<h2>Figma Screen Template changes</h2>
<p>Added option to add modal and ability to configure screen size from top of right sidebar before detaching. Also revised layer names for better code generation by AI from Figma Screens.</p>
<h2>Other notable Figma changes</h2>
<ul>
<li><strong>Text input and text area</strong> components now have a &quot;readonly&quot; property.</li>
<li><strong>Fixed prototyping issues</strong> in nys-unavheader and nys-unavfooter.</li>
<li><strong>Size naming in nys-icon</strong> have been resolved.</li>
</ul>
<p><a href="https://github.com/novacat35">Leo Vogel</a> and <a href="https://github.com/ksorrentino">Kristin Sorrentino</a> made these changes.</p>
<h2>Bug fixes</h2>
<ul>
<li><code>&lt;nys-select&gt;</code> now defaults to <code>full</code> width instead of <code>md</code></li>
<li><code>&lt;nys-select&gt;</code> font is now properly Proxima Nova</li>
<li><code>&lt;nys-globalfooter&gt;</code> now uses native <code>&lt;nys-divider&gt;</code></li>
</ul>
<h2>🚨 Breaking changes</h2>
<ul>
<li><code>&lt;nys-icon&gt;</code> size scale updated</li>
</ul>
<p>If you have used or referenced icon sizes directly in code, Figma, or documentation, please review and update your usage accordingly.<br />
<a href="https://designsystem.ny.gov/components/icon/#size">See the updated size documentation →</a></p>
<h2>⚠️ Known issues</h2>
<ul>
<li>None</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.11.0">See the full developer release notes for v.1.11.0 →</a></p>
]]></content>
      <pubDate>Fri, 31 Oct 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.11.0-release/</guid>
    </item>
    <item>
      <title>October Website Improvements</title>
      <link>https://designsystem.ny.gov/about/updates/october-website-improvements/</link>
      <description><![CDATA[<h2>Site Search Now Available</h2>
<p>We added a search feature to the site. You can click the <a href="https://designsystem.ny.gov/search">Search</a> link in the site navigation to search the whole site.</p>
<nys-textinput name="q" type="search" placeholder="Search" id="q" label="Search the NYS Design System" width="lg">
  <nys-button slot="endButton" type="button" label="" prefixIcon="search" id="searchButton"></nys-button>
</nys-textinput>
<script>
  document.getElementById("q").addEventListener("keypress", function(event) {
    if (event.key === "Enter") {
      event.preventDefault();
      search();
    }
  });

  document.getElementById("searchButton").addEventListener("nys-click", () => { 
    search();
  });

  function search() {
    var searchInput = document.getElementById('q');
    var url = "/search/?q=" + searchInput.value;
    window.open(url, "_self");
  }
</script>
<h2>New 404 page</h2>
<p>We've updated our 404 (page not found) error page to include a mascot and a search box. <a href="https://designsystem.ny.gov/foo">See the 404 page in action</a>.</p>
<h2>Direct Links to Headings</h2>
<p>When you are on a page, you'll notice a button with a link icon next to headings. Click that button to copy the URL direct to that page and heading. Check out the headings on this page for an example of how it works.</p>
]]></description>
      <content><![CDATA[<h2>Site Search Now Available</h2>
<p>We added a search feature to the site. You can click the <a href="https://designsystem.ny.gov/search">Search</a> link in the site navigation to search the whole site.</p>
<nys-textinput name="q" type="search" placeholder="Search" id="q" label="Search the NYS Design System" width="lg">
  <nys-button slot="endButton" type="button" label="" prefixIcon="search" id="searchButton"></nys-button>
</nys-textinput>
<script>
  document.getElementById("q").addEventListener("keypress", function(event) {
    if (event.key === "Enter") {
      event.preventDefault();
      search();
    }
  });

  document.getElementById("searchButton").addEventListener("nys-click", () => { 
    search();
  });

  function search() {
    var searchInput = document.getElementById('q');
    var url = "/search/?q=" + searchInput.value;
    window.open(url, "_self");
  }
</script>
<h2>New 404 page</h2>
<p>We've updated our 404 (page not found) error page to include a mascot and a search box. <a href="https://designsystem.ny.gov/foo">See the 404 page in action</a>.</p>
<h2>Direct Links to Headings</h2>
<p>When you are on a page, you'll notice a button with a link icon next to headings. Click that button to copy the URL direct to that page and heading. Check out the headings on this page for an example of how it works.</p>
]]></content>
      <pubDate>Fri, 24 Oct 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/october-website-improvements/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.10.1</title>
      <link>https://designsystem.ny.gov/about/updates/1.10.1-release/</link>
      <description><![CDATA[<h2>You can add columns of links to your footer now</h2>
<p><code>&lt;nys-globalfooter&gt;</code> now accepts a set of <code>&lt;ul&gt;</code>s and displays them in columns. This allows for more standard footer layouts. <a href="https://designsystem.ny.gov/components/globalfooter">Read the full documentation for link columns on the <code>&lt;nys-globalfooter&gt;</code> component</a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  " data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
  <nys-globalfooter agencyName="Office of Information Technology Services">
  <ul>
    <li>
      <span>About</span>
      <ul>
        <li><a href="https://its.ny.gov/about-us">About ITS</a></li>
        <li><a href="https://its.ny.gov/contact-us">Contact</a></li>
        <li><a href="https://its.ny.gov/policies">Policies</a></li>
      </ul>
    </li>
    <li>
      <span>Resources</span>
      <ul>
        <li><a href="https://its.ny.gov/resources">Developer Tools</a></li>
        <li><a href="https://its.ny.gov/accessibility">Accessibility</a></li>
        <li><a href="https://its.ny.gov/privacy">Privacy</a></li>
      </ul>
    </li>
  </ul>
</nys-globalfooter>
  </div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-globalfooter</span> <span class="token attr-name">agencyName</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Office of Information Technology Services<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ul</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span><span class="token punctuation">></span></span>About<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ul</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://its.ny.gov/about-us<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>About ITS<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://its.ny.gov/contact-us<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Contact<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://its.ny.gov/policies<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Policies<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span><span class="token punctuation">></span></span>Resources<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ul</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://its.ny.gov/resources<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Developer Tools<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://its.ny.gov/accessibility<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Accessibility<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://its.ny.gov/privacy<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Privacy<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-globalfooter</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/novacat35">Robert Chen</a> expanded linkage.</p>
<!-- ## Invert property added to form elements (CODE ONLY)
All form field components have been updated with a new property which will invert the color scheme of the component to better display on dark backgrounds. As always please check your contrast ratios to make sure you are still creating accessible color combinations. [Read the full documentation for invert prop on the `<nys-textinput>` component](/components/textinput).

[Robert Chen](https://github.com/novacat35) inverted these properties. -->
<h2>No more disappearing pagination buttons</h2>
<p>The <code>&lt;nys-pagination&gt;</code> component has been updated to no longer hide the &quot;previous&quot; and &quot;next&quot; buttons when you are on the first or last page. This update will now disable these buttons instead of removing them. This results in a more consistent user experience.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  " data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
  <nys-pagination id="pagination" name="pagination" currentPage="4" totalPages="10"></nys-pagination>
  </div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-pagination</span>
  <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>pagination<span class="token punctuation">"</span></span>
  <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>pagination<span class="token punctuation">"</span></span>
  <span class="token attr-name">currentPage</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span>4</span>
  <span class="token attr-name">totalPages</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span>10</span>
<span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-pagination</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> disabled the buttons.</p>
<h2>Bug fixes</h2>
<ul>
<li>Update NPM packages for security fixes</li>
<li>Hide unloaded components before they are processed by JS</li>
<li>Fix checkbox labels failing accessibility tests</li>
<li>Unav Header mobile padding fix</li>
</ul>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li><code>&lt;nys-button&gt;</code> not triggering click on keydown <a href="https://github.com/ITS-HCD/nysds/issues/935">#935</a></li>
</ul>
<p>If you notice any other issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.10.1">See the full developer release notes for v.1.10.1 →</a></p>
]]></description>
      <content><![CDATA[<h2>You can add columns of links to your footer now</h2>
<p><code>&lt;nys-globalfooter&gt;</code> now accepts a set of <code>&lt;ul&gt;</code>s and displays them in columns. This allows for more standard footer layouts. <a href="https://designsystem.ny.gov/components/globalfooter">Read the full documentation for link columns on the <code>&lt;nys-globalfooter&gt;</code> component</a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  " data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
  <nys-globalfooter agencyName="Office of Information Technology Services">
  <ul>
    <li>
      <span>About</span>
      <ul>
        <li><a href="https://its.ny.gov/about-us">About ITS</a></li>
        <li><a href="https://its.ny.gov/contact-us">Contact</a></li>
        <li><a href="https://its.ny.gov/policies">Policies</a></li>
      </ul>
    </li>
    <li>
      <span>Resources</span>
      <ul>
        <li><a href="https://its.ny.gov/resources">Developer Tools</a></li>
        <li><a href="https://its.ny.gov/accessibility">Accessibility</a></li>
        <li><a href="https://its.ny.gov/privacy">Privacy</a></li>
      </ul>
    </li>
  </ul>
</nys-globalfooter>
  </div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-globalfooter</span> <span class="token attr-name">agencyName</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Office of Information Technology Services<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ul</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span><span class="token punctuation">></span></span>About<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ul</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://its.ny.gov/about-us<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>About ITS<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://its.ny.gov/contact-us<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Contact<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://its.ny.gov/policies<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Policies<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span><span class="token punctuation">></span></span>Resources<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ul</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://its.ny.gov/resources<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Developer Tools<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://its.ny.gov/accessibility<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Accessibility<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://its.ny.gov/privacy<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Privacy<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-globalfooter</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/novacat35">Robert Chen</a> expanded linkage.</p>
<!-- ## Invert property added to form elements (CODE ONLY)
All form field components have been updated with a new property which will invert the color scheme of the component to better display on dark backgrounds. As always please check your contrast ratios to make sure you are still creating accessible color combinations. [Read the full documentation for invert prop on the `<nys-textinput>` component](/components/textinput).

[Robert Chen](https://github.com/novacat35) inverted these properties. -->
<h2>No more disappearing pagination buttons</h2>
<p>The <code>&lt;nys-pagination&gt;</code> component has been updated to no longer hide the &quot;previous&quot; and &quot;next&quot; buttons when you are on the first or last page. This update will now disable these buttons instead of removing them. This results in a more consistent user experience.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  " data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
  <nys-pagination id="pagination" name="pagination" currentPage="4" totalPages="10"></nys-pagination>
  </div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-pagination</span>
  <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>pagination<span class="token punctuation">"</span></span>
  <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>pagination<span class="token punctuation">"</span></span>
  <span class="token attr-name">currentPage</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span>4</span>
  <span class="token attr-name">totalPages</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span>10</span>
<span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-pagination</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> disabled the buttons.</p>
<h2>Bug fixes</h2>
<ul>
<li>Update NPM packages for security fixes</li>
<li>Hide unloaded components before they are processed by JS</li>
<li>Fix checkbox labels failing accessibility tests</li>
<li>Unav Header mobile padding fix</li>
</ul>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li><code>&lt;nys-button&gt;</code> not triggering click on keydown <a href="https://github.com/ITS-HCD/nysds/issues/935">#935</a></li>
</ul>
<p>If you notice any other issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.10.1">See the full developer release notes for v.1.10.1 →</a></p>
]]></content>
      <pubDate>Thu, 16 Oct 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.10.1-release/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.10.0 “Haystack”</title>
      <link>https://designsystem.ny.gov/about/updates/1.10.0-release/</link>
      <description><![CDATA[<!-- 🪡 in the Haystack? -->
<h2>Multiple pages? No problem</h2>
<p>The <code>&lt;nys-pagination&gt;</code> component allows you to hook into functionality to present pagination functionality to your apps and sites. For more information, <a href="https://designsystem.ny.gov/components/pagination">read the full documentation for <code>&lt;nys-pagination&gt;</code> component</a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  " data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
  <nys-pagination id="pagination" name="pagination" currentPage="4" totalPages="10"></nys-pagination>
  </div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-pagination</span>
  <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>pagination<span class="token punctuation">"</span></span>
  <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>pagination<span class="token punctuation">"</span></span>
  <span class="token attr-name">currentPage</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span>4</span>
  <span class="token attr-name">totalPages</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span>10</span>
<span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-pagination</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> shipped the pagination component!</p>
<h2>Modal now available</h2>
<p>The <code>&lt;nys-modal&gt;</code> component brings pop up content within a page. Use it for providing context to your existing process flows. For more information, <a href="https://designsystem.ny.gov/components/modal">read the full documentation for <code>&lt;nys-modal&gt;</code> component</a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  " data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
  <nys-button label="Open Modal" onclick="showModal();" type="button" id="open-modal-button"></nys-button>
  <nys-modal id="modal1" heading="Update Available" subheading="A new version of this application is ready to install.">
    <p>
      Would you like to install the latest version? Albany ipsum dolor sit
      Empire, Hudson consectetur Adirondack elit, sed do MetroCard tempor
      incididunt ut Capitol et Broadway magna Niagara. Ut enim ad Erie
      veniam, quis nostrud Catskill ullamco Bronx nisi ut LongIsland ex ea
      Cuomo consequat.
    </p>
    <p>
      Would you like to install the latest version? Albany ipsum dolor sit
      Empire, Hudson consectetur Adirondack elit, sed do MetroCard tempor
      incididunt ut Capitol et Broadway magna Niagara. Ut enim ad Erie
      veniam, quis nostrud Catskill ullamco Bronx nisi ut LongIsland ex ea
      Cuomo consequat.
    </p>
    <div slot="actions">
      <nys-button label="Not now" variant="text" onclick="closeModal();"></nys-button>
      <nys-button label="Update" onclick="closeModal();"></nys-button>
    </div>
  </nys-modal>
  <script>
    function showModal() {
      const modal = document.getElementById('modal1');
      if (modal) {
        modal.open = true;
      }
    };
    function closeModal() {
      const modal = document.getElementById('modal1');
      if (modal) {
        modal.open = false;
      }
    };
  </script>
  </div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-button</span>
    <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Open Modal<span class="token punctuation">"</span></span>
    <span class="token special-attr"><span class="token attr-name">onclick</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value javascript language-javascript"><span class="token function">showModal</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span>
    <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>button<span class="token punctuation">"</span></span>
    <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>open-modal-button<span class="token punctuation">"</span></span>
  <span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-button</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-modal</span>
    <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>modal1<span class="token punctuation">"</span></span>
    <span class="token attr-name">heading</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Update Available<span class="token punctuation">"</span></span>
    <span class="token attr-name">subheading</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>A new version of this application is ready to install.<span class="token punctuation">"</span></span>
  <span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">></span></span>
      Would you like to install the latest version? Albany ipsum dolor sit
      Empire, Hudson consectetur Adirondack elit, sed do MetroCard tempor
      incididunt ut Capitol et Broadway magna Niagara. Ut enim ad Erie
      veniam, quis nostrud Catskill ullamco Bronx nisi ut LongIsland ex ea
      Cuomo consequat.
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">></span></span>
      Would you like to install the latest version? Albany ipsum dolor sit
      Empire, Hudson consectetur Adirondack elit, sed do MetroCard tempor
      incididunt ut Capitol et Broadway magna Niagara. Ut enim ad Erie
      veniam, quis nostrud Catskill ullamco Bronx nisi ut LongIsland ex ea
      Cuomo consequat.
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">slot</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>actions<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-button</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Not now<span class="token punctuation">"</span></span> <span class="token attr-name">variant</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text<span class="token punctuation">"</span></span> <span class="token special-attr"><span class="token attr-name">onclick</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value javascript language-javascript"><span class="token function">closeModal</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-button</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-button</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Update<span class="token punctuation">"</span></span> <span class="token special-attr"><span class="token attr-name">onclick</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value javascript language-javascript"><span class="token function">closeModal</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-button</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-modal</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">></span></span><span class="token script"><span class="token language-javascript">
    <span class="token keyword">function</span> <span class="token function">showModal</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
      <span class="token keyword">const</span> modal <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'modal1'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
      <span class="token keyword">if</span> <span class="token punctuation">(</span>modal<span class="token punctuation">)</span> <span class="token punctuation">{</span>
        modal<span class="token punctuation">.</span>open <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>
      <span class="token punctuation">}</span>
    <span class="token punctuation">}</span><span class="token punctuation">;</span>
    <span class="token keyword">function</span> <span class="token function">closeModal</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
      <span class="token keyword">const</span> modal <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'modal1'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
      <span class="token keyword">if</span> <span class="token punctuation">(</span>modal<span class="token punctuation">)</span> <span class="token punctuation">{</span>
        modal<span class="token punctuation">.</span>open <span class="token operator">=</span> <span class="token boolean">false</span><span class="token punctuation">;</span>
      <span class="token punctuation">}</span>
    <span class="token punctuation">}</span><span class="token punctuation">;</span>
  </span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/novacat35">Robert Chen</a> popped this up!</p>
<h2>New <code>phone_in_talk</code> icon</h2>
<p><nys-icon name="phone_in_talk" size="4xl"></nys-icon></p>
<p><a href="https://github.com/novacat35">Robert Chen</a> phoned this in!</p>
<h2>Bug fixes</h2>
<ul>
<li>Label wrapping fixed</li>
<li>File input validation</li>
<li>RTL support in alert and unavheader search box</li>
</ul>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li><code>&lt;nys-button&gt;</code> not triggering click on keydown <a href="https://github.com/ITS-HCD/nysds/issues/935">#935</a></li>
</ul>
<p>If you notice any other issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.10.0">See the full developer release notes for v.1.10.0 →</a></p>
]]></description>
      <content><![CDATA[<!-- 🪡 in the Haystack? -->
<h2>Multiple pages? No problem</h2>
<p>The <code>&lt;nys-pagination&gt;</code> component allows you to hook into functionality to present pagination functionality to your apps and sites. For more information, <a href="https://designsystem.ny.gov/components/pagination">read the full documentation for <code>&lt;nys-pagination&gt;</code> component</a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  " data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
  <nys-pagination id="pagination" name="pagination" currentPage="4" totalPages="10"></nys-pagination>
  </div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-pagination</span>
  <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>pagination<span class="token punctuation">"</span></span>
  <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>pagination<span class="token punctuation">"</span></span>
  <span class="token attr-name">currentPage</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span>4</span>
  <span class="token attr-name">totalPages</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span>10</span>
<span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-pagination</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> shipped the pagination component!</p>
<h2>Modal now available</h2>
<p>The <code>&lt;nys-modal&gt;</code> component brings pop up content within a page. Use it for providing context to your existing process flows. For more information, <a href="https://designsystem.ny.gov/components/modal">read the full documentation for <code>&lt;nys-modal&gt;</code> component</a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  " data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
  <nys-button label="Open Modal" onclick="showModal();" type="button" id="open-modal-button"></nys-button>
  <nys-modal id="modal1" heading="Update Available" subheading="A new version of this application is ready to install.">
    <p>
      Would you like to install the latest version? Albany ipsum dolor sit
      Empire, Hudson consectetur Adirondack elit, sed do MetroCard tempor
      incididunt ut Capitol et Broadway magna Niagara. Ut enim ad Erie
      veniam, quis nostrud Catskill ullamco Bronx nisi ut LongIsland ex ea
      Cuomo consequat.
    </p>
    <p>
      Would you like to install the latest version? Albany ipsum dolor sit
      Empire, Hudson consectetur Adirondack elit, sed do MetroCard tempor
      incididunt ut Capitol et Broadway magna Niagara. Ut enim ad Erie
      veniam, quis nostrud Catskill ullamco Bronx nisi ut LongIsland ex ea
      Cuomo consequat.
    </p>
    <div slot="actions">
      <nys-button label="Not now" variant="text" onclick="closeModal();"></nys-button>
      <nys-button label="Update" onclick="closeModal();"></nys-button>
    </div>
  </nys-modal>
  <script>
    function showModal() {
      const modal = document.getElementById('modal1');
      if (modal) {
        modal.open = true;
      }
    };
    function closeModal() {
      const modal = document.getElementById('modal1');
      if (modal) {
        modal.open = false;
      }
    };
  </script>
  </div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-button</span>
    <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Open Modal<span class="token punctuation">"</span></span>
    <span class="token special-attr"><span class="token attr-name">onclick</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value javascript language-javascript"><span class="token function">showModal</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span>
    <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>button<span class="token punctuation">"</span></span>
    <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>open-modal-button<span class="token punctuation">"</span></span>
  <span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-button</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-modal</span>
    <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>modal1<span class="token punctuation">"</span></span>
    <span class="token attr-name">heading</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Update Available<span class="token punctuation">"</span></span>
    <span class="token attr-name">subheading</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>A new version of this application is ready to install.<span class="token punctuation">"</span></span>
  <span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">></span></span>
      Would you like to install the latest version? Albany ipsum dolor sit
      Empire, Hudson consectetur Adirondack elit, sed do MetroCard tempor
      incididunt ut Capitol et Broadway magna Niagara. Ut enim ad Erie
      veniam, quis nostrud Catskill ullamco Bronx nisi ut LongIsland ex ea
      Cuomo consequat.
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">></span></span>
      Would you like to install the latest version? Albany ipsum dolor sit
      Empire, Hudson consectetur Adirondack elit, sed do MetroCard tempor
      incididunt ut Capitol et Broadway magna Niagara. Ut enim ad Erie
      veniam, quis nostrud Catskill ullamco Bronx nisi ut LongIsland ex ea
      Cuomo consequat.
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">slot</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>actions<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-button</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Not now<span class="token punctuation">"</span></span> <span class="token attr-name">variant</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text<span class="token punctuation">"</span></span> <span class="token special-attr"><span class="token attr-name">onclick</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value javascript language-javascript"><span class="token function">closeModal</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-button</span><span class="token punctuation">></span></span>
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-button</span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Update<span class="token punctuation">"</span></span> <span class="token special-attr"><span class="token attr-name">onclick</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value javascript language-javascript"><span class="token function">closeModal</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-button</span><span class="token punctuation">></span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-modal</span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">></span></span><span class="token script"><span class="token language-javascript">
    <span class="token keyword">function</span> <span class="token function">showModal</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
      <span class="token keyword">const</span> modal <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'modal1'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
      <span class="token keyword">if</span> <span class="token punctuation">(</span>modal<span class="token punctuation">)</span> <span class="token punctuation">{</span>
        modal<span class="token punctuation">.</span>open <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>
      <span class="token punctuation">}</span>
    <span class="token punctuation">}</span><span class="token punctuation">;</span>
    <span class="token keyword">function</span> <span class="token function">closeModal</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
      <span class="token keyword">const</span> modal <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'modal1'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
      <span class="token keyword">if</span> <span class="token punctuation">(</span>modal<span class="token punctuation">)</span> <span class="token punctuation">{</span>
        modal<span class="token punctuation">.</span>open <span class="token operator">=</span> <span class="token boolean">false</span><span class="token punctuation">;</span>
      <span class="token punctuation">}</span>
    <span class="token punctuation">}</span><span class="token punctuation">;</span>
  </span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/novacat35">Robert Chen</a> popped this up!</p>
<h2>New <code>phone_in_talk</code> icon</h2>
<p><nys-icon name="phone_in_talk" size="4xl"></nys-icon></p>
<p><a href="https://github.com/novacat35">Robert Chen</a> phoned this in!</p>
<h2>Bug fixes</h2>
<ul>
<li>Label wrapping fixed</li>
<li>File input validation</li>
<li>RTL support in alert and unavheader search box</li>
</ul>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li><code>&lt;nys-button&gt;</code> not triggering click on keydown <a href="https://github.com/ITS-HCD/nysds/issues/935">#935</a></li>
</ul>
<p>If you notice any other issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.10.0">See the full developer release notes for v.1.10.0 →</a></p>
]]></content>
      <pubDate>Fri, 03 Oct 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.10.0-release/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.9.1</title>
      <link>https://designsystem.ny.gov/about/updates/1.9.1-release/</link>
      <description><![CDATA[<h2>Divide up your content</h2>
<p>The <code>&lt;nys-divider&gt;</code> component visually separates content or sections within an interface. For more information, <a href="https://designsystem.ny.gov/components/divider">read the full documentation for the <code>&lt;nys-divider&gt;</code></a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  " data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<h4>Hello World</h4>
<nys-divider></nys-divider>
<h4>Goodbye World</h4>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>h4</span><span class="token punctuation">></span></span>Hello World<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>h4</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-divider</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-divider</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>h4</span><span class="token punctuation">></span></span>Goodbye World<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>h4</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> shipped the divider!</p>
<h2>Analyze and resolve Lit warnings</h2>
<p>We use Lit.dev as the base of our web components. We have enabled a development-time scanning of Lit templates to ensure we're coding with best practices. We resolved most of those Lit warnings in this release</p>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> fixed em!</p>
<h2>CSS variables clean-up</h2>
<p>We cleaned up some CSS variables and published the remaining public variables.</p>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> organized the chaos.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>none</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.9.1">See the full developer release notes for v.1.9.1 →</a></p>
]]></description>
      <content><![CDATA[<h2>Divide up your content</h2>
<p>The <code>&lt;nys-divider&gt;</code> component visually separates content or sections within an interface. For more information, <a href="https://designsystem.ny.gov/components/divider">read the full documentation for the <code>&lt;nys-divider&gt;</code></a>.</p>
<div class="code-preview-container">
  <div class="code-preview__preview  " data-pagefind-ignore="all">
<div class="code-preview__preview-root-inner">
<h4>Hello World</h4>
<nys-divider></nys-divider>
<h4>Goodbye World</h4>
</div>
  </div>
  <div class="code-preview__source">
    <div class="code-preview__buttons">
      <button class="code-preview__dropdown" onClick="showSourceCode(this)">
        <nys-icon class="code-preview__dropdown-icon" name="chevron_right" size="xl"></nys-icon>
        <p>Example Code</p>
      </button>
      <div class="copy-button-wrapper" data-pagefind-ignore="all">
        <nys-button class="copy-btn" prefixIcon="content_copy" label="Copy" variant="ghost" size="xl" onClick="copyCode(this)"></nys-button>
        <div class="copy-tooltip">Copy Code</div>
      </div>
    </div>
    <div class="code-preview__code-container ">
      <div class="code-preview__code-block">
        <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>h4</span><span class="token punctuation">></span></span>Hello World<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>h4</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nys-divider</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nys-divider</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>h4</span><span class="token punctuation">></span></span>Goodbye World<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>h4</span><span class="token punctuation">></span></span></code></pre>
      </div>
    </div>
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> shipped the divider!</p>
<h2>Analyze and resolve Lit warnings</h2>
<p>We use Lit.dev as the base of our web components. We have enabled a development-time scanning of Lit templates to ensure we're coding with best practices. We resolved most of those Lit warnings in this release</p>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> fixed em!</p>
<h2>CSS variables clean-up</h2>
<p>We cleaned up some CSS variables and published the remaining public variables.</p>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> organized the chaos.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>none</li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li>none</li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.9.1">See the full developer release notes for v.1.9.1 →</a></p>
]]></content>
      <pubDate>Thu, 18 Sep 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.9.1-release/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.8.0 “Adirondack”</title>
      <link>https://designsystem.ny.gov/about/updates/1.8.0-release/</link>
      <description><![CDATA[<h2>Step by step</h2>
<p>The new <code>&lt;nys-stepper&gt;</code> component helps you break down a complex process into simple steps. It is built with options to make it &quot;dumb&quot; (simple HREF links for steps) or &quot;smart&quot; (can use JS to trigger events <code>onClick()</code>). For more information, <a href="https://designsystem.ny.gov/components/stepper">read the full documentation for the <code>&lt;nys-stepper&gt;</code></a>.</p>
<div class="nys-grid-row nys-grid-gap-300">
  <div class="nys-desktop:nys-grid-col-4">
  <h3>Mobile</h3>
    <img src="https://designsystem.ny.gov/assets/i/2025/stepper2.png" alt="image of nys-stepper in mobile viewport" />
  </div>
  <div class="nys-desktop:nys-grid-col-4">
  <h3>Mobile Expanded</h3>
    <img src="https://designsystem.ny.gov/assets/i/2025/stepper3.png" alt="image of nys-stepper in mobile, but is expanded" />
  </div>
  <div class="nys-desktop:nys-grid-col-4">
  <h3>Desktop</h3>
    <img src="https://designsystem.ny.gov/assets/i/2025/stepper1.png" alt="image of nys-stepper in desktop viewport" />
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> poured sweat and tears into this component!</p>
<h2>nys-avatar has a new base color and more!</h2>
<p>There is a new base color, new disabled and interactive properties, and logic that detects color contrast ratios to give you the best foreground color for any background color!</p>
<p>We have removed the <code>shape</code> property. Details can be found in the 🚨 Breaking Changes section</p>
<p><a href="https://github.com/novacat35">Robert Chen</a> improved the nys-avatar component.</p>
<h2>Moar testing</h2>
<p>We are now automated testing in three more browsers. iPhone 14, Pixel 5, and Microsoft Edge. That brings the total number of browsers to five!</p>
<p><a href="https://github.com/esteinborn">Eric Steinborn</a> tests in his dreams.</p>
<h2>Code connect</h2>
<p>We hooked up nys-accordion and nys-avatar to Figma's Code Connect. Copy and paste the code for these components from Figma directly into your editor of choice.</p>
<p><a href="https://github.com/novacat35">Robert Chen</a> connected this code.</p>
<h2>CSS variables shake-up</h2>
<p>We looked at our set of CSS variables and noticed they weren't as intentional as we wanted them to be. So we took a page out of the CSS BEM (Block, Element, Modifier) syntax and have renamed our variables accordingly. We have also bubbled up some variables to be exposed to allow for certain amounts of customization depending on the component. You can find those overridable values on each component page. If you were overriding CSS variables before you'll want to check the names of those tokens to make sure they haven't changed.</p>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> organized the chaos.</p>
<h2>Designers listen up!</h2>
<ul>
<li>The NYS Design System Figma library has been updated to include a new <code>nys-divider</code> component. (Figma only)</li>
<li>Additional variants were added to the nys-avatar component</li>
<li>A massive Figma cleanup took place over a few months leaving a cleaner and more structured Figma library</li>
</ul>
<p><a href="https://github.com/ksorrentino">Kristin Sorrentino</a> and <a href="https://github.com/leo-vogel">Leo Vogel</a> have been delving deep into the Figma library.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>Removed <code>nys-avatar</code>'s <code>shape</code> property. Please remove from your applications</li>
<li>Changed <code>nys-alert</code> dispatch event from <code>nys-alert-closed</code> to <code>nys-close</code>. Please update any references to both <code>nys-alert-closed</code> and <code>nys-alertClosed</code> to <code>nys-close</code></li>
<li>Many CSS variables were changed, too many to list, but you can <a href="https://github.com/ITS-HCD/nysds/pull/840">read the full changelog for CSS vars</a></li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li><a href="https://github.com/ITS-HCD/nysds/issues/812">Bug: Unavheader not opening dropdowns on Safari</a></li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.8.0">See the full developer release notes for v.1.8.0 →</a></p>
]]></description>
      <content><![CDATA[<h2>Step by step</h2>
<p>The new <code>&lt;nys-stepper&gt;</code> component helps you break down a complex process into simple steps. It is built with options to make it &quot;dumb&quot; (simple HREF links for steps) or &quot;smart&quot; (can use JS to trigger events <code>onClick()</code>). For more information, <a href="https://designsystem.ny.gov/components/stepper">read the full documentation for the <code>&lt;nys-stepper&gt;</code></a>.</p>
<div class="nys-grid-row nys-grid-gap-300">
  <div class="nys-desktop:nys-grid-col-4">
  <h3>Mobile</h3>
    <img src="https://designsystem.ny.gov/assets/i/2025/stepper2.png" alt="image of nys-stepper in mobile viewport" />
  </div>
  <div class="nys-desktop:nys-grid-col-4">
  <h3>Mobile Expanded</h3>
    <img src="https://designsystem.ny.gov/assets/i/2025/stepper3.png" alt="image of nys-stepper in mobile, but is expanded" />
  </div>
  <div class="nys-desktop:nys-grid-col-4">
  <h3>Desktop</h3>
    <img src="https://designsystem.ny.gov/assets/i/2025/stepper1.png" alt="image of nys-stepper in desktop viewport" />
  </div>
</div>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> poured sweat and tears into this component!</p>
<h2>nys-avatar has a new base color and more!</h2>
<p>There is a new base color, new disabled and interactive properties, and logic that detects color contrast ratios to give you the best foreground color for any background color!</p>
<p>We have removed the <code>shape</code> property. Details can be found in the 🚨 Breaking Changes section</p>
<p><a href="https://github.com/novacat35">Robert Chen</a> improved the nys-avatar component.</p>
<h2>Moar testing</h2>
<p>We are now automated testing in three more browsers. iPhone 14, Pixel 5, and Microsoft Edge. That brings the total number of browsers to five!</p>
<p><a href="https://github.com/esteinborn">Eric Steinborn</a> tests in his dreams.</p>
<h2>Code connect</h2>
<p>We hooked up nys-accordion and nys-avatar to Figma's Code Connect. Copy and paste the code for these components from Figma directly into your editor of choice.</p>
<p><a href="https://github.com/novacat35">Robert Chen</a> connected this code.</p>
<h2>CSS variables shake-up</h2>
<p>We looked at our set of CSS variables and noticed they weren't as intentional as we wanted them to be. So we took a page out of the CSS BEM (Block, Element, Modifier) syntax and have renamed our variables accordingly. We have also bubbled up some variables to be exposed to allow for certain amounts of customization depending on the component. You can find those overridable values on each component page. If you were overriding CSS variables before you'll want to check the names of those tokens to make sure they haven't changed.</p>
<p><a href="https://github.com/emilygorelik">Emily Gorelik</a> organized the chaos.</p>
<h2>Designers listen up!</h2>
<ul>
<li>The NYS Design System Figma library has been updated to include a new <code>nys-divider</code> component. (Figma only)</li>
<li>Additional variants were added to the nys-avatar component</li>
<li>A massive Figma cleanup took place over a few months leaving a cleaner and more structured Figma library</li>
</ul>
<p><a href="https://github.com/ksorrentino">Kristin Sorrentino</a> and <a href="https://github.com/leo-vogel">Leo Vogel</a> have been delving deep into the Figma library.</p>
<h2>🚨 Breaking changes</h2>
<ul>
<li>Removed <code>nys-avatar</code>'s <code>shape</code> property. Please remove from your applications</li>
<li>Changed <code>nys-alert</code> dispatch event from <code>nys-alert-closed</code> to <code>nys-close</code>. Please update any references to both <code>nys-alert-closed</code> and <code>nys-alertClosed</code> to <code>nys-close</code></li>
<li>Many CSS variables were changed, too many to list, but you can <a href="https://github.com/ITS-HCD/nysds/pull/840">read the full changelog for CSS vars</a></li>
</ul>
<h2>⚠️ Known issues</h2>
<ul>
<li><a href="https://github.com/ITS-HCD/nysds/issues/812">Bug: Unavheader not opening dropdowns on Safari</a></li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.8.0">See the full developer release notes for v.1.8.0 →</a></p>
]]></content>
      <pubDate>Fri, 05 Sep 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.8.0-release/</guid>
    </item>
    <item>
      <title>NYS Design System Release 1.7.0 “Hudson”</title>
      <link>https://designsystem.ny.gov/about/updates/1.7.0-release/</link>
      <description><![CDATA[<h2>Learn the NYS Design System</h2>
<p><a href="https://designsystem.ny.gov/learn">Visit the &quot;Learn&quot; page</a> on this site to view A video tour by the NYS Design System team to help you learn how to quickly build accessible, mobile-friendly, user-friendly digital services with the Design System.</p>
<p>In this series, we’ll explain what a “design system” is and how ours works. Most importantly, we’ll show the value it can bring to you and to the residents that use what you build with it. Whether you’ve never used a design system before or you’re just new to ours, you’ll learn tips and ideas that will help you build better web applications and sites more quickly.</p>
<div class="nys-grid-row nys-grid-gap-300 nys-display-flex">
<div class="nys-tablet:nys-grid-col-4">
<a class="card" href="https://designsystem.ny.gov/videos/introducing-the-nys-design-system/" aria-label="Watch Video: Introducing the NYS Design System">
              <div class="card__inner">               
                <div class="card__media">
                  <img src="https://i.ytimg.com/vi/-AzYrquG7E4/hq720.jpg" alt="Thumbnail image" />
                </div>
                <div class="card__content">
                  <div class="card__eyebrow">
                    General
                  </div>
                  <div class="card__title">
                    Introducing the NYS Design System
                  </div>
                  <div class="card__desc">
                    Discover what the NYS Design System is, why we built it, and how it helps teams build better websites and apps.
                    <p><b>Video duration: 12:49</b></p>
                  </div>
                </div>
              </div>
            </a>
</div>
<div class="nys-tablet:nys-grid-col-4">
<a class="card" href="https://designsystem.ny.gov/videos/intro-to-designing-with-the-new-york-state-design-system/" aria-label="Watch Video: Intro to Designing with the New York State Design System">
              <div class="card__inner">
                <div class="card__media">
                  <img src="https://i.ytimg.com/vi/hSpJv_i-hIg/hq720.jpg" alt="Thumbnail image" />
                </div>
                <div class="card__content">
                  <div class="card__eyebrow">
                    Design
                  </div>
                  <div class="card__title">
                    Intro to Designing with the NYS Design System
                  </div>
                  <div class="card__desc">
                    Learn how to start designing in Figma with ready-to-use libraries, tokens, components, and icons.
                    <p><b>Video duration: 7:59</b></p>
                  </div>
                </div>
              </div>
            </a>
</div>
<div class="nys-tablet:nys-grid-col-4">
<a class="card" href="https://designsystem.ny.gov/videos/intro-to-nysds-web-components/" aria-label="Watch Video: Intro to NYS Design System Web Components">
              <div class="card__inner">
                <div class="card__media">
                  <img src="https://i.ytimg.com/vi/NM5PFClfBgA/hq720.jpg" alt="Thumbnail image" />
                </div>
                <div class="card__content">
                  <div class="card__eyebrow">
                    Development
                  </div>
                  <div class="card__title">
                    Intro to NYS Design System Web Components
                  </div>
                  <div class="card__desc">
                    Get to know our web components: what they are, how they work, and why they're built to work in any framework.
                    <p><b>Video duration: 4:47</b></p>
                  </div>
                </div>
              </div>
            </a>
</div>
</div>
<h2>Weird Al Yankovic would be proud</h2>
<p>Add collapsible sections to your content with <a href="https://designsystem.ny.gov/components/accordion">the new <code>nys-accordion</code> component</a>. You can create a one-off accordion, or group a set together.</p>
<p><img src="https://designsystem.ny.gov/about/assets/i/2025/accordion.gif" alt="GIF of an accordion opening and closing" /></p>
<p>Robert Chen (<a href="https://github.com/novacat35">@novacat35</a>) plays a mean accordion.</p>
<h2>Show us your badges</h2>
<p><a href="https://designsystem.ny.gov/components/badge">The new <code>nys-badge</code> component</a> is a rounded, styled text label which can be used to display categories, tags, or other non-interactable labels for content. You can see examples of the nys-badge at the top of each page.</p>
<p><img src="https://designsystem.ny.gov/about/assets/i/2025/badges.png" alt="Picture of the badge element" /></p>
<p>Emily Gorelik (<a href="https://github.com/emilygorelik">@emilygorelik</a>) knocked this out of the park!</p>
<h2>New icons available</h2>
<p>New additions: <code>code</code>,  <code>social_bluesky</code>, and <code>social_threads</code></p>
<p><nys-icon name="code" size="4xl"></nys-icon>
<nys-icon name="social_bluesky" size="4xl"></nys-icon>
<nys-icon name="social_threads" size="4xl"></nys-icon></p>
<p>Thanks to Robert Chen (<a href="https://github.com/novacat35">@novacat35</a>) for keeping our icon set sharp.</p>
<h2>🚨 Breaking Changes</h2>
<ul>
<li><code>nys-alert</code> event <code>nys-alertClosed</code> changed to <code>nys-alert-closed</code> be sure to update if you are referencing the old event name.</li>
</ul>
<h2>⚠️ Known Issues</h2>
<ul>
<li><a href="https://github.com/ITS-HCD/nysds/issues/812">Bug: Unavheader not opening dropdowns on Safari</a></li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.7.0">See the full developer release notes for v.1.7.0 →</a></p>
]]></description>
      <content><![CDATA[<h2>Learn the NYS Design System</h2>
<p><a href="https://designsystem.ny.gov/learn">Visit the &quot;Learn&quot; page</a> on this site to view A video tour by the NYS Design System team to help you learn how to quickly build accessible, mobile-friendly, user-friendly digital services with the Design System.</p>
<p>In this series, we’ll explain what a “design system” is and how ours works. Most importantly, we’ll show the value it can bring to you and to the residents that use what you build with it. Whether you’ve never used a design system before or you’re just new to ours, you’ll learn tips and ideas that will help you build better web applications and sites more quickly.</p>
<div class="nys-grid-row nys-grid-gap-300 nys-display-flex">
<div class="nys-tablet:nys-grid-col-4">
<a class="card" href="https://designsystem.ny.gov/videos/introducing-the-nys-design-system/" aria-label="Watch Video: Introducing the NYS Design System">
              <div class="card__inner">               
                <div class="card__media">
                  <img src="https://i.ytimg.com/vi/-AzYrquG7E4/hq720.jpg" alt="Thumbnail image" />
                </div>
                <div class="card__content">
                  <div class="card__eyebrow">
                    General
                  </div>
                  <div class="card__title">
                    Introducing the NYS Design System
                  </div>
                  <div class="card__desc">
                    Discover what the NYS Design System is, why we built it, and how it helps teams build better websites and apps.
                    <p><b>Video duration: 12:49</b></p>
                  </div>
                </div>
              </div>
            </a>
</div>
<div class="nys-tablet:nys-grid-col-4">
<a class="card" href="https://designsystem.ny.gov/videos/intro-to-designing-with-the-new-york-state-design-system/" aria-label="Watch Video: Intro to Designing with the New York State Design System">
              <div class="card__inner">
                <div class="card__media">
                  <img src="https://i.ytimg.com/vi/hSpJv_i-hIg/hq720.jpg" alt="Thumbnail image" />
                </div>
                <div class="card__content">
                  <div class="card__eyebrow">
                    Design
                  </div>
                  <div class="card__title">
                    Intro to Designing with the NYS Design System
                  </div>
                  <div class="card__desc">
                    Learn how to start designing in Figma with ready-to-use libraries, tokens, components, and icons.
                    <p><b>Video duration: 7:59</b></p>
                  </div>
                </div>
              </div>
            </a>
</div>
<div class="nys-tablet:nys-grid-col-4">
<a class="card" href="https://designsystem.ny.gov/videos/intro-to-nysds-web-components/" aria-label="Watch Video: Intro to NYS Design System Web Components">
              <div class="card__inner">
                <div class="card__media">
                  <img src="https://i.ytimg.com/vi/NM5PFClfBgA/hq720.jpg" alt="Thumbnail image" />
                </div>
                <div class="card__content">
                  <div class="card__eyebrow">
                    Development
                  </div>
                  <div class="card__title">
                    Intro to NYS Design System Web Components
                  </div>
                  <div class="card__desc">
                    Get to know our web components: what they are, how they work, and why they're built to work in any framework.
                    <p><b>Video duration: 4:47</b></p>
                  </div>
                </div>
              </div>
            </a>
</div>
</div>
<h2>Weird Al Yankovic would be proud</h2>
<p>Add collapsible sections to your content with <a href="https://designsystem.ny.gov/components/accordion">the new <code>nys-accordion</code> component</a>. You can create a one-off accordion, or group a set together.</p>
<p><img src="https://designsystem.ny.gov/about/assets/i/2025/accordion.gif" alt="GIF of an accordion opening and closing" /></p>
<p>Robert Chen (<a href="https://github.com/novacat35">@novacat35</a>) plays a mean accordion.</p>
<h2>Show us your badges</h2>
<p><a href="https://designsystem.ny.gov/components/badge">The new <code>nys-badge</code> component</a> is a rounded, styled text label which can be used to display categories, tags, or other non-interactable labels for content. You can see examples of the nys-badge at the top of each page.</p>
<p><img src="https://designsystem.ny.gov/about/assets/i/2025/badges.png" alt="Picture of the badge element" /></p>
<p>Emily Gorelik (<a href="https://github.com/emilygorelik">@emilygorelik</a>) knocked this out of the park!</p>
<h2>New icons available</h2>
<p>New additions: <code>code</code>,  <code>social_bluesky</code>, and <code>social_threads</code></p>
<p><nys-icon name="code" size="4xl"></nys-icon>
<nys-icon name="social_bluesky" size="4xl"></nys-icon>
<nys-icon name="social_threads" size="4xl"></nys-icon></p>
<p>Thanks to Robert Chen (<a href="https://github.com/novacat35">@novacat35</a>) for keeping our icon set sharp.</p>
<h2>🚨 Breaking Changes</h2>
<ul>
<li><code>nys-alert</code> event <code>nys-alertClosed</code> changed to <code>nys-alert-closed</code> be sure to update if you are referencing the old event name.</li>
</ul>
<h2>⚠️ Known Issues</h2>
<ul>
<li><a href="https://github.com/ITS-HCD/nysds/issues/812">Bug: Unavheader not opening dropdowns on Safari</a></li>
</ul>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>That’s it!</h3>
<h4>For full component updates, bug fixes, and the detailed changelog:</h4>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.7.0">See the full developer release notes for v.1.7.0 →</a></p>
]]></content>
      <pubDate>Fri, 22 Aug 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.7.0-release/</guid>
    </item>
    <item>
      <title>Release 1.6.0</title>
      <link>https://designsystem.ny.gov/about/updates/1.6.0-release/</link>
      <description><![CDATA[<h2>Phone fields just got smarter</h2>
<p>Typing a phone number now auto-formats as you type in <code>&lt;nys-textinput type=&quot;tel&quot;&gt;</code>.</p>
<p><img src="https://designsystem.ny.gov/about/assets/i/2025/telephone-input-mask.gif" alt="GIF of a form field typing out a well-formatted phone number" /></p>
<p>Nice work by <a href="https://github.com/emilygorelik">Emily Gorelik</a>!</p>
<h2>Fresh icons for better wayfinding</h2>
<p>New additions: <code>mail</code>, <code>link</code>, <code>arrow_forward</code>, <code>arrow_upward</code>, and <code>arrow_downward</code>.</p>
<p>Thanks to <a href="https://github.com/novacat35">Robert Chen</a> for keeping our icon set sharp.</p>
<h2>Figma-only updates (engineers, you’re off the hook)</h2>
<ul>
<li>Global Header was redesigned: better interaction, active menu states<br />
→ 🚨 Designers: the old version is deprecated, please swap in the new one!</li>
<li>Screen template is now a published utility component. A ready-to-go starter screen for Figma — complete with header, footer, grid, and responsive layout settings.<br />
→ Designers: drop it in, pick a screen size, and start building.</li>
<li>Visual updates to fidelity modes and input masks</li>
</ul>
<p>That’s it!</p>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.6.0" title="https://github.com/its-hcd/nysds/releases/tag/v1.6.0">See the full developer release notes for v.1.6.0 →</a></p>
]]></description>
      <content><![CDATA[<h2>Phone fields just got smarter</h2>
<p>Typing a phone number now auto-formats as you type in <code>&lt;nys-textinput type=&quot;tel&quot;&gt;</code>.</p>
<p><img src="https://designsystem.ny.gov/about/assets/i/2025/telephone-input-mask.gif" alt="GIF of a form field typing out a well-formatted phone number" /></p>
<p>Nice work by <a href="https://github.com/emilygorelik">Emily Gorelik</a>!</p>
<h2>Fresh icons for better wayfinding</h2>
<p>New additions: <code>mail</code>, <code>link</code>, <code>arrow_forward</code>, <code>arrow_upward</code>, and <code>arrow_downward</code>.</p>
<p>Thanks to <a href="https://github.com/novacat35">Robert Chen</a> for keeping our icon set sharp.</p>
<h2>Figma-only updates (engineers, you’re off the hook)</h2>
<ul>
<li>Global Header was redesigned: better interaction, active menu states<br />
→ 🚨 Designers: the old version is deprecated, please swap in the new one!</li>
<li>Screen template is now a published utility component. A ready-to-go starter screen for Figma — complete with header, footer, grid, and responsive layout settings.<br />
→ Designers: drop it in, pick a screen size, and start building.</li>
<li>Visual updates to fidelity modes and input masks</li>
</ul>
<p>That’s it!</p>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.6.0" title="https://github.com/its-hcd/nysds/releases/tag/v1.6.0">See the full developer release notes for v.1.6.0 →</a></p>
]]></content>
      <pubDate>Thu, 07 Aug 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.6.0-release/</guid>
    </item>
    <item>
      <title>Rapid Wireframes to Prototypes with Fidelity Modes</title>
      <link>https://designsystem.ny.gov/about/updates/fidelity-modes-rapid-prototyping/</link>
      <description><![CDATA[<div class="nys-margin-b-400">
<nys-alert type="info" class="nys-padding-b-400" heading="Fidelity Modes Tutorial">
  To experiment with this fidelity modes approach in Figma, you can try out our: 
  <a href="https://www.figma.com/community/file/1545561192181442235">Figma Community file for Fidelity Modes</a>
</nys-alert>  
</div>
<p>Designing with speed and consistency doesn’t have to mean compromising on quality. In fact, with a smart, but simple, use of Figma’s variable collections and systems thinking, you can transform wireframes in FigJam into high-fidelity mockups and realistic prototypes in a single click.</p>
<p>Stakeholders, working under constrained budgets and timelines, are often hesitant to start with low fidelity because of the time (and associated cost) it takes to recreate screens in high fidelity. This friction often discourages early ideation and iteration.</p>
<p><img src="https://designsystem.ny.gov/assets/i/2025/fidelity-modes-animation.gif" alt="Animation of variable logic for different fidelity modes" /></p>
<p>Components are built from Variables and Text Styles that change value depending on the Fidelity mode set.The approach described here removes that barrier by making the transition from low to high fidelity instantaneous. It enables teams to think through layout and content before discussing visual design. This not only reduces time and cost during the design process, but also removes the need for separate wireframing tools. It opens up new workflows — like designing in high or mid fidelity and instantly switching to low fidelity for clearer communication with stakeholders.</p>
<p>Some teams build separate wireframing libraries and use Figma’s library swap feature. The downside to this is that you need to maintain two separate libraries. By adopting this approach, teams who build their own custom components that don’t yet exist in the design system, as long as they are building with the design system’s published Figma Variables and Text Styles, will automatically have wireframing versions of their components that can be used in FigJam with the workaround explained below.</p>
<p>This article walks you through how I created a more streamlined UX workflow while working on the <a href="https://designsystem.ny.gov/"><strong>New York State Design System</strong></a> — and how you can apply these techniques to your own design system.</p>
<p><em>Note: this workflow is currently in a beta stage and has not yet been released in an officially supported capacity to users of the NYS design system.</em></p>
<h2>The Power of Variable Collections in Figma</h2>
<p><img src="https://designsystem.ny.gov/assets/i/2025/fidelity-modes-variable-collections.png" alt="Screenshot of variable collections in Figma" /></p>
<p>At the heart of this workflow are three types of Figma variable collections: Primitive, Routing, and Applied.</p>
<h3>Primitive Variables</h3>
<p>These are your foundational design tokens. They define raw values — like color ramps, font size ramps, spacing units — which serve as the base for your semantic variables.</p>
<h3>Routing Variables</h3>
<p>Sitting between primitives and applied variables, routing collections help manage different contextual modes such as:</p>
<ul>
<li><strong>Branding:</strong> For multiple brand identities</li>
<li><strong>Fidelity:</strong> Low, Mid, and High design detail</li>
<li><strong>Device Size:</strong> Mobile, Tablet, Desktop</li>
<li><strong>Appearance:</strong> Light, Dark, High Contrast (Light/Dark)</li>
</ul>
<p>Each mode adjusts which primitive variables are passed through, allowing flexibility without complexity.</p>
<p>Before we publish the NYS Design System to the Figma Community, I plan to add a new routing collection named ‘Organization’ with two modes: ‘State’ and ‘Local’. This would allow towns or counties in New York State to adopt our Figma Library and customize it by plugging in their own brand color ramps. By simply switching a screen into ‘Local’ mode, smaller orgs can instantly localize the design system without starting from scratch.</p>
<p><em>The idea for Routing collections came from the REWE design system’s talk at the</em> <a href="https://intodesignsystems.com/"><em>Into Design Systems</em></a> <em>2025 conference—credit to</em> <a href="https://www.linkedin.com/in/vincent-schlothauer/"><em>Vincent Schlothauer</em></a> <em>and</em> <a href="https://www.linkedin.com/in/franziska-haaf/"><em>Franziska Haaf</em></a> <em>for their innovative ideas. The conference recordings are a great resource if you’re interested in learning more advanced Figma Variable techniques.</em></p>
<h3>Applied Variables</h3>
<p>These are the variables that actually get applied to components and text styles. They carry no additional semantic meaning — just the final values that affect the visual interface. This abstraction enables you to add or adjust routing layers without disrupting the applied layer.</p>
<p>For further clarity: applied variables are mapped to a routing variable. The reason I’m taking this approach is if you apply the routing variables directly to components, then it is painful to add a new routing layer at the top as you’d then need to reapply all of your variables.</p>
<p>For example, look at the image below and imagine you applied the Fidelity routing layer to the components instead of the Applied variables. If you wanted to insert a routing layer above Fidelity you’d have to swap out all of the variables on your components (and any custom components created by users of the design system’s published variables and text styles). By following my approach you instead would simply map the Applied variables to the new routing layer variables.</p>
<p><strong>Scoping and Publishing</strong></p>
<p>Primitive and Routing collections should be configured to not be published and scoped to not apply to any Figma properties. By doing so, only Applied variables will show to consuming designers. All of the complexity of the routing collections is handled by the design system team. Users of the design system in Figma should only ever see, use, and think about the Applied variables.</p>
<h2>Understanding the Fidelity Routing Collection</h2>
<p>The Fidelity routing collection has three modes: High, Mid, and Low.</p>
<p><img src="https://designsystem.ny.gov/assets/i/2025/fidelity-modes-routing-logic.png" alt="Screenshot of fidelity routing collections in Figma" /></p>
<p>Variables are organized in the same structure in all routing collections with a parent group named to match the routing collection’s name so that it’s easier to identify which collection a given variable is being set to.</p>
<p>For example, in the Applied variable collection you might have a primary color variable of ‘primary’. So the variable collections might look like this for the first mode of each collection:</p>
<ul>
<li><strong>Applied/Semantic:</strong> <code>color-primary</code> <em>(published)</em> ← <code>fidelity-color-primary</code></li>
<li><strong>Fidelity: High:</strong> <code>fidelity-color-primary</code> ← <code>brand-color-primary</code></li>
<li><strong>Brand: Main:</strong> <code>brand-color-primary</code> ← <code>state-blue-700</code></li>
<li><strong>Primitive:</strong> <code>state-blue-700</code> ← <code>#154973</code></li>
</ul>
<p>To manage variable collections efficiently, I use the <a href="https://www.figma.com/community/plugin/802579985985331070/design-system-organizer">Design System Organizer</a> plugin. It was a huge help for tasks like swapping variables, duplicating variables between collections, and migrating variables between files — especially during the recent project I handled of merging our previously separate component and variable files.</p>
<p>One unexpected benefit: reviewing components in Low Fidelity mode has been a helpful litmus test. If two components look too similar when viewed in grayscale without a text label, it’s often a sign they need better differentiation.</p>
<h2>FigJam Workaround with Fidelity Modes</h2>
<p>You can’t currently set Figma Modes in FigJam so here’s a workaround for how you can start wireframing with this setup:</p>
<ol>
<li>Create a Section in Figma Design.</li>
<li>Place a component with variables applied in the Section.</li>
<li>Set the Section’s appearance to Low or Mid fidelity.</li>
<li>Copy the Section into FigJam.</li>
</ol>
<p>Now, any component placed within that section will automatically inherit the chosen fidelity style.</p>
<blockquote>
<p><em>⚠️</em> <em><strong>Important Tip:</strong></em> <em>Components placed in frames with a variable mode set are prolematic. I recommend using sections in FigJam for device artboards rather than a frame.</em></p>
</blockquote>
<h2>Building a Smart Wireframe Sticker Sheet</h2>
<ul>
<li>Create components using applied variables that are defined by their equivalent values in a fidelity mode routing collection.</li>
<li>Insert these components with different combinations of component properties into a section with a low or mid fidelity mode set.</li>
<li>Use these components to wireframe directly in FigJam with your actual design system components making switching to Figma Design a simple copy and paste.</li>
</ul>
<p><img src="https://miro.medium.com/v2/resize:fit:5740/1*VZ_iE1DBZcdoZjvor8hHZg@2x.png" alt="" /></p>
<h2>The Workflow in Action</h2>
<p>This workflow replaces the need for separate wireframing tools — saving time and aligning designers and developers more closely.</p>
<ol>
<li><strong>Start in FigJam with Low Fidelity mode.</strong><br />
By starting in FigJam you force yourself not to think about component properties. FigJam is a simpler tool that lowers the barrier to entry for non-designers to contribute ideas.</li>
<li><strong>Refine in FigJam or Figma in Mid Fidelity.</strong> Change fidelity mode to instantly switch to mid-fi to begin working on content without focusing on aesthetic appearance. Get feedback from stakeholders on layout, content, and copywriting.</li>
<li><strong>Switch to Figma to polish UI in High Fidelity mode.</strong> Refine colors, images, and component properties. Build prototypes and run usability testing. The components for the NYS Design System come with a lot of advanced, realistic prototyping built in already to make this fast and easy for designers.</li>
<li><strong>Rapidly transition to accurate code using Figma MCP</strong> Generate front-end code within seconds using MCP and Code Connect (see part two in this 2-part blog series for more on this topic).</li>
</ol>
<p>Although we have Code Connect set up for all of our design system components, the variables and tokens aren’t yet automatically synced with code yet. We’re currently maintaining parity manually, which highlights the importance of strong naming conventions and documentation early on.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:10636/1*ohUbgy_coLW_RU1YzFVy_A.png" alt="" /></p>
<p><strong>This approach may not be for everyone as it does require a robust collection of components and text styles built with Figma Variables.</strong> But for those who choose to adopt it, this will be <em>transformational</em>. To designers, this looks like a Figma magic trick because it feels like it shouldn’t be possible.</p>
<h2>Bonus: Dynamic Component Variants by Fidelity</h2>
<p>Applying a text variable to a component’s variant property on an instance allows you to swap designs by fidelity mode. For example, I’ve used this to switch the New York State logo, as seen above, between: Sketch (Low Fidelity), Outline (Mid Fidelity), and Full Vector (High Fidelity).</p>
<p>Thanks for reading! If this sparked any ideas, questions, or if you’ve experimented with your own routing collections please email the NYS Design System team at <a href="mailto:designsystem@its.ny.gov">designsystem@its.ny.gov</a>.</p>
<p>Let’s build better, together.</p>
]]></description>
      <content><![CDATA[<div class="nys-margin-b-400">
<nys-alert type="info" class="nys-padding-b-400" heading="Fidelity Modes Tutorial">
  To experiment with this fidelity modes approach in Figma, you can try out our: 
  <a href="https://www.figma.com/community/file/1545561192181442235">Figma Community file for Fidelity Modes</a>
</nys-alert>  
</div>
<p>Designing with speed and consistency doesn’t have to mean compromising on quality. In fact, with a smart, but simple, use of Figma’s variable collections and systems thinking, you can transform wireframes in FigJam into high-fidelity mockups and realistic prototypes in a single click.</p>
<p>Stakeholders, working under constrained budgets and timelines, are often hesitant to start with low fidelity because of the time (and associated cost) it takes to recreate screens in high fidelity. This friction often discourages early ideation and iteration.</p>
<p><img src="https://designsystem.ny.gov/assets/i/2025/fidelity-modes-animation.gif" alt="Animation of variable logic for different fidelity modes" /></p>
<p>Components are built from Variables and Text Styles that change value depending on the Fidelity mode set.The approach described here removes that barrier by making the transition from low to high fidelity instantaneous. It enables teams to think through layout and content before discussing visual design. This not only reduces time and cost during the design process, but also removes the need for separate wireframing tools. It opens up new workflows — like designing in high or mid fidelity and instantly switching to low fidelity for clearer communication with stakeholders.</p>
<p>Some teams build separate wireframing libraries and use Figma’s library swap feature. The downside to this is that you need to maintain two separate libraries. By adopting this approach, teams who build their own custom components that don’t yet exist in the design system, as long as they are building with the design system’s published Figma Variables and Text Styles, will automatically have wireframing versions of their components that can be used in FigJam with the workaround explained below.</p>
<p>This article walks you through how I created a more streamlined UX workflow while working on the <a href="https://designsystem.ny.gov/"><strong>New York State Design System</strong></a> — and how you can apply these techniques to your own design system.</p>
<p><em>Note: this workflow is currently in a beta stage and has not yet been released in an officially supported capacity to users of the NYS design system.</em></p>
<h2>The Power of Variable Collections in Figma</h2>
<p><img src="https://designsystem.ny.gov/assets/i/2025/fidelity-modes-variable-collections.png" alt="Screenshot of variable collections in Figma" /></p>
<p>At the heart of this workflow are three types of Figma variable collections: Primitive, Routing, and Applied.</p>
<h3>Primitive Variables</h3>
<p>These are your foundational design tokens. They define raw values — like color ramps, font size ramps, spacing units — which serve as the base for your semantic variables.</p>
<h3>Routing Variables</h3>
<p>Sitting between primitives and applied variables, routing collections help manage different contextual modes such as:</p>
<ul>
<li><strong>Branding:</strong> For multiple brand identities</li>
<li><strong>Fidelity:</strong> Low, Mid, and High design detail</li>
<li><strong>Device Size:</strong> Mobile, Tablet, Desktop</li>
<li><strong>Appearance:</strong> Light, Dark, High Contrast (Light/Dark)</li>
</ul>
<p>Each mode adjusts which primitive variables are passed through, allowing flexibility without complexity.</p>
<p>Before we publish the NYS Design System to the Figma Community, I plan to add a new routing collection named ‘Organization’ with two modes: ‘State’ and ‘Local’. This would allow towns or counties in New York State to adopt our Figma Library and customize it by plugging in their own brand color ramps. By simply switching a screen into ‘Local’ mode, smaller orgs can instantly localize the design system without starting from scratch.</p>
<p><em>The idea for Routing collections came from the REWE design system’s talk at the</em> <a href="https://intodesignsystems.com/"><em>Into Design Systems</em></a> <em>2025 conference—credit to</em> <a href="https://www.linkedin.com/in/vincent-schlothauer/"><em>Vincent Schlothauer</em></a> <em>and</em> <a href="https://www.linkedin.com/in/franziska-haaf/"><em>Franziska Haaf</em></a> <em>for their innovative ideas. The conference recordings are a great resource if you’re interested in learning more advanced Figma Variable techniques.</em></p>
<h3>Applied Variables</h3>
<p>These are the variables that actually get applied to components and text styles. They carry no additional semantic meaning — just the final values that affect the visual interface. This abstraction enables you to add or adjust routing layers without disrupting the applied layer.</p>
<p>For further clarity: applied variables are mapped to a routing variable. The reason I’m taking this approach is if you apply the routing variables directly to components, then it is painful to add a new routing layer at the top as you’d then need to reapply all of your variables.</p>
<p>For example, look at the image below and imagine you applied the Fidelity routing layer to the components instead of the Applied variables. If you wanted to insert a routing layer above Fidelity you’d have to swap out all of the variables on your components (and any custom components created by users of the design system’s published variables and text styles). By following my approach you instead would simply map the Applied variables to the new routing layer variables.</p>
<p><strong>Scoping and Publishing</strong></p>
<p>Primitive and Routing collections should be configured to not be published and scoped to not apply to any Figma properties. By doing so, only Applied variables will show to consuming designers. All of the complexity of the routing collections is handled by the design system team. Users of the design system in Figma should only ever see, use, and think about the Applied variables.</p>
<h2>Understanding the Fidelity Routing Collection</h2>
<p>The Fidelity routing collection has three modes: High, Mid, and Low.</p>
<p><img src="https://designsystem.ny.gov/assets/i/2025/fidelity-modes-routing-logic.png" alt="Screenshot of fidelity routing collections in Figma" /></p>
<p>Variables are organized in the same structure in all routing collections with a parent group named to match the routing collection’s name so that it’s easier to identify which collection a given variable is being set to.</p>
<p>For example, in the Applied variable collection you might have a primary color variable of ‘primary’. So the variable collections might look like this for the first mode of each collection:</p>
<ul>
<li><strong>Applied/Semantic:</strong> <code>color-primary</code> <em>(published)</em> ← <code>fidelity-color-primary</code></li>
<li><strong>Fidelity: High:</strong> <code>fidelity-color-primary</code> ← <code>brand-color-primary</code></li>
<li><strong>Brand: Main:</strong> <code>brand-color-primary</code> ← <code>state-blue-700</code></li>
<li><strong>Primitive:</strong> <code>state-blue-700</code> ← <code>#154973</code></li>
</ul>
<p>To manage variable collections efficiently, I use the <a href="https://www.figma.com/community/plugin/802579985985331070/design-system-organizer">Design System Organizer</a> plugin. It was a huge help for tasks like swapping variables, duplicating variables between collections, and migrating variables between files — especially during the recent project I handled of merging our previously separate component and variable files.</p>
<p>One unexpected benefit: reviewing components in Low Fidelity mode has been a helpful litmus test. If two components look too similar when viewed in grayscale without a text label, it’s often a sign they need better differentiation.</p>
<h2>FigJam Workaround with Fidelity Modes</h2>
<p>You can’t currently set Figma Modes in FigJam so here’s a workaround for how you can start wireframing with this setup:</p>
<ol>
<li>Create a Section in Figma Design.</li>
<li>Place a component with variables applied in the Section.</li>
<li>Set the Section’s appearance to Low or Mid fidelity.</li>
<li>Copy the Section into FigJam.</li>
</ol>
<p>Now, any component placed within that section will automatically inherit the chosen fidelity style.</p>
<blockquote>
<p><em>⚠️</em> <em><strong>Important Tip:</strong></em> <em>Components placed in frames with a variable mode set are prolematic. I recommend using sections in FigJam for device artboards rather than a frame.</em></p>
</blockquote>
<h2>Building a Smart Wireframe Sticker Sheet</h2>
<ul>
<li>Create components using applied variables that are defined by their equivalent values in a fidelity mode routing collection.</li>
<li>Insert these components with different combinations of component properties into a section with a low or mid fidelity mode set.</li>
<li>Use these components to wireframe directly in FigJam with your actual design system components making switching to Figma Design a simple copy and paste.</li>
</ul>
<p><img src="https://miro.medium.com/v2/resize:fit:5740/1*VZ_iE1DBZcdoZjvor8hHZg@2x.png" alt="" /></p>
<h2>The Workflow in Action</h2>
<p>This workflow replaces the need for separate wireframing tools — saving time and aligning designers and developers more closely.</p>
<ol>
<li><strong>Start in FigJam with Low Fidelity mode.</strong><br />
By starting in FigJam you force yourself not to think about component properties. FigJam is a simpler tool that lowers the barrier to entry for non-designers to contribute ideas.</li>
<li><strong>Refine in FigJam or Figma in Mid Fidelity.</strong> Change fidelity mode to instantly switch to mid-fi to begin working on content without focusing on aesthetic appearance. Get feedback from stakeholders on layout, content, and copywriting.</li>
<li><strong>Switch to Figma to polish UI in High Fidelity mode.</strong> Refine colors, images, and component properties. Build prototypes and run usability testing. The components for the NYS Design System come with a lot of advanced, realistic prototyping built in already to make this fast and easy for designers.</li>
<li><strong>Rapidly transition to accurate code using Figma MCP</strong> Generate front-end code within seconds using MCP and Code Connect (see part two in this 2-part blog series for more on this topic).</li>
</ol>
<p>Although we have Code Connect set up for all of our design system components, the variables and tokens aren’t yet automatically synced with code yet. We’re currently maintaining parity manually, which highlights the importance of strong naming conventions and documentation early on.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:10636/1*ohUbgy_coLW_RU1YzFVy_A.png" alt="" /></p>
<p><strong>This approach may not be for everyone as it does require a robust collection of components and text styles built with Figma Variables.</strong> But for those who choose to adopt it, this will be <em>transformational</em>. To designers, this looks like a Figma magic trick because it feels like it shouldn’t be possible.</p>
<h2>Bonus: Dynamic Component Variants by Fidelity</h2>
<p>Applying a text variable to a component’s variant property on an instance allows you to swap designs by fidelity mode. For example, I’ve used this to switch the New York State logo, as seen above, between: Sketch (Low Fidelity), Outline (Mid Fidelity), and Full Vector (High Fidelity).</p>
<p>Thanks for reading! If this sparked any ideas, questions, or if you’ve experimented with your own routing collections please email the NYS Design System team at <a href="mailto:designsystem@its.ny.gov">designsystem@its.ny.gov</a>.</p>
<p>Let’s build better, together.</p>
]]></content>
      <pubDate>Tue, 05 Aug 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/fidelity-modes-rapid-prototyping/</guid>
    </item>
    <item>
      <title>Release 1.5.3</title>
      <link>https://designsystem.ny.gov/about/updates/1.5.3-release/</link>
      <description><![CDATA[<h2>Forms behave again</h2>
<p>Text Input no longer overflows its container — forms are back to being predictable and easy to use.<br />
↳ Big thanks to <a href="https://github.com/emilygorelik">Emily Gorelik</a> for tracking this down.</p>
<h2>A more accessible UNavheader</h2>
<p>Tab order inside <code>nys-unavheader</code> has been corrected, so moving through links with the keyboard now works as expected.<br />
↳ Kudos to <a href="https://github.com/esteinborn">Eric Steinborn</a> for pushing this fix through.</p>
<h2>Back to Top works as expected</h2>
<p>The <code>nys-backtotop</code> button no longer shows up in the wrong place, and its events now use the proper <code>nys-</code> prefix.<br />
↳ Shout out to <a href="https://github.com/NovaCat35">Robert Chen</a> for handling this one.</p>
<h2>Other fixes and improvements</h2>
<ul>
<li><code>nys-tooltip</code> now render correctly on icons</li>
<li>Avatar now uses <code>ariaLabel</code> for accessibility</li>
<li>Transparent backgrounds in <code>nys-fileinput</code> lists fixed</li>
<li>Business agency group ramp color corrected</li>
<li>Dependency linking and publishing workflow bugs squashed</li>
<li>Code Connect enhancements for <code>nys-backtotop</code> and circle prop for <code>nys-button</code></li>
</ul>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.5.3" title="https://github.com/its-hcd/nysds/releases/tag/v1.5.3">See the full developer release notes for v.1.5.3 →</a></p>
]]></description>
      <content><![CDATA[<h2>Forms behave again</h2>
<p>Text Input no longer overflows its container — forms are back to being predictable and easy to use.<br />
↳ Big thanks to <a href="https://github.com/emilygorelik">Emily Gorelik</a> for tracking this down.</p>
<h2>A more accessible UNavheader</h2>
<p>Tab order inside <code>nys-unavheader</code> has been corrected, so moving through links with the keyboard now works as expected.<br />
↳ Kudos to <a href="https://github.com/esteinborn">Eric Steinborn</a> for pushing this fix through.</p>
<h2>Back to Top works as expected</h2>
<p>The <code>nys-backtotop</code> button no longer shows up in the wrong place, and its events now use the proper <code>nys-</code> prefix.<br />
↳ Shout out to <a href="https://github.com/NovaCat35">Robert Chen</a> for handling this one.</p>
<h2>Other fixes and improvements</h2>
<ul>
<li><code>nys-tooltip</code> now render correctly on icons</li>
<li>Avatar now uses <code>ariaLabel</code> for accessibility</li>
<li>Transparent backgrounds in <code>nys-fileinput</code> lists fixed</li>
<li>Business agency group ramp color corrected</li>
<li>Dependency linking and publishing workflow bugs squashed</li>
<li>Code Connect enhancements for <code>nys-backtotop</code> and circle prop for <code>nys-button</code></li>
</ul>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.5.3" title="https://github.com/its-hcd/nysds/releases/tag/v1.5.3">See the full developer release notes for v.1.5.3 →</a></p>
]]></content>
      <pubDate>Fri, 01 Aug 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.5.3-release/</guid>
    </item>
    <item>
      <title>Release 1.5.0</title>
      <link>https://designsystem.ny.gov/about/updates/1.5.0-release/</link>
      <description><![CDATA[<h2>Welcome, tooltips!</h2>
<p><code>&lt;nys-tooltip&gt;</code> has officially joined the design system family. Wrap it around a <code>&lt;nys-button&gt;</code> or <code>&lt;nys-icon&gt;</code> and you’ll get clear, accessible context on hover or focus.<br />
↳ Built with care by <a href="https://github.com/NovaCat35">Robert Chen</a>.</p>
<h2>File Input, all cleaned up</h2>
<p>We gave <code>&lt;nys-fileinput&gt;</code> some extra attention this round. With the bugs ironed out, it’s ready to handle uploads reliably in production.<br />
↳ Fixes led by <a href="https://github.com/NovaCat35">Robert Chen</a>.</p>
<h2>Other fixes and improvements</h2>
<ul>
<li>Proper UMD builds for alpha releases</li>
<li><code>ariaLabel</code> support added to <code>nys-icon</code></li>
<li><code>nys-unavheader</code> accessibility improved: search button labeled and aria values corrected</li>
<li>Logic fix for <code>validateFileHeader</code></li>
</ul>
<p>↳ Thanks to <a href="https://github.com/emilygorelik">Emily Gorelik</a>, <a href="https://github.com/NovaCat35">Robert Chen</a>, and <a href="https://github.com/esteinborn">Eric Steinborn</a> for their work across these updates.</p>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.5.0" title="https://github.com/its-hcd/nysds/releases/tag/v1.5.0">See the full developer release notes for v1.5.0 →</a></p>
]]></description>
      <content><![CDATA[<h2>Welcome, tooltips!</h2>
<p><code>&lt;nys-tooltip&gt;</code> has officially joined the design system family. Wrap it around a <code>&lt;nys-button&gt;</code> or <code>&lt;nys-icon&gt;</code> and you’ll get clear, accessible context on hover or focus.<br />
↳ Built with care by <a href="https://github.com/NovaCat35">Robert Chen</a>.</p>
<h2>File Input, all cleaned up</h2>
<p>We gave <code>&lt;nys-fileinput&gt;</code> some extra attention this round. With the bugs ironed out, it’s ready to handle uploads reliably in production.<br />
↳ Fixes led by <a href="https://github.com/NovaCat35">Robert Chen</a>.</p>
<h2>Other fixes and improvements</h2>
<ul>
<li>Proper UMD builds for alpha releases</li>
<li><code>ariaLabel</code> support added to <code>nys-icon</code></li>
<li><code>nys-unavheader</code> accessibility improved: search button labeled and aria values corrected</li>
<li>Logic fix for <code>validateFileHeader</code></li>
</ul>
<p>↳ Thanks to <a href="https://github.com/emilygorelik">Emily Gorelik</a>, <a href="https://github.com/NovaCat35">Robert Chen</a>, and <a href="https://github.com/esteinborn">Eric Steinborn</a> for their work across these updates.</p>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.5.0" title="https://github.com/its-hcd/nysds/releases/tag/v1.5.0">See the full developer release notes for v1.5.0 →</a></p>
]]></content>
      <pubDate>Thu, 24 Jul 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.5.0-release/</guid>
    </item>
    <item>
      <title>Release 1.4.0</title>
      <link>https://designsystem.ny.gov/about/updates/1.4.0-release/</link>
      <description><![CDATA[<h2>File uploads arrive</h2>
<p>Say hello to <code>&lt;nys-fileinput&gt;</code>, a new component for handling file uploads in your forms. It supports multiple files, drag-and-drop, MIME type filtering, and more.</p>
<p><img src="https://github.com/user-attachments/assets/a92741ce-7497-43b2-8cc3-e0d1e8cb255c" alt="Screenshot of the nys-fileinput component" /><br />
↳ Built by <a href="https://github.com/NovaCat35">Robert Chen</a>.</p>
<h2>Package size cut in half</h2>
<p>We streamlined dependencies across the library, shrinking the full <code>@nysds/components</code> package down to 380KB. That means faster installs and lighter apps.<br />
↳ Optimization work by <a href="https://github.com/esteinborn">Eric Steinborn</a>.</p>
<h2>Fresh icons for your toolkit</h2>
<p>Three new icons have landed in <code>&lt;nys-icon&gt;</code>:</p>
<p><strong>print</strong><br />
<img src="https://github.com/user-attachments/assets/fb676237-2019-43da-8b8f-99354e25a7bf" alt="print icon" /></p>
<p><strong>attach_file</strong><br />
<img src="https://github.com/user-attachments/assets/5dc81558-9047-4d58-b07a-cb4b14cfd43f" alt="attach_file icon" /></p>
<p><strong>progress_activity</strong><br />
<img src="https://github.com/user-attachments/assets/022e666e-7f8e-4678-bbda-b26474df1adb" alt="progress_activity icon" /></p>
<p>↳ Added by <a href="https://github.com/NovaCat35">Robert Chen</a>.</p>
<h2>Other fixes and improvements</h2>
<ul>
<li>Plopfile updates</li>
<li>Issue template updates</li>
</ul>
<p>↳ Thanks to <a href="https://github.com/emilygorelik">Emily Gorelik</a> for keeping the scaffolding sharp.</p>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.4.0" title="https://github.com/its-hcd/nysds/releases/tag/v1.4.0">See the full developer release notes for v1.4.0 →</a></p>
]]></description>
      <content><![CDATA[<h2>File uploads arrive</h2>
<p>Say hello to <code>&lt;nys-fileinput&gt;</code>, a new component for handling file uploads in your forms. It supports multiple files, drag-and-drop, MIME type filtering, and more.</p>
<p><img src="https://github.com/user-attachments/assets/a92741ce-7497-43b2-8cc3-e0d1e8cb255c" alt="Screenshot of the nys-fileinput component" /><br />
↳ Built by <a href="https://github.com/NovaCat35">Robert Chen</a>.</p>
<h2>Package size cut in half</h2>
<p>We streamlined dependencies across the library, shrinking the full <code>@nysds/components</code> package down to 380KB. That means faster installs and lighter apps.<br />
↳ Optimization work by <a href="https://github.com/esteinborn">Eric Steinborn</a>.</p>
<h2>Fresh icons for your toolkit</h2>
<p>Three new icons have landed in <code>&lt;nys-icon&gt;</code>:</p>
<p><strong>print</strong><br />
<img src="https://github.com/user-attachments/assets/fb676237-2019-43da-8b8f-99354e25a7bf" alt="print icon" /></p>
<p><strong>attach_file</strong><br />
<img src="https://github.com/user-attachments/assets/5dc81558-9047-4d58-b07a-cb4b14cfd43f" alt="attach_file icon" /></p>
<p><strong>progress_activity</strong><br />
<img src="https://github.com/user-attachments/assets/022e666e-7f8e-4678-bbda-b26474df1adb" alt="progress_activity icon" /></p>
<p>↳ Added by <a href="https://github.com/NovaCat35">Robert Chen</a>.</p>
<h2>Other fixes and improvements</h2>
<ul>
<li>Plopfile updates</li>
<li>Issue template updates</li>
</ul>
<p>↳ Thanks to <a href="https://github.com/emilygorelik">Emily Gorelik</a> for keeping the scaffolding sharp.</p>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.4.0" title="https://github.com/its-hcd/nysds/releases/tag/v1.4.0">See the full developer release notes for v1.4.0 →</a></p>
]]></content>
      <pubDate>Thu, 10 Jul 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.4.0-release/</guid>
    </item>
    <item>
      <title>Release 1.3.0</title>
      <link>https://designsystem.ny.gov/about/updates/1.3.0-release/</link>
      <description><![CDATA[<h2>Figma libraries streamlined</h2>
<p>Designers, this one’s for you. We merged the Components and Foundations library, which makes them easier to use with branching and will be a better experience when we publish to the community. This also sets the stage for powerful new “modes” (like wireframing)... coming soon.</p>
<p>And good news: <code>&lt;nys-tooltip&gt;</code> has already landed in Figma, and will be available in code soon!</p>
<p><img src="https://github.com/user-attachments/assets/13ee50aa-a531-47d5-bcde-f1e5e26b7caf" alt="Screenshot showing Figma updates" /></p>
<p>↳ Thanks to <a href="https://github.com/ksorrentino">Kristin Sorrentino</a> and <a href="https://github.com/leo-vogel">Leo Vogel</a> for the tireless work in making this happen.</p>
<h2>Back to Top joins the library</h2>
<p>Need a quick way back to the top of a page? <code>&lt;nys-backtotop&gt;</code> is here! Put it at the bottom of your main content container, and it will appear once the user scrolls down. Read more about it on <a href="https://designsystem.ny.gov/components/backtotop">the nys-backtotop component documentation page</a>.</p>
<p><img src="https://github.com/user-attachments/assets/8b6cb2e2-2753-4af2-90f4-432f10821f73" alt="Screenshot of the nys-backtotop component" /></p>
<p>↳ &quot;Top tier&quot; work by <a href="https://github.com/NovaCat35">Robert Chen</a>.</p>
<h2>Circle button variant</h2>
<p><code>&lt;nys-button&gt;</code> now has a circle variant, great for icon-only actions. (Be sure to use the <code>label</code> prop for accessibility!)</p>
<p><img src="https://github.com/user-attachments/assets/b771f6d1-da6d-43c1-94c4-7e2c53077669" alt="Screenshot of the circle button" /></p>
<p>↳ <a href="https://github.com/NovaCat35">Robert Chen</a> rounded this one out.</p>
<h2>Lots of other fixes and improvements</h2>
<ul>
<li>Code Connect updates for Figma</li>
<li>☑️ Checkbox tiles are now fully clickable</li>
<li>Button height issues resolved (no more overflow or static sizing)</li>
<li>Password toggle button no longer overlaps input text</li>
<li>Browser support information added to Storybook and the Reference site</li>
</ul>
<p>↳ Thanks to <a href="https://github.com/NovaCat35">Robert Chen</a>, <a href="https://github.com/emilygorelik">Emily Gorelik</a>, and <a href="https://github.com/plasticmind">Jesse Gardner</a> for sweating the details.</p>
<hr />
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.3.0" title="https://github.com/its-hcd/nysds/releases/tag/v1.3.0">See the full developer release notes for v1.3.0 →</a></p>
]]></description>
      <content><![CDATA[<h2>Figma libraries streamlined</h2>
<p>Designers, this one’s for you. We merged the Components and Foundations library, which makes them easier to use with branching and will be a better experience when we publish to the community. This also sets the stage for powerful new “modes” (like wireframing)... coming soon.</p>
<p>And good news: <code>&lt;nys-tooltip&gt;</code> has already landed in Figma, and will be available in code soon!</p>
<p><img src="https://github.com/user-attachments/assets/13ee50aa-a531-47d5-bcde-f1e5e26b7caf" alt="Screenshot showing Figma updates" /></p>
<p>↳ Thanks to <a href="https://github.com/ksorrentino">Kristin Sorrentino</a> and <a href="https://github.com/leo-vogel">Leo Vogel</a> for the tireless work in making this happen.</p>
<h2>Back to Top joins the library</h2>
<p>Need a quick way back to the top of a page? <code>&lt;nys-backtotop&gt;</code> is here! Put it at the bottom of your main content container, and it will appear once the user scrolls down. Read more about it on <a href="https://designsystem.ny.gov/components/backtotop">the nys-backtotop component documentation page</a>.</p>
<p><img src="https://github.com/user-attachments/assets/8b6cb2e2-2753-4af2-90f4-432f10821f73" alt="Screenshot of the nys-backtotop component" /></p>
<p>↳ &quot;Top tier&quot; work by <a href="https://github.com/NovaCat35">Robert Chen</a>.</p>
<h2>Circle button variant</h2>
<p><code>&lt;nys-button&gt;</code> now has a circle variant, great for icon-only actions. (Be sure to use the <code>label</code> prop for accessibility!)</p>
<p><img src="https://github.com/user-attachments/assets/b771f6d1-da6d-43c1-94c4-7e2c53077669" alt="Screenshot of the circle button" /></p>
<p>↳ <a href="https://github.com/NovaCat35">Robert Chen</a> rounded this one out.</p>
<h2>Lots of other fixes and improvements</h2>
<ul>
<li>Code Connect updates for Figma</li>
<li>☑️ Checkbox tiles are now fully clickable</li>
<li>Button height issues resolved (no more overflow or static sizing)</li>
<li>Password toggle button no longer overlaps input text</li>
<li>Browser support information added to Storybook and the Reference site</li>
</ul>
<p>↳ Thanks to <a href="https://github.com/NovaCat35">Robert Chen</a>, <a href="https://github.com/emilygorelik">Emily Gorelik</a>, and <a href="https://github.com/plasticmind">Jesse Gardner</a> for sweating the details.</p>
<hr />
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.3.0" title="https://github.com/its-hcd/nysds/releases/tag/v1.3.0">See the full developer release notes for v1.3.0 →</a></p>
]]></content>
      <pubDate>Thu, 26 Jun 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.3.0-release/</guid>
    </item>
    <item>
      <title>Release 1.2.0</title>
      <link>https://designsystem.ny.gov/about/updates/1.2.0-release/</link>
      <description><![CDATA[<h2>Automated testing kicks in</h2>
<p>You won't see it, but this is a big deal. <code>&lt;nys-icon&gt;</code> and <code>&lt;nys-textarea&gt;</code> now have automated tests running in CI. If a test fails, the build fails, which makes it easier for us to catch bugs before publishing releases.</p>
<p>↳ Thanks to <a href="https://github.com/NovaCat35">Robert Chen</a> for putting testing in place.</p>
<h2>Other fixes and improvements</h2>
<ul>
<li>Updated our list of <a href="https://designsystem.ny.gov/foundations/tokens">design tokens</a></li>
<li>Translate button in <code>nys-unavheader</code> works properly now, and the logo link doesn't open in a new tab anymore</li>
<li>Improved documentation for component events in our documentation</li>
<li>Fixed the nys-avatar slot</li>
</ul>
<p>↳ Fixes by <a href="https://github.com/NovaCat35">Robert Chen</a> and <a href="https://github.com/emilygorelik">Emily Gorelik</a>.</p>
<h2>Figma gets some love</h2>
<p>Designers, you’ve got some lovely new tools in your Figma:</p>
<ul>
<li>A circle button prop for <code>nys-button</code> (Figma-only for now)</li>
<li>Subcomponents for <code>nys-label</code> and <code>nys-error</code> to make it easier to build your own custom input types</li>
<li>The <code>nys-unavheader</code> logo alignment is better</li>
</ul>
<p>↳ Thanks to <a href="https://github.com/ksorrentino">Kristin Sorrentino</a> and <a href="https://github.com/leo-vogel">Leo Vogel</a> for sweating the small stuff.</p>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.2.0" title="https://github.com/its-hcd/nysds/releases/tag/v1.2.0">See the full developer release notes for v1.2.0 →</a></p>
]]></description>
      <content><![CDATA[<h2>Automated testing kicks in</h2>
<p>You won't see it, but this is a big deal. <code>&lt;nys-icon&gt;</code> and <code>&lt;nys-textarea&gt;</code> now have automated tests running in CI. If a test fails, the build fails, which makes it easier for us to catch bugs before publishing releases.</p>
<p>↳ Thanks to <a href="https://github.com/NovaCat35">Robert Chen</a> for putting testing in place.</p>
<h2>Other fixes and improvements</h2>
<ul>
<li>Updated our list of <a href="https://designsystem.ny.gov/foundations/tokens">design tokens</a></li>
<li>Translate button in <code>nys-unavheader</code> works properly now, and the logo link doesn't open in a new tab anymore</li>
<li>Improved documentation for component events in our documentation</li>
<li>Fixed the nys-avatar slot</li>
</ul>
<p>↳ Fixes by <a href="https://github.com/NovaCat35">Robert Chen</a> and <a href="https://github.com/emilygorelik">Emily Gorelik</a>.</p>
<h2>Figma gets some love</h2>
<p>Designers, you’ve got some lovely new tools in your Figma:</p>
<ul>
<li>A circle button prop for <code>nys-button</code> (Figma-only for now)</li>
<li>Subcomponents for <code>nys-label</code> and <code>nys-error</code> to make it easier to build your own custom input types</li>
<li>The <code>nys-unavheader</code> logo alignment is better</li>
</ul>
<p>↳ Thanks to <a href="https://github.com/ksorrentino">Kristin Sorrentino</a> and <a href="https://github.com/leo-vogel">Leo Vogel</a> for sweating the small stuff.</p>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.2.0" title="https://github.com/its-hcd/nysds/releases/tag/v1.2.0">See the full developer release notes for v1.2.0 →</a></p>
]]></content>
      <pubDate>Thu, 12 Jun 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.2.0-release/</guid>
    </item>
    <item>
      <title>Release 1.1.9</title>
      <link>https://designsystem.ny.gov/about/updates/1.1.9-release/</link>
      <description><![CDATA[<h2>Testing takes center stage</h2>
<p>Seven components, including <code>&lt;nys-globalheader&gt;</code>, <code>&lt;nys-globalfooter&gt;</code>, <code>&lt;nys-button&gt;</code>, <code>&lt;nys-alert&gt;</code>, and <code>&lt;nys-textinput&gt;</code>, now run automated tests in CI. This means more reliable builds and fewer surprises in production.</p>
<p>↳ Thanks for all the hard work from <a href="https://github.com/NovaCat35">Robert Chen</a> and <a href="https://github.com/esteinborn">Eric Steinborn</a> to make this a reality.</p>
<h2>Smarter forms, stronger inputs</h2>
<p>Forms get a big boost this release:</p>
<p>A <strong>tile variant</strong> for <code>&lt;nys-checkbox&gt;</code> and <code>&lt;nys-radiobutton&gt;</code> makes grouped choices clearer and easier to scan.</p>
<p><img src="https://github.com/user-attachments/assets/8613c58a-7e48-4b36-baef-e06f31d19bbe" alt="Checkbox tile variant demo" /></p>
<p><code>&lt;nys-textinput&gt;</code> has two new variants: an <strong>input with button</strong> (great for search bars) and a <strong>password field</strong> with a show/hide toggle.</p>
<p><img src="https://github.com/user-attachments/assets/ad6e2392-0eec-4400-ae64-dd10bfbdbd2d" alt="Textinput with button demo" /><br />
<img src="https://github.com/user-attachments/assets/15307cc1-382b-483b-a6fb-933ed1156790" alt="Password input demo" /></p>
<p>↳ Thanks to <a href="https://github.com/emilygorelik">Emily Gorelik</a> and <a href="https://github.com/NovaCat35">Robert Chen</a> for building out these updates.</p>
<h2>“Copy that!”</h2>
<p>The <code>&lt;nys-icon&gt;</code> now includes a <strong>copy icon</strong>.</p>
<p><img src="https://github.com/user-attachments/assets/794133c9-e77d-4efa-95d8-b8619f81129f" alt="Copy icon preview" /></p>
<p>↳ Added by <a href="https://github.com/NovaCat35">Robert Chen</a>.</p>
<h2>Cleaner example code</h2>
<p>Example blocks on the reference site have a new format and layout, making it easier to grab and reuse snippets.</p>
<p><img src="https://github.com/user-attachments/assets/5502dc2f-88cf-47b5-96ea-4e9d41fa7b0c" alt="New example code block layout" /></p>
<p>↳ Thanks to <a href="https://github.com/leo-vogel">Leo Vogel</a> for designing and to <a href="https://github.com/emilygorelik">Emily Gorelik</a> and <a href="https://github.com/NovaCat35">Robert Chen</a> for building it.</p>
<h2>Other fixes and improvements</h2>
<ul>
<li>Button clicks are now fully accessible</li>
<li>Keyboard support added for the password toggle</li>
<li>Fixed textinput tabbing error</li>
<li>Skipnav transition no longer jumps out of bounds</li>
</ul>
<p>↳ Fixes by <a href="https://github.com/NovaCat35">Robert Chen</a> and <a href="https://github.com/emilygorelik">Emily Gorelik</a>.</p>
<h3>⚠️ Known Issues</h3>
<ul>
<li><code>&lt;nys-unavheader&gt;</code>: Translate button is missing on mobile (<a href="https://github.com/its-hcd/nysds/issues/571">#571</a>)</li>
</ul>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.1.9" title="https://github.com/its-hcd/nysds/releases/tag/v1.1.9">See the full developer release notes for v1.1.9 →</a></p>
]]></description>
      <content><![CDATA[<h2>Testing takes center stage</h2>
<p>Seven components, including <code>&lt;nys-globalheader&gt;</code>, <code>&lt;nys-globalfooter&gt;</code>, <code>&lt;nys-button&gt;</code>, <code>&lt;nys-alert&gt;</code>, and <code>&lt;nys-textinput&gt;</code>, now run automated tests in CI. This means more reliable builds and fewer surprises in production.</p>
<p>↳ Thanks for all the hard work from <a href="https://github.com/NovaCat35">Robert Chen</a> and <a href="https://github.com/esteinborn">Eric Steinborn</a> to make this a reality.</p>
<h2>Smarter forms, stronger inputs</h2>
<p>Forms get a big boost this release:</p>
<p>A <strong>tile variant</strong> for <code>&lt;nys-checkbox&gt;</code> and <code>&lt;nys-radiobutton&gt;</code> makes grouped choices clearer and easier to scan.</p>
<p><img src="https://github.com/user-attachments/assets/8613c58a-7e48-4b36-baef-e06f31d19bbe" alt="Checkbox tile variant demo" /></p>
<p><code>&lt;nys-textinput&gt;</code> has two new variants: an <strong>input with button</strong> (great for search bars) and a <strong>password field</strong> with a show/hide toggle.</p>
<p><img src="https://github.com/user-attachments/assets/ad6e2392-0eec-4400-ae64-dd10bfbdbd2d" alt="Textinput with button demo" /><br />
<img src="https://github.com/user-attachments/assets/15307cc1-382b-483b-a6fb-933ed1156790" alt="Password input demo" /></p>
<p>↳ Thanks to <a href="https://github.com/emilygorelik">Emily Gorelik</a> and <a href="https://github.com/NovaCat35">Robert Chen</a> for building out these updates.</p>
<h2>“Copy that!”</h2>
<p>The <code>&lt;nys-icon&gt;</code> now includes a <strong>copy icon</strong>.</p>
<p><img src="https://github.com/user-attachments/assets/794133c9-e77d-4efa-95d8-b8619f81129f" alt="Copy icon preview" /></p>
<p>↳ Added by <a href="https://github.com/NovaCat35">Robert Chen</a>.</p>
<h2>Cleaner example code</h2>
<p>Example blocks on the reference site have a new format and layout, making it easier to grab and reuse snippets.</p>
<p><img src="https://github.com/user-attachments/assets/5502dc2f-88cf-47b5-96ea-4e9d41fa7b0c" alt="New example code block layout" /></p>
<p>↳ Thanks to <a href="https://github.com/leo-vogel">Leo Vogel</a> for designing and to <a href="https://github.com/emilygorelik">Emily Gorelik</a> and <a href="https://github.com/NovaCat35">Robert Chen</a> for building it.</p>
<h2>Other fixes and improvements</h2>
<ul>
<li>Button clicks are now fully accessible</li>
<li>Keyboard support added for the password toggle</li>
<li>Fixed textinput tabbing error</li>
<li>Skipnav transition no longer jumps out of bounds</li>
</ul>
<p>↳ Fixes by <a href="https://github.com/NovaCat35">Robert Chen</a> and <a href="https://github.com/emilygorelik">Emily Gorelik</a>.</p>
<h3>⚠️ Known Issues</h3>
<ul>
<li><code>&lt;nys-unavheader&gt;</code>: Translate button is missing on mobile (<a href="https://github.com/its-hcd/nysds/issues/571">#571</a>)</li>
</ul>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.1.9" title="https://github.com/its-hcd/nysds/releases/tag/v1.1.9">See the full developer release notes for v1.1.9 →</a></p>
]]></content>
      <pubDate>Thu, 29 May 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.1.9-release/</guid>
    </item>
    <item>
      <title>Release 1.1.8</title>
      <link>https://designsystem.ny.gov/about/updates/1.1.8-release/</link>
      <description><![CDATA[<h2>Skip straight to the good stuff</h2>
<p>Say hello to <code>&lt;nys-skipnav&gt;</code>, our brand-new skip navigation component. It provides a visible link for keyboard and screen reader users to jump right to the main content. Include it at the very top of pages for to make it easier for people to skip directly to the content.</p>
<p>↳ Big thanks to <a href="https://github.com/NovaCat35">Robert Chen</a> for this accessibility win.</p>
<h2>Add it, remove it</h2>
<p>The <code>&lt;nys-icon&gt;</code> library got two new additions: <code>add</code> and <code>remove</code>.<br />
↳ Added (not removed) by <a href="https://github.com/NovaCat35">Robert Chen</a>.</p>
<h2>Other fixes and improvements</h2>
<ul>
<li><code>&lt;nys-radiobutton&gt;</code> now renders correctly when dynamically created in Angular</li>
<li>Better alignment between icon and text in <code>&lt;nys-alert&gt;</code></li>
<li>Button is now fully keyboard accessible</li>
</ul>
<p>↳ Fixes by <a href="https://github.com/NovaCat35">Robert Chen</a> and <a href="https://github.com/emilygorelik">Emily Gorelik</a>.</p>
<h3>⚠️ Known Issues</h3>
<ul>
<li>Password field’s eye toggle is not yet keyboard focusable (<a href="https://github.com/its-hcd/nysds/issues/519">#519</a>)</li>
</ul>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.1.8" title="https://github.com/its-hcd/nysds/releases/tag/v1.1.8">See the full developer release notes for v1.1.8 →</a></p>
]]></description>
      <content><![CDATA[<h2>Skip straight to the good stuff</h2>
<p>Say hello to <code>&lt;nys-skipnav&gt;</code>, our brand-new skip navigation component. It provides a visible link for keyboard and screen reader users to jump right to the main content. Include it at the very top of pages for to make it easier for people to skip directly to the content.</p>
<p>↳ Big thanks to <a href="https://github.com/NovaCat35">Robert Chen</a> for this accessibility win.</p>
<h2>Add it, remove it</h2>
<p>The <code>&lt;nys-icon&gt;</code> library got two new additions: <code>add</code> and <code>remove</code>.<br />
↳ Added (not removed) by <a href="https://github.com/NovaCat35">Robert Chen</a>.</p>
<h2>Other fixes and improvements</h2>
<ul>
<li><code>&lt;nys-radiobutton&gt;</code> now renders correctly when dynamically created in Angular</li>
<li>Better alignment between icon and text in <code>&lt;nys-alert&gt;</code></li>
<li>Button is now fully keyboard accessible</li>
</ul>
<p>↳ Fixes by <a href="https://github.com/NovaCat35">Robert Chen</a> and <a href="https://github.com/emilygorelik">Emily Gorelik</a>.</p>
<h3>⚠️ Known Issues</h3>
<ul>
<li>Password field’s eye toggle is not yet keyboard focusable (<a href="https://github.com/its-hcd/nysds/issues/519">#519</a>)</li>
</ul>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.1.8" title="https://github.com/its-hcd/nysds/releases/tag/v1.1.8">See the full developer release notes for v1.1.8 →</a></p>
]]></content>
      <pubDate>Thu, 15 May 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.1.8-release/</guid>
    </item>
    <item>
      <title>Release 1.1.7</title>
      <link>https://designsystem.ny.gov/about/updates/1.1.7-release/</link>
      <description><![CDATA[<h2>Smarter buttons</h2>
<p><code>&lt;nys-button&gt;</code> now accepts a <code>target</code> property, giving you control over where links open. (Only works when you set the <code>href</code> property.)
↳ 🎯 A bullseye by <a href="https://github.com/NovaCat35">Robert Chen</a></p>
<h2>Accessibility fixes</h2>
<p>We tightened up accessibility for several core components, including <code>&lt;nys-alert&gt;</code>, <code>&lt;nys-button&gt;</code>, <code>&lt;nys-textinput&gt;</code>, and <code>&lt;nys-select&gt;</code>.  Identifiers are now handled more consistently to improve screen reader support.<br />
↳ Fixes by <a href="https://github.com/NovaCat35">Robert Chen</a>, <a href="https://github.com/emilygorelik">Emily Gorelik</a>, and <a href="https://github.com/esteinborn">Eric Steinborn</a>.</p>
<h3>⚠️ Known Issues</h3>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a>.</p>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.1.7" title="https://github.com/its-hcd/nysds/releases/tag/v1.1.7">See the full developer release notes for v1.1.7 →</a></p>
]]></description>
      <content><![CDATA[<h2>Smarter buttons</h2>
<p><code>&lt;nys-button&gt;</code> now accepts a <code>target</code> property, giving you control over where links open. (Only works when you set the <code>href</code> property.)
↳ 🎯 A bullseye by <a href="https://github.com/NovaCat35">Robert Chen</a></p>
<h2>Accessibility fixes</h2>
<p>We tightened up accessibility for several core components, including <code>&lt;nys-alert&gt;</code>, <code>&lt;nys-button&gt;</code>, <code>&lt;nys-textinput&gt;</code>, and <code>&lt;nys-select&gt;</code>.  Identifiers are now handled more consistently to improve screen reader support.<br />
↳ Fixes by <a href="https://github.com/NovaCat35">Robert Chen</a>, <a href="https://github.com/emilygorelik">Emily Gorelik</a>, and <a href="https://github.com/esteinborn">Eric Steinborn</a>.</p>
<h3>⚠️ Known Issues</h3>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a>.</p>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.1.7" title="https://github.com/its-hcd/nysds/releases/tag/v1.1.7">See the full developer release notes for v1.1.7 →</a></p>
]]></content>
      <pubDate>Wed, 30 Apr 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.1.7-release/</guid>
    </item>
    <item>
      <title>Scaling Human-Centered Design with Design Systems</title>
      <link>https://designsystem.ny.gov/about/updates/scaling-human-centered-design/</link>
      <description><![CDATA[<iframe width="560" height="315" src="https://www.youtube.com/embed/TBfFzt0150Q?si=PV7FIjQaEwC63ZF9" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>
]]></description>
      <content><![CDATA[<iframe width="560" height="315" src="https://www.youtube.com/embed/TBfFzt0150Q?si=PV7FIjQaEwC63ZF9" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>
]]></content>
      <pubDate>Thu, 17 Apr 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/scaling-human-centered-design/</guid>
    </item>
    <item>
      <title>Release 1.1.6</title>
      <link>https://designsystem.ny.gov/about/updates/1.1.6-release/</link>
      <description><![CDATA[<h2>Components load more gracefully</h2>
<p>Undefined components no longer flash unstyled layouts before JavaScript kicks in — they now wait until they’re fully defined before displaying.<br />
↳ Fix by <a href="https://github.com/emilygorelik">Emily Gorelik</a>.</p>
<h2>Buttons get their voice back</h2>
<p><code>nys-button</code> now properly define an accessible name for screen readers, ensuring smoother navigation and better accessibility.<br />
↳ Thanks to <a href="https://github.com/NovaCat35">Robert Chen</a>.</p>
<h2>NPM install issues resolved</h2>
<p>A packaging bug introduced in 1.1.5 caused installs to fail. That’s now fixed — installs should work smoothly on v1.1.6.<br />
↳ Patch by <a href="https://github.com/esteinborn">Eric Steinborn</a>.</p>
<h3>⚠️ Known Issues</h3>
<ul>
<li>If you notice any problems, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a> or post in the internal NYSDS Troubleshooting Channel.</li>
</ul>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.1.6" title="https://github.com/its-hcd/nysds/releases/tag/v1.1.6">See the full developer release notes for v1.1.6 →</a></p>
]]></description>
      <content><![CDATA[<h2>Components load more gracefully</h2>
<p>Undefined components no longer flash unstyled layouts before JavaScript kicks in — they now wait until they’re fully defined before displaying.<br />
↳ Fix by <a href="https://github.com/emilygorelik">Emily Gorelik</a>.</p>
<h2>Buttons get their voice back</h2>
<p><code>nys-button</code> now properly define an accessible name for screen readers, ensuring smoother navigation and better accessibility.<br />
↳ Thanks to <a href="https://github.com/NovaCat35">Robert Chen</a>.</p>
<h2>NPM install issues resolved</h2>
<p>A packaging bug introduced in 1.1.5 caused installs to fail. That’s now fixed — installs should work smoothly on v1.1.6.<br />
↳ Patch by <a href="https://github.com/esteinborn">Eric Steinborn</a>.</p>
<h3>⚠️ Known Issues</h3>
<ul>
<li>If you notice any problems, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a> or post in the internal NYSDS Troubleshooting Channel.</li>
</ul>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.1.6" title="https://github.com/its-hcd/nysds/releases/tag/v1.1.6">See the full developer release notes for v1.1.6 →</a></p>
]]></content>
      <pubDate>Thu, 17 Apr 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.1.6-release/</guid>
    </item>
    <item>
      <title>Release 1.1.5</title>
      <link>https://designsystem.ny.gov/about/updates/1.1.5-release/</link>
      <description><![CDATA[<h2>Figma Code Connect everywhere</h2>
<p>All components now have Figma Code Connect wired up, making it easier for designers and engineers to stay in sync, and setting the stage for future design-to-code automation.<br />
↳ Big thanks to <a href="https://github.com/plasticmind">Jesse Gardner</a>.</p>
<h2>A leaner npm package</h2>
<p>We cut the npm package size nearly in half: faster installs, lighter downloads, and a more performant user experience. Download it today: <a href="https://www.npmjs.com/org/nysds">NYS Design System on NPM</a><br />
↳ Also brought to you by <a href="https://github.com/plasticmind">Jesse Gardner</a>.</p>
<h3>⚠️ Known Issues</h3>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a>.</p>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.1.5" title="https://github.com/its-hcd/nysds/releases/tag/v1.1.5">See the full developer release notes for v1.1.5 →</a></p>
]]></description>
      <content><![CDATA[<h2>Figma Code Connect everywhere</h2>
<p>All components now have Figma Code Connect wired up, making it easier for designers and engineers to stay in sync, and setting the stage for future design-to-code automation.<br />
↳ Big thanks to <a href="https://github.com/plasticmind">Jesse Gardner</a>.</p>
<h2>A leaner npm package</h2>
<p>We cut the npm package size nearly in half: faster installs, lighter downloads, and a more performant user experience. Download it today: <a href="https://www.npmjs.com/org/nysds">NYS Design System on NPM</a><br />
↳ Also brought to you by <a href="https://github.com/plasticmind">Jesse Gardner</a>.</p>
<h3>⚠️ Known Issues</h3>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a>.</p>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.1.5" title="https://github.com/its-hcd/nysds/releases/tag/v1.1.5">See the full developer release notes for v1.1.5 →</a></p>
]]></content>
      <pubDate>Fri, 04 Apr 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.1.5-release/</guid>
    </item>
    <item>
      <title>Release 1.1.1</title>
      <link>https://designsystem.ny.gov/about/updates/1.1.1-release/</link>
      <description><![CDATA[<h2>Fresh tokens, fresh vibes</h2>
<p>Figma variables and design tokens in code have been brought up to date, making things more consistent across design and engineering.</p>
<p>↳ Thanks to <a href="https://github.com/novacat35">Robert Chen</a> and <a href="https://github.com/leo-vogel">Leo Vogel</a> for leading the charge.</p>
<h2>Bug fixes galore</h2>
<p>We squashed a whole batch of issues across multiple components — no breaking changes, just smoother sailing all around.</p>
<p>↳ Fixes delivered by <a href="https://github.com/novacat35">Robert Chen</a>, <a href="https://github.com/emilygorelik">Emily Gorelik</a>, <a href="https://github.com/esteinborn">Eric Steinborn</a>, <a href="https://github.com/plasticmind">Jesse Gardner</a>, and <a href="https://github.com/leo-vogel">Leo Vogel</a>.</p>
<h2>Figma-only updates (engineers, you’re off the hook)</h2>
<ul>
<li>Fixes to UNav Header</li>
<li>New variables for text, surface, and links</li>
<li>Component style tweaks to better align with brand standards</li>
<li>Updated “Getting Started Guide” on <a href="https://www.figma.com/design/0ogYpymUPQQfhELthntNbt/%F0%9F%92%A0-NYSDS-%2F-Components?node-id=7140-22199&amp;p=f&amp;t=60nqXSJ6HSDsdR1k-0">Figma Variables →</a></li>
<li>See it all in the <a href="https://www.figma.com/design/0ogYpymUPQQfhELthntNbt/%F0%9F%92%A0-NYSDS-%2F-Components?node-id=20-40&amp;t=wCig8fhbifh6ryK0-1">NYS Design System Components Figma Library →</a></li>
</ul>
<h3>⚠️ Known Issues</h3>
<ul>
<li>The NYSDS package size is still on the large side — we’re working on trimming it down in the next release.</li>
<li>If you notice anything else, drop it in <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a>.</li>
</ul>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.1.1" title="https://github.com/its-hcd/nysds/releases/tag/v1.1.1">See the full developer release notes for v1.1.1 →</a></p>
]]></description>
      <content><![CDATA[<h2>Fresh tokens, fresh vibes</h2>
<p>Figma variables and design tokens in code have been brought up to date, making things more consistent across design and engineering.</p>
<p>↳ Thanks to <a href="https://github.com/novacat35">Robert Chen</a> and <a href="https://github.com/leo-vogel">Leo Vogel</a> for leading the charge.</p>
<h2>Bug fixes galore</h2>
<p>We squashed a whole batch of issues across multiple components — no breaking changes, just smoother sailing all around.</p>
<p>↳ Fixes delivered by <a href="https://github.com/novacat35">Robert Chen</a>, <a href="https://github.com/emilygorelik">Emily Gorelik</a>, <a href="https://github.com/esteinborn">Eric Steinborn</a>, <a href="https://github.com/plasticmind">Jesse Gardner</a>, and <a href="https://github.com/leo-vogel">Leo Vogel</a>.</p>
<h2>Figma-only updates (engineers, you’re off the hook)</h2>
<ul>
<li>Fixes to UNav Header</li>
<li>New variables for text, surface, and links</li>
<li>Component style tweaks to better align with brand standards</li>
<li>Updated “Getting Started Guide” on <a href="https://www.figma.com/design/0ogYpymUPQQfhELthntNbt/%F0%9F%92%A0-NYSDS-%2F-Components?node-id=7140-22199&amp;p=f&amp;t=60nqXSJ6HSDsdR1k-0">Figma Variables →</a></li>
<li>See it all in the <a href="https://www.figma.com/design/0ogYpymUPQQfhELthntNbt/%F0%9F%92%A0-NYSDS-%2F-Components?node-id=20-40&amp;t=wCig8fhbifh6ryK0-1">NYS Design System Components Figma Library →</a></li>
</ul>
<h3>⚠️ Known Issues</h3>
<ul>
<li>The NYSDS package size is still on the large side — we’re working on trimming it down in the next release.</li>
<li>If you notice anything else, drop it in <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a>.</li>
</ul>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.1.1" title="https://github.com/its-hcd/nysds/releases/tag/v1.1.1">See the full developer release notes for v1.1.1 →</a></p>
]]></content>
      <pubDate>Mon, 24 Mar 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.1.1-release/</guid>
    </item>
    <item>
      <title>Release 1.1.0</title>
      <link>https://designsystem.ny.gov/about/updates/1.1.0-release/</link>
      <description><![CDATA[<h2>First-class form elements</h2>
<p>Custom NYS Design System form elements now participate in standard HTML forms just like standard HTML elements, thanks to <code>elementInternals</code>. This means form-based web components behave the way native form elements should, with values, validation, and accessibility. More information about the <code>elementInternals</code> interface can be found on <a href="https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals">MDN Web Docs →</a><br />
↳ Big collaborative effort between <a href="https://github.com/novacat35">Robert Chen</a> and <a href="https://github.com/plasticmind">Jesse Gardner</a></p>
<h2>Code Connect = less drift</h2>
<p>Parity is here between Figma and code! With Code Connect, designers and developers can finally use the same source of truth, whether in design or development.<br />
↳ Connected by <a href="https://github.com/plasticmind">Jesse Gardner</a></p>
<h2>Other fixes and improvements</h2>
<ul>
<li>Global header and footer fixes</li>
<li>UNav header and footer fixes</li>
<li>New label and error message private components</li>
<li>Type declaration fixes</li>
</ul>
<p>↳ Thanks to the tireless work by <a href="https://github.com/novacat35">Robert Chen</a>, <a href="https://github.com/emilygorelik">Emily Gorelik</a>, and <a href="https://github.com/esteinborn">Eric Steinborn</a></p>
<h2>Figma-only updates (engineers, you’re off the hook)</h2>
<ul>
<li>We updated components to better align with NYS brand standards</li>
<li>See them all in the <a href="https://www.figma.com/design/U2QpuSUXRTxbgG64Fzi9bu/%F0%9F%92%A0-NYS-Design-System?m=auto&amp;node-id=51-1514&amp;t=yyjzhjNruCYHdAEB-1">NYS Design System Figma Library →</a> <em>(NYS Figma account required)</em></li>
</ul>
<h3>⚠️ Known Issues</h3>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.1.0" title="https://github.com/its-hcd/nysds/releases/tag/v1.1.0">See the full developer release notes for v1.1.0 →</a></p>
]]></description>
      <content><![CDATA[<h2>First-class form elements</h2>
<p>Custom NYS Design System form elements now participate in standard HTML forms just like standard HTML elements, thanks to <code>elementInternals</code>. This means form-based web components behave the way native form elements should, with values, validation, and accessibility. More information about the <code>elementInternals</code> interface can be found on <a href="https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals">MDN Web Docs →</a><br />
↳ Big collaborative effort between <a href="https://github.com/novacat35">Robert Chen</a> and <a href="https://github.com/plasticmind">Jesse Gardner</a></p>
<h2>Code Connect = less drift</h2>
<p>Parity is here between Figma and code! With Code Connect, designers and developers can finally use the same source of truth, whether in design or development.<br />
↳ Connected by <a href="https://github.com/plasticmind">Jesse Gardner</a></p>
<h2>Other fixes and improvements</h2>
<ul>
<li>Global header and footer fixes</li>
<li>UNav header and footer fixes</li>
<li>New label and error message private components</li>
<li>Type declaration fixes</li>
</ul>
<p>↳ Thanks to the tireless work by <a href="https://github.com/novacat35">Robert Chen</a>, <a href="https://github.com/emilygorelik">Emily Gorelik</a>, and <a href="https://github.com/esteinborn">Eric Steinborn</a></p>
<h2>Figma-only updates (engineers, you’re off the hook)</h2>
<ul>
<li>We updated components to better align with NYS brand standards</li>
<li>See them all in the <a href="https://www.figma.com/design/U2QpuSUXRTxbgG64Fzi9bu/%F0%9F%92%A0-NYS-Design-System?m=auto&amp;node-id=51-1514&amp;t=yyjzhjNruCYHdAEB-1">NYS Design System Figma Library →</a> <em>(NYS Figma account required)</em></li>
</ul>
<h3>⚠️ Known Issues</h3>
<p>If you notice any issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></p>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.1.0" title="https://github.com/its-hcd/nysds/releases/tag/v1.1.0">See the full developer release notes for v1.1.0 →</a></p>
]]></content>
      <pubDate>Wed, 26 Feb 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.1.0-release/</guid>
    </item>
    <item>
      <title>Release 1.0.0</title>
      <link>https://designsystem.ny.gov/about/updates/1.0.0-release/</link>
      <description><![CDATA[<h2>🎉 Our first major design system release!</h2>
<p>It’s official: the New York State Design System has hit <strong>1.0.0</strong>! This marks our first stable release of the component library and design libraries. You can now explore and install our published packages here: <a href="https://www.npmjs.com/org/nysds">NYS Design System on NPM</a>.</p>
<p>We set out to ship 15 web components for v1.0.0 — and delivered 17. ✨</p>
<p>A huge thank you to the entire Design System team — Eric, Doug, Emily, Leo, Kristin, and Robert — for an incredible three months of work getting us here.</p>
<h2>💠 New Components</h2>
<h3>Meet UnavHeader and UnavFooter</h3>
<p>The <code>nys-unavheader</code> and <code>nys-unavfooter</code> have arrived as web components. Perfect for app teams that hit JS conflicts with the official embed script.<br />
↳ Created by <a href="https://github.com/novacat35">Robert Chen</a> and <a href="https://github.com/emilygorelik">Emily Gorelik</a></p>
<ul>
<li><a href="https://www.figma.com/design/0ogYpymUPQQfhELthntNbt/%F0%9F%92%A0-NYSDS-%2F-Components?node-id=1616-6759&amp;t=wCig8fhbifh6ryK0-1">Figma: <code>nys-unavheader</code></a></li>
<li><a href="https://www.figma.com/design/0ogYpymUPQQfhELthntNbt/%F0%9F%92%A0-NYSDS-%2F-Components?node-id=3568-16435&amp;t=wCig8fhbifh6ryK0-1">Figma: <code>nys-unavfooter</code></a></li>
</ul>
<h3>Who's Got The Button</h3>
<p>A fully branded <code>nys-button</code>, now available as a component.<br />
↳ Created by <a href="https://github.com/emilygorelik">Emily Gorelik</a></p>
<ul>
<li><a href="https://www.figma.com/design/0ogYpymUPQQfhELthntNbt/%F0%9F%92%A0-NYSDS-%2F-Components?node-id=1613-6370&amp;t=wCig8fhbifh6ryK0-1">Figma: <code>nys-button</code></a></li>
</ul>
<h3>Fixes and Improvements</h3>
<ul>
<li>Form fields now properly bubble up their values in Angular and React applications</li>
<li>Many smaller updates across components</li>
</ul>
<h3>⚠️ Known Issues</h3>
<ul>
<li>Custom form components don’t yet submit values through native <code>&lt;form&gt;</code> tags (fix coming next release)</li>
<li>Some header elements have max-width alignment issues with grid utilities</li>
<li>If you notice any other issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></li>
</ul>
<h3>Figma-only updates</h3>
<ul>
<li>Published the full suite of <strong>1.0.0 components</strong> in Figma</li>
<li>Added a <a href="https://www.figma.com/design/0ogYpymUPQQfhELthntNbt/%F0%9F%92%A0-NYSDS-%2F-Components?node-id=7598-2784&amp;t=wCig8fhbifh6ryK0-1">“Getting Started” guide</a> to help teams learn the system and prototype faster</li>
</ul>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.0.0" title="https://github.com/its-hcd/nysds/releases/tag/v1.0.0">See the full developer release notes for v1.0.0 →</a></p>
]]></description>
      <content><![CDATA[<h2>🎉 Our first major design system release!</h2>
<p>It’s official: the New York State Design System has hit <strong>1.0.0</strong>! This marks our first stable release of the component library and design libraries. You can now explore and install our published packages here: <a href="https://www.npmjs.com/org/nysds">NYS Design System on NPM</a>.</p>
<p>We set out to ship 15 web components for v1.0.0 — and delivered 17. ✨</p>
<p>A huge thank you to the entire Design System team — Eric, Doug, Emily, Leo, Kristin, and Robert — for an incredible three months of work getting us here.</p>
<h2>💠 New Components</h2>
<h3>Meet UnavHeader and UnavFooter</h3>
<p>The <code>nys-unavheader</code> and <code>nys-unavfooter</code> have arrived as web components. Perfect for app teams that hit JS conflicts with the official embed script.<br />
↳ Created by <a href="https://github.com/novacat35">Robert Chen</a> and <a href="https://github.com/emilygorelik">Emily Gorelik</a></p>
<ul>
<li><a href="https://www.figma.com/design/0ogYpymUPQQfhELthntNbt/%F0%9F%92%A0-NYSDS-%2F-Components?node-id=1616-6759&amp;t=wCig8fhbifh6ryK0-1">Figma: <code>nys-unavheader</code></a></li>
<li><a href="https://www.figma.com/design/0ogYpymUPQQfhELthntNbt/%F0%9F%92%A0-NYSDS-%2F-Components?node-id=3568-16435&amp;t=wCig8fhbifh6ryK0-1">Figma: <code>nys-unavfooter</code></a></li>
</ul>
<h3>Who's Got The Button</h3>
<p>A fully branded <code>nys-button</code>, now available as a component.<br />
↳ Created by <a href="https://github.com/emilygorelik">Emily Gorelik</a></p>
<ul>
<li><a href="https://www.figma.com/design/0ogYpymUPQQfhELthntNbt/%F0%9F%92%A0-NYSDS-%2F-Components?node-id=1613-6370&amp;t=wCig8fhbifh6ryK0-1">Figma: <code>nys-button</code></a></li>
</ul>
<h3>Fixes and Improvements</h3>
<ul>
<li>Form fields now properly bubble up their values in Angular and React applications</li>
<li>Many smaller updates across components</li>
</ul>
<h3>⚠️ Known Issues</h3>
<ul>
<li>Custom form components don’t yet submit values through native <code>&lt;form&gt;</code> tags (fix coming next release)</li>
<li>Some header elements have max-width alignment issues with grid utilities</li>
<li>If you notice any other issues, please add them to <a href="https://github.com/ITS-HCD/nysds/issues">our GitHub Issue Tracker</a></li>
</ul>
<h3>Figma-only updates</h3>
<ul>
<li>Published the full suite of <strong>1.0.0 components</strong> in Figma</li>
<li>Added a <a href="https://www.figma.com/design/0ogYpymUPQQfhELthntNbt/%F0%9F%92%A0-NYSDS-%2F-Components?node-id=7598-2784&amp;t=wCig8fhbifh6ryK0-1">“Getting Started” guide</a> to help teams learn the system and prototype faster</li>
</ul>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v1.0.0" title="https://github.com/its-hcd/nysds/releases/tag/v1.0.0">See the full developer release notes for v1.0.0 →</a></p>
]]></content>
      <pubDate>Fri, 07 Feb 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/1.0.0-release/</guid>
    </item>
    <item>
      <title>Release 0.0.9-alpha</title>
      <link>https://designsystem.ny.gov/about/updates/0.0.9-alpha-release/</link>
      <description><![CDATA[<p>This release introduces the new Global Header and Footer components, improves form elements, and updates core dependencies.<br />
↳ Thanks to Robert Chen (<a href="https://github.com/NovaCat35">@NovaCat35</a>), Emily Gorelik (<a href="https://github.com/emilygorelik">@emilygorelik</a>), Jesse Gardner (<a href="https://github.com/plasticmind">@plasticmind</a>), and Eric Steinborn (<a href="https://github.com/esteinborn">@esteinborn</a>) for the collaborative effort.</p>
<h2>New Components: Global Header + Global Footer</h2>
<p>The biggest addition this release:</p>
<ul>
<li><strong>Global Header (<code>nys-globalheader</code>)</strong> standardizes top navigation across apps and sites.</li>
<li><strong>Global Footer (<code>nys-globalfooter</code>)</strong> ensures consistency at the bottom of every page.</li>
<li>Both respect agency-specific themes for seamless branding.<br />
↳ Created by <a href="https://github.com/NovaCat35">Robert Chen</a> and <a href="https://github.com/emilygorelik">Emily Gorelik</a></li>
</ul>
<h2>Maintenance and Fixes</h2>
<ul>
<li><strong>Forms behave better:</strong> <code>nys-select</code>, <code>nys-textinput</code>, and <code>nys-textarea</code> now properly bubble change/input events. <code>nys-textarea</code> also adds <code>select</code> and <code>selectionchange</code> events.</li>
<li><strong>Dependencies updated:</strong> Vite patched for vulnerabilities, Storybook upgraded to 8.5.2.</li>
</ul>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v0.0.9-alpha">See the full developer release notes for v0.0.9 →</a></p>
]]></description>
      <content><![CDATA[<p>This release introduces the new Global Header and Footer components, improves form elements, and updates core dependencies.<br />
↳ Thanks to Robert Chen (<a href="https://github.com/NovaCat35">@NovaCat35</a>), Emily Gorelik (<a href="https://github.com/emilygorelik">@emilygorelik</a>), Jesse Gardner (<a href="https://github.com/plasticmind">@plasticmind</a>), and Eric Steinborn (<a href="https://github.com/esteinborn">@esteinborn</a>) for the collaborative effort.</p>
<h2>New Components: Global Header + Global Footer</h2>
<p>The biggest addition this release:</p>
<ul>
<li><strong>Global Header (<code>nys-globalheader</code>)</strong> standardizes top navigation across apps and sites.</li>
<li><strong>Global Footer (<code>nys-globalfooter</code>)</strong> ensures consistency at the bottom of every page.</li>
<li>Both respect agency-specific themes for seamless branding.<br />
↳ Created by <a href="https://github.com/NovaCat35">Robert Chen</a> and <a href="https://github.com/emilygorelik">Emily Gorelik</a></li>
</ul>
<h2>Maintenance and Fixes</h2>
<ul>
<li><strong>Forms behave better:</strong> <code>nys-select</code>, <code>nys-textinput</code>, and <code>nys-textarea</code> now properly bubble change/input events. <code>nys-textarea</code> also adds <code>select</code> and <code>selectionchange</code> events.</li>
<li><strong>Dependencies updated:</strong> Vite patched for vulnerabilities, Storybook upgraded to 8.5.2.</li>
</ul>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v0.0.9-alpha">See the full developer release notes for v0.0.9 →</a></p>
]]></content>
      <pubDate>Wed, 29 Jan 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/0.0.9-alpha-release/</guid>
    </item>
    <item>
      <title>Release 0.0.8-alpha</title>
      <link>https://designsystem.ny.gov/about/updates/0.0.8-alpha-release/</link>
      <description><![CDATA[<h2>Styles now have their own home</h2>
<p>Big news: <a href="https://www.npmjs.com/package/@nysds/styles"><code>@nysds/styles</code></a> has officially joined the family. It brings:</p>
<ul>
<li>A centralized CSS file for core design tokens</li>
<li>Agency-specific themes (like Health and Environment)</li>
<li><a href="https://designsystem.ny.gov/foundations/utilities">Utility classes</a> for layout grid, flexbox, display, margin/padding, typography, and more</li>
<li>Full integration with code components, so tokens flow straight into the Shadow DOM</li>
</ul>
<p>This was a huge step in making NYS digital products look and feel consistent everywhere.<br />
↳ Brought to you by Jesse Gardner (<a href="https://github.com/plasticmind">@plasticmind</a>) and Eric Steinborn (<a href="https://github.com/esteinborn">@esteinborn</a>)</p>
<h2>Documentation revamp</h2>
<p>The team gave component docs a full refresh. Clearer, easier, faster to navigate, so you can spend less time hunting and more time building.<br />
↳ Updated by Emily Gorelik (<a href="https://github.com/emilygorelik">@emilygorelik</a>) and Robert Chen (<a href="https://github.com/novacat35">@novacat35</a>)</p>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v0.0.8-alpha" title="https://github.com/its-hcd/nysds/releases/tag/v0.0.8-alpha">See the full developer release notes for v0.0.8-alpha →</a></p>
]]></description>
      <content><![CDATA[<h2>Styles now have their own home</h2>
<p>Big news: <a href="https://www.npmjs.com/package/@nysds/styles"><code>@nysds/styles</code></a> has officially joined the family. It brings:</p>
<ul>
<li>A centralized CSS file for core design tokens</li>
<li>Agency-specific themes (like Health and Environment)</li>
<li><a href="https://designsystem.ny.gov/foundations/utilities">Utility classes</a> for layout grid, flexbox, display, margin/padding, typography, and more</li>
<li>Full integration with code components, so tokens flow straight into the Shadow DOM</li>
</ul>
<p>This was a huge step in making NYS digital products look and feel consistent everywhere.<br />
↳ Brought to you by Jesse Gardner (<a href="https://github.com/plasticmind">@plasticmind</a>) and Eric Steinborn (<a href="https://github.com/esteinborn">@esteinborn</a>)</p>
<h2>Documentation revamp</h2>
<p>The team gave component docs a full refresh. Clearer, easier, faster to navigate, so you can spend less time hunting and more time building.<br />
↳ Updated by Emily Gorelik (<a href="https://github.com/emilygorelik">@emilygorelik</a>) and Robert Chen (<a href="https://github.com/novacat35">@novacat35</a>)</p>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v0.0.8-alpha" title="https://github.com/its-hcd/nysds/releases/tag/v0.0.8-alpha">See the full developer release notes for v0.0.8-alpha →</a></p>
]]></content>
      <pubDate>Wed, 22 Jan 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/0.0.8-alpha-release/</guid>
    </item>
    <item>
      <title>Release 0.0.7-alpha</title>
      <link>https://designsystem.ny.gov/about/updates/0.0.7-alpha-release/</link>
      <description><![CDATA[<p>We’re excited to announce that the New York State Design System is now available for use! You can explore and install our published packages here: <a href="https://www.npmjs.com/org/nysds">NYS Design System on NPM</a>. This release includes one new component <code>nys-avatar</code> and our new <code>nys-styles</code> package to style the components and make design tokens available for use.</p>
<h2>What’s New</h2>
<h3>New Component: nys-avatar</h3>
<p>This is a UI element for displaying a user icon or image.</p>
<p>Features:</p>
<ul>
<li>Personalize avatars with custom icons, initials, or images</li>
<li>Display an image in the avatar, set the image and label attributes</li>
<li>Supports a custom icon from the <code>&lt;nys-icon&gt;</code> library<br />
↳Created by Robert Chen (<a href="https://github.com/NovaCat35">@NovaCat35</a>)</li>
</ul>
<h3>New Style Package: @nysds/styles</h3>
<ul>
<li>A centralized CSS file for core design tokens (nysds.min.css)</li>
<li>Agency-specific theme stylesheets (e.g., theme-health.min.css, theme-environment.min.css) that can override the components and UI elements using themed variables</li>
<li>Utility classes the cover common styling needs for grid layout, display styles, flexbox, floats, opacity, and z-index</li>
<li>Integration support for the design system’s code components, which will reference these variables in their Shadow DOM This CSS framework will help us get consistent theming and styling across all New York State digital products.</li>
</ul>
<h2>Features</h2>
<p><strong>Global Stylesheet:</strong> The nysds.min.css file includes foundational design tokens, like spacing, typography, and default theme colors. To use, reference this on pages where you'll be using the variables or the design system components:</p>
<pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>link</span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>stylesheet<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>[path-to-dir]/nysds.min.css<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span></code></pre>
<p><strong>Agency-Specific Themes:</strong> Additional theme stylesheets are published that provide agency-specific color tokens:</p>
<ul>
<li>Administration: theme-admin.min.css</li>
<li>Business: theme-business.min.css</li>
<li>Recreation and Environment: theme-environment.min.css</li>
<li>Health and Human Services: theme-health.min.css</li>
<li>Local and Regional Authorities: theme-local.min.css</li>
<li>Public Safety: theme-safety.min.css</li>
<li>Transportation and Utilities: theme-transportation.min.css</li>
</ul>
<p>To override the default theme:</p>
<pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>link</span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>stylesheet<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>[path-to-dir]/nysds.min.css<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>link</span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>stylesheet<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>[path-to-dir]/theme-health.min.css<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span></code></pre>
<p><strong>Utility classes:</strong> The NYS Design System includes a set of utility classes for common styling needs, including grid layout, display styles, flexbox, floats, opacity, and z-index. These classes are designed to be used directly in your HTML to quickly apply common styles without writing custom CSS.</p>
<p>To include the full utility classes, simply include the utility CSS file:</p>
<pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>link</span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>stylesheet<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>[path-to-dir]/nysds-full.min.css<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span></code></pre>
<p><strong>Shadow DOM Integration:</strong> The design system’s web components dynamically reference these tokens using CSS variables within their Shadow DOM. For example:</p>
<pre class="language-css"><code class="language-css"><span class="token selector">:host</span> <span class="token punctuation">{</span>
  <span class="token property">--_nys-button-background-color</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--nys-button-background-color<span class="token punctuation">,</span> <span class="token function">var</span><span class="token punctuation">(</span>--nys-color-theme<span class="token punctuation">,</span> #0044cc<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token selector">button</span> <span class="token punctuation">{</span>
  <span class="token property">background-color</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--_nys-button-background-color<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span></code></pre>
<p><strong>Theme Variables:</strong> Each theme includes a predefined set of CSS variables (e.g., --nys-color-theme-faint, --nys-color-theme-stronger) tailored to the agency-specific color palette. These variables are used by components and design elements in the library to give residents a cohesive and branded user experience. Including an agency-specific theme stylesheet will override the default colors, and change these color of the components and elements to reflect the theme for a given agency group. This makes it easy to adapt the design system to align with each agency's branding requirements.<br />
↳<em>Created by Jesse Gardner (<a href="https://github.com/plasticmind">@plasticmind</a>) in #136</em></p>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v0.0.7-alpha" title="https://github.com/its-hcd/nysds/releases/tag/v0.0.7-alpha">See the full developer release notes for v0.0.7-alpha →</a></p>
]]></description>
      <content><![CDATA[<p>We’re excited to announce that the New York State Design System is now available for use! You can explore and install our published packages here: <a href="https://www.npmjs.com/org/nysds">NYS Design System on NPM</a>. This release includes one new component <code>nys-avatar</code> and our new <code>nys-styles</code> package to style the components and make design tokens available for use.</p>
<h2>What’s New</h2>
<h3>New Component: nys-avatar</h3>
<p>This is a UI element for displaying a user icon or image.</p>
<p>Features:</p>
<ul>
<li>Personalize avatars with custom icons, initials, or images</li>
<li>Display an image in the avatar, set the image and label attributes</li>
<li>Supports a custom icon from the <code>&lt;nys-icon&gt;</code> library<br />
↳Created by Robert Chen (<a href="https://github.com/NovaCat35">@NovaCat35</a>)</li>
</ul>
<h3>New Style Package: @nysds/styles</h3>
<ul>
<li>A centralized CSS file for core design tokens (nysds.min.css)</li>
<li>Agency-specific theme stylesheets (e.g., theme-health.min.css, theme-environment.min.css) that can override the components and UI elements using themed variables</li>
<li>Utility classes the cover common styling needs for grid layout, display styles, flexbox, floats, opacity, and z-index</li>
<li>Integration support for the design system’s code components, which will reference these variables in their Shadow DOM This CSS framework will help us get consistent theming and styling across all New York State digital products.</li>
</ul>
<h2>Features</h2>
<p><strong>Global Stylesheet:</strong> The nysds.min.css file includes foundational design tokens, like spacing, typography, and default theme colors. To use, reference this on pages where you'll be using the variables or the design system components:</p>
<pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>link</span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>stylesheet<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>[path-to-dir]/nysds.min.css<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span></code></pre>
<p><strong>Agency-Specific Themes:</strong> Additional theme stylesheets are published that provide agency-specific color tokens:</p>
<ul>
<li>Administration: theme-admin.min.css</li>
<li>Business: theme-business.min.css</li>
<li>Recreation and Environment: theme-environment.min.css</li>
<li>Health and Human Services: theme-health.min.css</li>
<li>Local and Regional Authorities: theme-local.min.css</li>
<li>Public Safety: theme-safety.min.css</li>
<li>Transportation and Utilities: theme-transportation.min.css</li>
</ul>
<p>To override the default theme:</p>
<pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>link</span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>stylesheet<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>[path-to-dir]/nysds.min.css<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>link</span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>stylesheet<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>[path-to-dir]/theme-health.min.css<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span></code></pre>
<p><strong>Utility classes:</strong> The NYS Design System includes a set of utility classes for common styling needs, including grid layout, display styles, flexbox, floats, opacity, and z-index. These classes are designed to be used directly in your HTML to quickly apply common styles without writing custom CSS.</p>
<p>To include the full utility classes, simply include the utility CSS file:</p>
<pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>link</span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>stylesheet<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>[path-to-dir]/nysds-full.min.css<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span></code></pre>
<p><strong>Shadow DOM Integration:</strong> The design system’s web components dynamically reference these tokens using CSS variables within their Shadow DOM. For example:</p>
<pre class="language-css"><code class="language-css"><span class="token selector">:host</span> <span class="token punctuation">{</span>
  <span class="token property">--_nys-button-background-color</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--nys-button-background-color<span class="token punctuation">,</span> <span class="token function">var</span><span class="token punctuation">(</span>--nys-color-theme<span class="token punctuation">,</span> #0044cc<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token selector">button</span> <span class="token punctuation">{</span>
  <span class="token property">background-color</span><span class="token punctuation">:</span> <span class="token function">var</span><span class="token punctuation">(</span>--_nys-button-background-color<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span></code></pre>
<p><strong>Theme Variables:</strong> Each theme includes a predefined set of CSS variables (e.g., --nys-color-theme-faint, --nys-color-theme-stronger) tailored to the agency-specific color palette. These variables are used by components and design elements in the library to give residents a cohesive and branded user experience. Including an agency-specific theme stylesheet will override the default colors, and change these color of the components and elements to reflect the theme for a given agency group. This makes it easy to adapt the design system to align with each agency's branding requirements.<br />
↳<em>Created by Jesse Gardner (<a href="https://github.com/plasticmind">@plasticmind</a>) in #136</em></p>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v0.0.7-alpha" title="https://github.com/its-hcd/nysds/releases/tag/v0.0.7-alpha">See the full developer release notes for v0.0.7-alpha →</a></p>
]]></content>
      <pubDate>Wed, 15 Jan 2025 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/0.0.7-alpha-release/</guid>
    </item>
    <item>
      <title>Release 0.0.4-alpha</title>
      <link>https://designsystem.ny.gov/about/updates/0.0.4-alpha-release/</link>
      <description><![CDATA[<h1>Release Notes</h1>
<p>We’re excited to announce that the New York State Design System is now live on NPM! 🎉 You can explore and install our published packages here: <a href="https://www.npmjs.com/org/nysds">NYS Design System on NPM</a>. This release includes two new components—<code>&lt;nys-textarea&gt;</code> and <code>&lt;nys-toggle&gt;</code>—and significant improvements to our build and publishing workflows.</p>
<h2>What’s New</h2>
<h3>New Component: nys-textarea</h3>
<p>Description: UI element for entering multiline text input.</p>
<p>Features:</p>
<ul>
<li>Height adjusts automatically based on content or can be set manually via the <code>rows</code> property</li>
<li>Supports max length (specify a maximum number of characters)</li>
<li>Supports a label and a description, with a label positioned at the top of the input and optional description text beneath it. (This is a standard pattern for input elements across the design system.)</li>
<li>Includes validation support, like required fields, regex patterns, and more to match form requirements</li>
</ul>
<p><em>Created by Emily Gorelik (<a href="https://github.com/emilygorelik">@emilygorelik</a>) in #100</em></p>
<h3>New Component: nys-toggle</h3>
<p>Description: Toggle switch for binary options (on/off). Recommended for cases where the action is binary, such as enabling/disabling settings, but <code>nys-checkbox</code> is preferred for more complex selections.</p>
<p>Features:</p>
<ul>
<li>Includes small (<code>sm</code>) and medium (<code>md</code>, default) sizes. Font sizes and spacing adjust accordingly.</li>
<li>Description can be set either via the <code>description</code> property or a slot</li>
<li>Icons help improve the understandability of the toggle, but can be disable with <code>NoIcons</code> boolean property</li>
<li>Use the<code>form</code> attribute to associate toggle with a <code>&lt;form&gt;</code> for submission handling</li>
<li>Includes ARIA roles and supports keyboard navigation, screen reader compatibility, and visual focus indicators</li>
<li>Emits standard <code>change</code>, <code>focus</code>, <code>blur</code>, and <code>keydown</code> events</li>
</ul>
<p><em>Created by Robert Chen (<a href="https://github.com/NovaCat35">@NovaCat35</a>) in #94</em></p>
<h3>Maintenance and Fixes</h3>
<ul>
<li>Test builds are now mandatory for PR merges into <code>main</code> - <a href="https://github.com/esteinborn">@esteinborn</a> <a href="https://github.com/its-hcd/nysds/issues/126">#126</a></li>
<li>Optimized build processes, scoped all packages to <code>[@nysds](https://github.com/its-hcd/nysds)</code>, and created NPM publishing workflow - <a href="https://github.com/plasticmind">@plasticmind</a> <a href="https://github.com/its-hcd/nysds/issues/120">#120</a></li>
<li>Simplified <code>package.json</code> configs and introduced a pre-built step for Storybook  - <a href="https://github.com/plasticmind">@plasticmind</a> <a href="https://github.com/its-hcd/nysds/issues/128">#128</a></li>
</ul>
<h2>Related issues</h2>
<ul>
<li><code>&lt;nys-toggle&gt;</code>-related issues: <a href="https://github.com/its-hcd/nysds/issues/68">#68</a> <a href="https://github.com/its-hcd/nysds/issues/81">#81</a> <a href="https://github.com/its-hcd/nysds/issues/94">#94</a> <a href="https://github.com/its-hcd/nysds/issues/127">#127</a> <a href="https://github.com/its-hcd/nysds/issues/129">#129</a></li>
<li><code>&lt;nys-textarea&gt;</code>-related issues: <a href="https://github.com/its-hcd/nysds/issues/83">#83</a> <a href="https://github.com/its-hcd/nysds/issues/98">#98</a> <a href="https://github.com/its-hcd/nysds/issues/100">#100</a></li>
</ul>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v0.0.4-alpha" title="https://github.com/its-hcd/nysds/releases/tag/v0.0.4-alpha">See the full developer release notes for v0.0.4-alpha →</a></p>
]]></description>
      <content><![CDATA[<h1>Release Notes</h1>
<p>We’re excited to announce that the New York State Design System is now live on NPM! 🎉 You can explore and install our published packages here: <a href="https://www.npmjs.com/org/nysds">NYS Design System on NPM</a>. This release includes two new components—<code>&lt;nys-textarea&gt;</code> and <code>&lt;nys-toggle&gt;</code>—and significant improvements to our build and publishing workflows.</p>
<h2>What’s New</h2>
<h3>New Component: nys-textarea</h3>
<p>Description: UI element for entering multiline text input.</p>
<p>Features:</p>
<ul>
<li>Height adjusts automatically based on content or can be set manually via the <code>rows</code> property</li>
<li>Supports max length (specify a maximum number of characters)</li>
<li>Supports a label and a description, with a label positioned at the top of the input and optional description text beneath it. (This is a standard pattern for input elements across the design system.)</li>
<li>Includes validation support, like required fields, regex patterns, and more to match form requirements</li>
</ul>
<p><em>Created by Emily Gorelik (<a href="https://github.com/emilygorelik">@emilygorelik</a>) in #100</em></p>
<h3>New Component: nys-toggle</h3>
<p>Description: Toggle switch for binary options (on/off). Recommended for cases where the action is binary, such as enabling/disabling settings, but <code>nys-checkbox</code> is preferred for more complex selections.</p>
<p>Features:</p>
<ul>
<li>Includes small (<code>sm</code>) and medium (<code>md</code>, default) sizes. Font sizes and spacing adjust accordingly.</li>
<li>Description can be set either via the <code>description</code> property or a slot</li>
<li>Icons help improve the understandability of the toggle, but can be disable with <code>NoIcons</code> boolean property</li>
<li>Use the<code>form</code> attribute to associate toggle with a <code>&lt;form&gt;</code> for submission handling</li>
<li>Includes ARIA roles and supports keyboard navigation, screen reader compatibility, and visual focus indicators</li>
<li>Emits standard <code>change</code>, <code>focus</code>, <code>blur</code>, and <code>keydown</code> events</li>
</ul>
<p><em>Created by Robert Chen (<a href="https://github.com/NovaCat35">@NovaCat35</a>) in #94</em></p>
<h3>Maintenance and Fixes</h3>
<ul>
<li>Test builds are now mandatory for PR merges into <code>main</code> - <a href="https://github.com/esteinborn">@esteinborn</a> <a href="https://github.com/its-hcd/nysds/issues/126">#126</a></li>
<li>Optimized build processes, scoped all packages to <code>[@nysds](https://github.com/its-hcd/nysds)</code>, and created NPM publishing workflow - <a href="https://github.com/plasticmind">@plasticmind</a> <a href="https://github.com/its-hcd/nysds/issues/120">#120</a></li>
<li>Simplified <code>package.json</code> configs and introduced a pre-built step for Storybook  - <a href="https://github.com/plasticmind">@plasticmind</a> <a href="https://github.com/its-hcd/nysds/issues/128">#128</a></li>
</ul>
<h2>Related issues</h2>
<ul>
<li><code>&lt;nys-toggle&gt;</code>-related issues: <a href="https://github.com/its-hcd/nysds/issues/68">#68</a> <a href="https://github.com/its-hcd/nysds/issues/81">#81</a> <a href="https://github.com/its-hcd/nysds/issues/94">#94</a> <a href="https://github.com/its-hcd/nysds/issues/127">#127</a> <a href="https://github.com/its-hcd/nysds/issues/129">#129</a></li>
<li><code>&lt;nys-textarea&gt;</code>-related issues: <a href="https://github.com/its-hcd/nysds/issues/83">#83</a> <a href="https://github.com/its-hcd/nysds/issues/98">#98</a> <a href="https://github.com/its-hcd/nysds/issues/100">#100</a></li>
</ul>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v0.0.4-alpha" title="https://github.com/its-hcd/nysds/releases/tag/v0.0.4-alpha">See the full developer release notes for v0.0.4-alpha →</a></p>
]]></content>
      <pubDate>Mon, 23 Dec 2024 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/0.0.4-alpha-release/</guid>
    </item>
    <item>
      <title>Release 0.0.3-alpha</title>
      <link>https://designsystem.ny.gov/about/updates/0.0.3-alpha-release/</link>
      <description><![CDATA[<h2>What’s New</h2>
<ul>
<li>New component: <code>&lt;nys-radiobutton&gt;</code> created by <a href="https://github.com/emilygorelik">@emilygorelik</a>
<ul>
<li>Created in https://github.com/ITS-HCD/nysds/pull/52</li>
</ul>
</li>
<li>New component: <code>&lt;nys-icon&gt;</code> created by <a href="https://github.com/NovaCat35">@NovaCat35</a>
<ul>
<li>Created in https://github.com/ITS-HCD/nysds/pull/56</li>
</ul>
</li>
<li>New component: <code>&lt;nys-textinput&gt;</code> by <a href="https://github.com/emilygorelik">@emilygorelik</a>
<ul>
<li>Created in https://github.com/ITS-HCD/nysds/pull/83</li>
</ul>
</li>
<li>New component: <code>&lt;nys-alert&gt;</code> by <a href="https://github.com/NovaCat35">@NovaCat35</a>
<ul>
<li>Created in https://github.com/ITS-HCD/nysds/pull/84</li>
</ul>
</li>
<li>Maintenance and fixes by <a href="https://github.com/esteinborn">@esteinborn</a>
<ul>
<li>Publish Storybook (for collaboration) in https://github.com/ITS-HCD/nysds/pull/70</li>
<li>Upgrade Storybook and NPM modules in https://github.com/ITS-HCD/nysds/pull/75</li>
<li>CI/CD build fixes in https://github.com/ITS-HCD/nysds/pull/89</li>
</ul>
</li>
</ul>
<h2>New Contributors</h2>
<p>Welcome to our new design system engineers!</p>
<ul>
<li>Emily Gorelik (<a href="https://github.com/emilygorelik">@emilygorelik</a>) made their first contribution in https://github.com/ITS-HCD/nysds/pull/47</li>
<li>Robert Chen (<a href="https://github.com/NovaCat35">@NovaCat35</a>) made their first contribution in https://github.com/ITS-HCD/nysds/pull/56</li>
</ul>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v0.0.3-alpha" title="https://github.com/its-hcd/nysds/releases/tag/v0.0.3-alpha">See the full developer release notes for v0.0.3-alpha →</a></p>
]]></description>
      <content><![CDATA[<h2>What’s New</h2>
<ul>
<li>New component: <code>&lt;nys-radiobutton&gt;</code> created by <a href="https://github.com/emilygorelik">@emilygorelik</a>
<ul>
<li>Created in https://github.com/ITS-HCD/nysds/pull/52</li>
</ul>
</li>
<li>New component: <code>&lt;nys-icon&gt;</code> created by <a href="https://github.com/NovaCat35">@NovaCat35</a>
<ul>
<li>Created in https://github.com/ITS-HCD/nysds/pull/56</li>
</ul>
</li>
<li>New component: <code>&lt;nys-textinput&gt;</code> by <a href="https://github.com/emilygorelik">@emilygorelik</a>
<ul>
<li>Created in https://github.com/ITS-HCD/nysds/pull/83</li>
</ul>
</li>
<li>New component: <code>&lt;nys-alert&gt;</code> by <a href="https://github.com/NovaCat35">@NovaCat35</a>
<ul>
<li>Created in https://github.com/ITS-HCD/nysds/pull/84</li>
</ul>
</li>
<li>Maintenance and fixes by <a href="https://github.com/esteinborn">@esteinborn</a>
<ul>
<li>Publish Storybook (for collaboration) in https://github.com/ITS-HCD/nysds/pull/70</li>
<li>Upgrade Storybook and NPM modules in https://github.com/ITS-HCD/nysds/pull/75</li>
<li>CI/CD build fixes in https://github.com/ITS-HCD/nysds/pull/89</li>
</ul>
</li>
</ul>
<h2>New Contributors</h2>
<p>Welcome to our new design system engineers!</p>
<ul>
<li>Emily Gorelik (<a href="https://github.com/emilygorelik">@emilygorelik</a>) made their first contribution in https://github.com/ITS-HCD/nysds/pull/47</li>
<li>Robert Chen (<a href="https://github.com/NovaCat35">@NovaCat35</a>) made their first contribution in https://github.com/ITS-HCD/nysds/pull/56</li>
</ul>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v0.0.3-alpha" title="https://github.com/its-hcd/nysds/releases/tag/v0.0.3-alpha">See the full developer release notes for v0.0.3-alpha →</a></p>
]]></content>
      <pubDate>Fri, 29 Nov 2024 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/0.0.3-alpha-release/</guid>
    </item>
    <item>
      <title>Release 0.0.2-alpha</title>
      <link>https://designsystem.ny.gov/about/updates/0.0.2-alpha-release/</link>
      <description><![CDATA[<h2>What's Changed</h2>
<ul>
<li>Added two new components <code>nys-icon</code> and <code>nys-checkbox</code></li>
</ul>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v0.0.2-alpha" title="https://github.com/its-hcd/nysds/releases/tag/v0.0.2-alpha">See the full developer release notes for v0.0.2-alpha →</a></p>
]]></description>
      <content><![CDATA[<h2>What's Changed</h2>
<ul>
<li>Added two new components <code>nys-icon</code> and <code>nys-checkbox</code></li>
</ul>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v0.0.2-alpha" title="https://github.com/its-hcd/nysds/releases/tag/v0.0.2-alpha">See the full developer release notes for v0.0.2-alpha →</a></p>
]]></content>
      <pubDate>Thu, 21 Nov 2024 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/0.0.2-alpha-release/</guid>
    </item>
    <item>
      <title>Release 0.0.1-alpha</title>
      <link>https://designsystem.ny.gov/about/updates/0.0.1-alpha-release/</link>
      <description><![CDATA[<h2>Ever Upward!</h2>
<p>Today marks a huge milestone: the very first <strong>alpha release</strong> of the NYS Design System (early codename)! This release lays the foundation for everything that will come after—our build process, our standards, and the collaborative spirit of the team.</p>
<p>Big thanks to <a href="https://github.com/plasticmind">Jesse Gardner</a> for laying down so much of the early groundwork, and to the whole ITS HCD team for helping bring the NYS Design System to life. This is just the beginning.</p>
<h2>Project Foundations</h2>
<ul>
<li>Added a <strong>pull request template</strong> to keep our contributions clear and consistent (<a href="https://github.com/ITS-HCD/nysds/pull/25">#25</a>)</li>
<li>Configured <strong>TypeScript (tsconfig)</strong> to standardize our dev environment (<a href="https://github.com/ITS-HCD/nysds/pull/26">#26</a>)</li>
<li>Introduced <strong>Rollup bundling</strong> with plugins to streamline packaging (<a href="https://github.com/ITS-HCD/nysds/pull/28">#28</a>)</li>
<li>Set up <strong>ESLint + linting tasks</strong> to keep our codebase clean and maintainable (<a href="https://github.com/ITS-HCD/nysds/pull/30">#30</a>)</li>
<li>Integrated <strong>Vite and Storybook</strong> for lightning-fast development and interactive component previews (<a href="https://github.com/ITS-HCD/nysds/pull/45">#45</a>)</li>
</ul>
<p>These building blocks are the core of our workflow—and they’ll help us ship stable, consistent, and accessible components going forward.</p>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v0.0.1-alpha" title="https://github.com/its-hcd/nysds/releases/tag/v0.0.1-alpha">See the full developer release notes for v0.0.1-alpha →</a></p>
]]></description>
      <content><![CDATA[<h2>Ever Upward!</h2>
<p>Today marks a huge milestone: the very first <strong>alpha release</strong> of the NYS Design System (early codename)! This release lays the foundation for everything that will come after—our build process, our standards, and the collaborative spirit of the team.</p>
<p>Big thanks to <a href="https://github.com/plasticmind">Jesse Gardner</a> for laying down so much of the early groundwork, and to the whole ITS HCD team for helping bring the NYS Design System to life. This is just the beginning.</p>
<h2>Project Foundations</h2>
<ul>
<li>Added a <strong>pull request template</strong> to keep our contributions clear and consistent (<a href="https://github.com/ITS-HCD/nysds/pull/25">#25</a>)</li>
<li>Configured <strong>TypeScript (tsconfig)</strong> to standardize our dev environment (<a href="https://github.com/ITS-HCD/nysds/pull/26">#26</a>)</li>
<li>Introduced <strong>Rollup bundling</strong> with plugins to streamline packaging (<a href="https://github.com/ITS-HCD/nysds/pull/28">#28</a>)</li>
<li>Set up <strong>ESLint + linting tasks</strong> to keep our codebase clean and maintainable (<a href="https://github.com/ITS-HCD/nysds/pull/30">#30</a>)</li>
<li>Integrated <strong>Vite and Storybook</strong> for lightning-fast development and interactive component previews (<a href="https://github.com/ITS-HCD/nysds/pull/45">#45</a>)</li>
</ul>
<p>These building blocks are the core of our workflow—and they’ll help us ship stable, consistent, and accessible components going forward.</p>
<h3>For full component updates, bug fixes, and the detailed changelog:</h3>
<p><a href="https://github.com/ITS-HCD/nysds/releases/tag/v0.0.1-alpha" title="https://github.com/its-hcd/nysds/releases/tag/v0.0.1-alpha">See the full developer release notes for v0.0.1-alpha →</a></p>
]]></content>
      <pubDate>Wed, 06 Nov 2024 24:00:00 GMT</pubDate>
      <dc:creator>NYS ITS Design System Team</dc:creator>
      <guid>https://designsystem.ny.gov/about/updates/0.0.1-alpha-release/</guid>
    </item>
  </channel>
</rss>