<!DOCTYPE html>
<html class="no-js" lang="en">
    <head>
        <title>Apache NiFi - Flow Design System</title>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <link rel="shortcut icon" href="/assets/images/nifi16.ico"/>
        <link rel="stylesheet" href="/stylesheets/app.min.5c81cf462909783b5f788de8312885d5e08d20aa6dd5f6eb9507dd445444a6cb.css">
        <link rel="stylesheet" href="/assets/stylesheets/font-awesome.min.css">
        <script src="/assets/js/modernizr.js"></script>
        <script src="/assets/js/webfontloader.js"></script>
        <script>
  var _paq = window._paq = window._paq || [];
  _paq.push(['disableCookies']);
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var baseUri = "//matomo.privacy.apache.org/";
    _paq.push(['setTrackerUrl', baseUri + 'matomo.php']);
    _paq.push(['setSiteId', '28']);
    var trackerElement = document.createElement('script');
    var firstScriptElement = document.getElementsByTagName('script')[0];
    trackerElement.async = true;
    trackerElement.src = baseUri + 'matomo.js';
    var firstScriptElement = document.getElementsByTagName('script')[0];
    if (window.location.host === 'nifi.apache.org') {
      firstScriptElement.parentNode.insertBefore(trackerElement, firstScriptElement);
    }
  })();
</script>
</head>
    <body><div class="sticky contain-to-grid">
    <nav class="top-bar" data-topbar role="navigation">
        <ul class="title-area">
            <li class="name">
                <h1>
                    <a href="index.html">
                        <img id="logo-top-bar" src="/assets/images/nifi-drop-white.svg" alt="Apache NiFi"/>
                    </a>
                </h1>
            </li>
            
            <li class="toggle-topbar menu-icon"><a href="#"><span></span></a></li>
        </ul>

        <section class="top-bar-section">
            
            <ul class="right">
                <li class="has-dropdown">
                    <a href="#">Project</a>
                    <ul class="dropdown">
                        <li><a href="index.html">Home</a></li>
                        <li><a href="https://blogs.apache.org/nifi/"><i class="fa fa-external-link external-link"></i>Apache NiFi Blog</a></li>
                        <li><a href="https://www.apache.org/licenses/"><i class="fa fa-external-link external-link"></i>License</a></li>
                    </ul>
                </li>
                <li class="has-dropdown">
                    <a href="#">Documentation</a>
                    <ul class="dropdown">
                        <li><a href="faq.html">FAQ</a></li>
                        <li><a href="videos.html">Videos</a></li>
                        <li><a href="docs.html">NiFi Docs</a></li>
                        <li><a href="https://cwiki.apache.org/confluence/display/NIFI"><i class="fa fa-external-link external-link"></i>Wiki</a></li>
                        <li><a href="security.html">NiFi Security Reports</a></li>
                        <li><a href="registry-security.html">NiFi Registry Security Reports</a></li>
                    </ul>
                </li>
                <li class="has-dropdown">
                    <a href="#">Downloads</a>
                    <ul class="dropdown">
                        <li><a href="download.html">Download NiFi</a></li>
                        <li><a href="https://cwiki.apache.org/confluence/display/NIFI/Release+Notes"><i class="fa fa-external-link external-link"></i>Release Notes</a></li>
                    </ul>
                </li>
                <li class="has-dropdown">
                    <a href="#">Community</a>
                    <ul class="dropdown">
                        <li><a href="https://cwiki.apache.org/confluence/display/NIFI/Contributor+Guide"><i class="fa fa-external-link external-link"></i>Contributor Guide</a></li>
                        <li><a href="mailing_lists.html">Mailing Lists &amp; Chat</a></li>
                        <li><a href="people.html">People</a></li>
                        <li><a href="powered-by-nifi.html">Powered by NiFi</a></li>
                    </ul>
                </li>
                <li class="has-dropdown">
                    <a href="#">Development</a>
                    <ul class="dropdown">
                        <li><a href="quickstart.html">Quickstart</a></li>
                        <li><a href="release-guide.html">Release Guide</a></li>
                        <li><a href="gpg.html">GPG Guide</a></li>
                        <li><a href="fds-release-guide.html">FDS Release Guide</a></li>
                        <li><a href="licensing-guide.html">Licensing Guide</a></li>
                        <li><a href="developer-guide.html">Developer Guide</a></li>
                        <li><a href="https://gitbox.apache.org/repos/asf/nifi.git"><i class="fa fa-external-link external-link"></i>Source</a></li>
                        <li><a href="https://issues.apache.org/jira/browse/NIFI"><i class="fa fa-external-link external-link"></i>Issues</a></li>
                        <li><a href="https://github.com/apache/nifi"><i class="fa fa-external-link external-link"></i>GitHub</a></li>
                    </ul>
                </li>
                <li class="has-dropdown">
                    <a href="#">ASF Links</a>
                    <ul class="dropdown">
                        <li><a href="https://www.apache.org"><i class="fa fa-external-link external-link"></i>Apache Software Foundation</a></li>
                        <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html"><i class="fa fa-external-link external-link"></i>Privacy Policy</a></li>
                        <li><a href="https://www.apache.org/foundation/sponsorship.html"><i class="fa fa-external-link external-link"></i>Sponsorship</a></li>
                        <li><a href="https://www.apache.org/security/"><i class="fa fa-external-link external-link"></i>Security</a></li>
                        <li><a href="https://www.apache.org/foundation/thanks.html"><i class="fa fa-external-link external-link"></i>Thanks</a></li>
                    </ul>
                </li>
                <li class="has-dropdown">
                    <a href="#">Subprojects</a>
                    <ul class="dropdown">
                        <li><a href="minifi/index.html">MiNiFi</a></li>
                        <li><a href="registry.html">Registry</a></li>
                        <li><a href="fds.html">FDS</a></li>
                    </ul>
                </li>
            </ul>
        </section>
    </nav>
</div>

          <div class="row">
            <div class="large-12 columns">
              <div class="large-space"></div>
	<h1 id="apache-hahahugoshortcode-s0-hbhb-flow-design-system">Apache <span class="ni">ni</span><span class="fi">fi</span>
 Flow Design System</h1>
<p class="description">
  A subproject of Apache NiFi to provide a consistent user experience across the various web applications within the NiFi ecosystem.
</p>
<h2 id="features">Features</h2>
<p>Flow Design System—a subproject of Apache NiFi— is an atomic reusable platform for providing a consistent
set of UI/UX components for Apache NiFi, Apache NiFi Registry, Apache NiFi MiNiFi, and any other open source web
applications to consume.</p>
<p>Specific goals for the initial thrust of the Flow Design System effort include:</p>
<ul>
<li>Implementation of the Flow Design System for reuseable UI/UX components</li>
<li>Integration with NiFi Registry UI/UX via npm public registry</li>
</ul>
<p>Future efforts may include capabilities to support additional UI/UX concepts as they are identified by the community.</p>
<h2 id="releases">Releases</h2>
<h3 id="030">0.3.0</h3>
<ul>
<li><a href="https://cwiki.apache.org/confluence/display/NIFI/Release+Notes#ReleaseNotes-NiFiFlowDesignSystem0.3.0">Release Notes</a></li>
<li><a href="https://www.apache.org/dyn/closer.lua?path=/nifi/nifi-fds/nifi-fds-0.3.0/nifi-fds-0.3.0-source-release.zip">Apache NiFi FDS Sources 0.3.0</a>
[<a href="https://downloads.apache.org/nifi/nifi-fds/nifi-fds-0.3.0/nifi-fds-0.3.0-source-release.zip.asc">OpenPGP</a>]
[<a href="https://downloads.apache.org/nifi/nifi-fds/nifi-fds-0.3.0/nifi-fds-0.3.0-source-release.zip.sha256">SHA-256</a>]
[<a href="https://downloads.apache.org/nifi/nifi-fds/nifi-fds-0.3.0/nifi-fds-0.3.0-source-release.zip.sha512">SHA-512</a>]
</li>
</ul>
<h3 id="020">0.2.0</h3>
<ul>
<li><a href="https://cwiki.apache.org/confluence/display/NIFI/Release+Notes#ReleaseNotes-NiFiFlowDesignSystem0.2.0">Release Notes</a></li>
<li><a href="https://archive.apache.org/dist/nifi/nifi-fds/nifi-fds-0.2.0/nifi-fds-0.2.0-source-release.zip">Apache NiFi FDS Sources 0.2.0</a>
[<a href="https://archive.apache.org/dist/nifi/nifi-fds/nifi-fds-0.2.0/nifi-fds-0.2.0-source-release.zip.asc">OpenPGP</a>]
[<a href="https://archive.apache.org/dist/nifi/nifi-fds/nifi-fds-0.2.0/nifi-fds-0.2.0-source-release.zip.sha256">SHA-256</a>]
[<a href="https://archive.apache.org/dist/nifi/nifi-fds/nifi-fds-0.2.0/nifi-fds-0.2.0-source-release.zip.sha512">SHA-512</a>]
</li>
</ul>
<h3 id="010">0.1.0</h3>
<ul>
<li><a href="https://cwiki.apache.org/confluence/display/NIFI/Release+Notes#ReleaseNotes-NiFiFlowDesignSystem0.1.0">Release Notes</a></li>
<li><a href="https://archive.apache.org/dist/nifi/nifi-fds/nifi-fds-0.1.0/nifi-fds-0.1.0-source-release.zip">Apache NiFi FDS Sources 0.1.0</a>
[<a href="https://archive.apache.org/dist/nifi/nifi-fds/nifi-fds-0.1.0/nifi-fds-0.1.0-source-release.zip.asc">OpenPGP</a>]
[<a href="https://archive.apache.org/dist/nifi/nifi-fds/nifi-fds-0.1.0/nifi-fds-0.1.0-source-release.zip.sha256">SHA-256</a>]
[<a href="https://archive.apache.org/dist/nifi/nifi-fds/nifi-fds-0.1.0/nifi-fds-0.1.0-source-release.zip.sha512">SHA-512</a>]
</li>
</ul>
<h2 id="sources">Sources</h2>
<ul>
<li><a href="https://gitbox.apache.org/repos/asf?p=nifi-fds.git">Apache Gitbox</a></li>
<li><a href="https://github.com/apache/nifi-fds">GitHub</a></li>
</ul>
<h2 id="issues">Issues</h2>
<ul>
<li><a href="https://issues.apache.org/jira/browse/NIFI">Apache NiFi Jira</a></li>
</ul>

</div>
          </div>
        <div class="row">
    <div class="large-12 columns footer">
        <a href="https://www.apache.org">
            <img id="asf-logo" alt="Apache Software Foundation" src="/assets/images/asf_logo.png" width="200" style="margin:0px 10px" />
        </a>
        <a  href="https://www.apache.org/events/current-event.html">
            <img src="https://www.apache.org/events/current-event-234x60.png" style="margin:0px 10px" />
        </a>
        <div id="copyright">
            <p>Copyright &#169; 2022 The Apache Software Foundation, Licensed under the <a
                    href="https://www.apache.org/licenses/">Apache License, Version 2.0</a>.<br/>Apache, the
                Apache feather logo, NiFi, Apache NiFi and the project logo are trademarks of The Apache Software
                Foundation.</p>
        </div>
    </div>
</div>
        <script src="/assets/js/jquery.min.js"></script>
        <script src="/assets/js/foundation.js"></script>
        <script src="/assets/js/app.js"></script>
    </body>
</html>