> ## Documentation Index
> Fetch the complete documentation index at: https://docs.avraapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Visual Playground

> Try the real Payment Elements customer form without API credentials or a payment request.

export const CustomerFormPlayground = () => {
  const CDN_VERSION = '1.1.2';
  const markup = (String.raw)`
  <main class="playground-shell">
    <header class="playground-header-container">
      <div class="playground-header-main">
        <a class="back-to-overview" href="/universal-payment-gateway/payment-elements/overview">← Back to Payment Elements overview</a>
        <div class="eyebrow"><span class="eyebrow-dot"></span>Interactive playground</div>
        <h1 id="playground-title">Customer Form</h1>
        <p id="playground-description">Try the real Payment Elements form locally. Nothing here creates an order or sends a network request.</p>
      </div>
      <div class="package-info-box">
        <div class="pkg-detail"><span>Package</span><strong>@avraapi/payment-elements</strong></div>
        <div class="pkg-detail"><span>Version</span><strong>1.1.2</strong></div>
        <div class="pkg-detail"><span>Released</span><strong>1st Oct 2026</strong></div>
      </div>
    </header>

    <div class="playground-tabs" role="tablist" aria-label="Payment Elements playground sections">
      <button id="customer-tab" class="playground-tab playground-tab--active" type="button" role="tab" aria-selected="true" aria-controls="customer-tab-panel">1. Customer Form</button>
      <button id="methods-tab" class="playground-tab" type="button" role="tab" aria-selected="false" aria-controls="methods-tab-panel">2. Payment Methods</button>
    </div>

    <section id="customer-tab-panel" class="tab-panel" role="tabpanel" aria-labelledby="customer-tab">
    <div class="playground-grid">
      <section class="preview-panel" aria-labelledby="live-preview-title">
        <div class="panel-heading">
          <div><p class="section-kicker">Live preview</p><h2 id="live-preview-title">Your customer form</h2></div>
          <span id="preview-theme-label" class="preview-theme-label"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"></path></svg> <span>Dark</span></span>
        </div>
        <div id="preview-stage" class="preview-stage preview-stage--dark">
          <div class="preview-browser-bar" aria-hidden="true"><span></span><span></span><span></span><i>checkout.example</i></div>
          <div id="customer-form-preview" class="customer-form-preview"></div>
        </div>
        <p class="preview-note"><span>●</span> This is the published browser component. Checkout actions are intentionally unavailable in this preview.</p>
      </section>

      <aside class="controls-panel" aria-labelledby="customize-title">
        <div class="panel-heading controls-heading">
          <div><p class="section-kicker">Customize</p><h2 id="customize-title">Make it yours</h2></div>
          <button id="reset-controls" class="reset-button" type="button"><svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M15.312 11.424a5.5 5.5 0 01-9.201 2.466l-.312-.311h2.433a.75.75 0 000-1.5H3.989a.75.75 0 00-.75.75v4.242a.75.75 0 001.5 0v-2.43l.31.31a7 7 0 0011.712-3.138.75.75 0 00-1.449-.39zm1.23-3.723a.75.75 0 00.219-.53V2.929a.75.75 0 00-1.5 0V5.36l-.31-.31A7 7 0 003.239 8.188a.75.75 0 101.448.389A5.5 5.5 0 0113.89 6.11l.311.31h-2.432a.75.75 0 000 1.5h4.243a.75.75 0 00.53-.219z" clip-rule="evenodd" /></svg> Reset</button>
        </div>
        <div class="controls-scroll">
          <section class="control-section control-section--first">
            <div class="control-label-row"><label for="form-title">Form title</label><span class="control-hint">Shown to buyers</span></div>
            <input id="form-title" class="text-control" type="text" value="Customer details" maxlength="80">
          </section>
          <section class="control-section">
            <div class="control-label-row"><span>Theme</span><span class="control-hint">Preview surface</span></div>
            <div class="segmented-control" role="group" aria-label="Choose form theme"><button type="button" data-theme="dark" class="is-selected"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"></path></svg> Dark</button><button type="button" data-theme="light"><svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z" clip-rule="evenodd"></path></svg> Light</button></div>
          </section>
          <section class="control-section">
            <div class="control-label-row"><span>Colours</span><span class="control-hint">Pick or paste a hex value</span></div>
            <div class="colour-grid">
              <label class="colour-control"><span>Accent</span><span class="colour-inputs"><input id="accent-color-picker" type="color" value="#3fcef1" aria-label="Accent colour picker"><input id="accent-color" type="text" value="#3FCEF1" maxlength="7" spellcheck="false"></span></label>
              <label class="colour-control"><span>Background</span><span class="colour-inputs"><input id="background-color-picker" type="color" value="#0c1631" aria-label="Background colour picker"><input id="background-color" type="text" value="#0C1631" maxlength="7" spellcheck="false"></span></label>
              <label class="colour-control"><span>Text</span><span class="colour-inputs"><input id="text-color-picker" type="color" value="#f8fafc" aria-label="Text colour picker"><input id="text-color" type="text" value="#F8FAFC" maxlength="7" spellcheck="false"></span></label>
              <label class="colour-control"><span>Border</span><span class="colour-inputs"><input id="border-color-picker" type="color" value="#3a485f" aria-label="Border colour picker"><input id="border-color" type="text" value="#3A485F" maxlength="7" spellcheck="false"></span></label>
            </div>
          </section>
          <section class="control-section padding-section">
            <div class="control-label-row"><label for="form-padding">Form padding</label><span id="padding-value" class="control-hint">24px</span></div>
            <div class="padding-controls-row">
              <input id="form-padding" class="padding-range" type="range" min="12" max="40" step="1" value="24" aria-label="Form padding">
              <div class="padding-separator"></div>
              <div class="padding-input-wrapper">
                <div class="padding-input-group">
                  <input id="padding-number" type="number" value="24" class="text-control padding-number" aria-label="Padding value">
                  <div class="unit-toggle" id="padding-unit-toggle">
                    <button type="button" data-unit="px" class="is-selected">px</button>
                    <button type="button" data-unit="rem">rem</button>
                  </div>
                </div>
                <div id="padding-warning" class="padding-warning" hidden></div>
              </div>
            </div>
          </section>
          <section class="control-section split-control-section">
            <div class="switch-row"><div><strong>Form state</strong><span id="collapsed-state">Expanded</span></div><button id="collapsed-switch" class="switch" type="button" role="switch" aria-checked="false" aria-label="Start form collapsed"><span></span></button></div>
            <div class="switch-row"><div><strong>Sync phone country</strong><span>Country updates phone dial code</span></div><button id="sync-country-switch" class="switch is-on" type="button" role="switch" aria-checked="true" aria-label="Sync phone country"><span></span></button></div>
          </section>
          <section class="control-section country-section">
            <div class="control-label-row"><span>Starting countries</span><span class="control-hint">ISO 3166-1</span></div>
            <div class="country-grid">
              <div class="custom-select" data-select="default-country"><span class="select-label">Billing country</span><button class="custom-select-trigger" type="button" aria-haspopup="listbox" aria-expanded="false"><span class="select-value"></span><svg viewBox="0 0 20 20" aria-hidden="true"><path d="m5 7 5 5 5-5"></path></svg></button><div class="custom-select-popover" hidden><label class="select-search"><span class="sr-only">Search billing countries</span><input type="search" placeholder="Search countries" autocomplete="off"></label><div class="custom-select-options" role="listbox"></div></div></div>
              <div class="custom-select" data-select="phone-country"><span class="select-label">Phone country</span><button class="custom-select-trigger" type="button" aria-haspopup="listbox" aria-expanded="false"><span class="select-value"></span><svg viewBox="0 0 20 20" aria-hidden="true"><path d="m5 7 5 5 5-5"></path></svg></button><div class="custom-select-popover" hidden><label class="select-search"><span class="sr-only">Search phone countries</span><input type="search" placeholder="Search countries" autocomplete="off"></label><div class="custom-select-options" role="listbox"></div></div></div>
            </div>
          </section>
          <details class="control-section details-section" id="field-rules-section"><summary><span><strong>Field rules</strong><small>Required, optional, and excluded fields</small></span><svg viewBox="0 0 20 20" aria-hidden="true"><path d="m5 7 5 5 5-5"></path></svg></summary><div class="details-content"><p>Optional fields can be required. To remove a default-required field, first make it optional.</p><div id="field-rules" class="field-rules"></div></div></details>
          <details class="control-section details-section" id="custom-labels-section"><summary><span><strong>Custom field labels</strong><small>Leave a field empty to keep its default label</small></span><svg viewBox="0 0 20 20" aria-hidden="true"><path d="m5 7 5 5 5-5"></path></svg></summary><div class="details-content labels-content"><div id="custom-labels" class="custom-labels"></div></div></details>
          <section class="control-section generated-code-section"><div class="code-actions"><button id="view-code" class="secondary-button" type="button" aria-expanded="false">View code</button><button id="copy-code" class="primary-button" type="button">Copy code</button></div><pre id="generated-code" class="generated-code" hidden><code></code></pre><p id="copy-status" class="copy-status" aria-live="polite"></p></section>
        </div>
      </aside>
    </div>
    </section>

    <section id="methods-tab-panel" class="tab-panel" role="tabpanel" aria-labelledby="methods-tab" hidden>
      <div class="playground-grid">
        <section class="preview-panel" aria-labelledby="methods-live-preview-title">
          <div class="panel-heading">
            <div><p class="section-kicker">Live preview</p><h2 id="methods-live-preview-title">Your payment methods</h2></div>
            <span id="methods-preview-theme-label" class="preview-theme-label"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"></path></svg> <span>Dark</span></span>
          </div>
          <div id="methods-preview-stage" class="preview-stage preview-stage--dark">
            <div class="preview-browser-bar" aria-hidden="true"><span></span><span></span><span></span><i>checkout.example</i></div>
            <div id="payment-methods-preview" class="payment-methods-preview"></div>
          </div>
          <p id="methods-preview-note" class="preview-note"><span>●</span> This uses safe sample availability only. It does not inspect your project, slots, Vault, or gateway credentials.</p>
          <p id="methods-selected-state" class="methods-selected-state" aria-live="polite"></p>
        </section>

        <aside class="controls-panel" aria-labelledby="methods-customize-title">
          <div class="panel-heading controls-heading">
            <div><p class="section-kicker">Customize</p><h2 id="methods-customize-title">Configure methods</h2></div>
            <button id="methods-reset-controls" class="reset-button" type="button"><svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M15.312 11.424a5.5 5.5 0 01-9.201 2.466l-.312-.311h2.433a.75.75 0 000-1.5H3.989a.75.75 0 00-.75.75v4.242a.75.75 0 001.5 0v-2.43l.31.31a7 7 0 0011.712-3.138.75.75 0 00-1.449-.39zm1.23-3.723a.75.75 0 00.219-.53V2.929a.75.75 0 00-1.5 0V5.36l-.31-.31A7 7 0 003.239 8.188a.75.75 0 101.448.389A5.5 5.5 0 0113.89 6.11l.311.31h-2.432a.75.75 0 000 1.5h4.243a.75.75 0 00.53-.219z" clip-rule="evenodd" /></svg> Reset</button>
          </div>
          <div class="controls-scroll">
            <section class="control-section control-section--first">
              <div class="control-label-row"><span>Method source</span><span class="control-hint">How methods are supplied</span></div>
              <div class="segmented-control method-source-control" role="group" aria-label="Choose a payment method source">
                <button type="button" data-methods-source="available" class="is-selected">Show available</button>
                <button type="button" data-methods-source="defined">Define gateway-wise</button>
              </div>
              <p id="methods-source-description" class="control-description">Preview the safe method list that a backend availability response could provide. No request is made from this page.</p>
            </section>
            <section id="sample-environment-section" class="control-section">
              <div class="control-label-row"><span>Preview environment</span><span class="control-hint">Safe sample data</span></div>
              <div class="segmented-control" role="group" aria-label="Choose sample environment"><button type="button" data-sample-environment="sandbox" class="is-selected">Sandbox</button><button type="button" data-sample-environment="live">Live</button></div>
              <p class="control-description">Sandbox methods show a testing badge. Live methods deliberately do not.</p>
            </section>
            <section class="control-section">
              <div class="control-label-row"><label for="methods-title">Method title</label><span class="control-hint">Shown to buyers</span></div>
              <input id="methods-title" class="text-control" type="text" value="Choose a payment method" maxlength="80">
            </section>
            <section class="control-section">
              <div class="control-label-row"><span>Theme</span><span class="control-hint">Preview surface</span></div>
              <div class="segmented-control" role="group" aria-label="Choose payment method theme"><button type="button" data-methods-theme="dark" class="is-selected"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"></path></svg> Dark</button><button type="button" data-methods-theme="light"><svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z" clip-rule="evenodd"></path></svg> Light</button></div>
            </section>
            <section class="control-section padding-section">
              <div class="control-label-row"><label for="methods-padding">Form padding</label><span id="methods-padding-value" class="control-hint">24px</span></div>
              <div class="padding-controls-row">
                <input id="methods-padding" class="padding-range" type="range" min="12" max="40" step="1" value="24" aria-label="Form padding">
                <div class="padding-separator"></div>
                <div class="padding-input-wrapper">
                  <div class="padding-input-group">
                    <input id="methods-padding-number" type="number" value="24" class="text-control padding-number" aria-label="Padding value">
                    <div class="unit-toggle" id="methods-padding-unit-toggle">
                      <button type="button" data-unit="px" class="is-selected">px</button>
                      <button type="button" data-unit="rem">rem</button>
                    </div>
                  </div>
                  <div id="methods-padding-warning" class="padding-warning" hidden></div>
                </div>
              </div>
            </section>
            <section class="control-section">
              <div class="control-label-row"><span>Colours</span><span class="control-hint">Pick or paste a hex value</span></div>
              <div class="colour-grid">
                <label class="colour-control"><span>Accent</span><span class="colour-inputs"><input id="methods-accent-color-picker" type="color" value="#3fcef1" aria-label="Payment method accent colour picker"><input id="methods-accent-color" type="text" value="#3FCEF1" maxlength="7" spellcheck="false"></span></label>
                <label class="colour-control"><span>Background</span><span class="colour-inputs"><input id="methods-background-color-picker" type="color" value="#0c1631" aria-label="Payment method background colour picker"><input id="methods-background-color" type="text" value="#0C1631" maxlength="7" spellcheck="false"></span></label>
                <label class="colour-control"><span>Text</span><span class="colour-inputs"><input id="methods-text-color-picker" type="color" value="#f8fafc" aria-label="Payment method text colour picker"><input id="methods-text-color" type="text" value="#F8FAFC" maxlength="7" spellcheck="false"></span></label>
                <label class="colour-control"><span>Border</span><span class="colour-inputs"><input id="methods-border-color-picker" type="color" value="#3a485f" aria-label="Payment method border colour picker"><input id="methods-border-color" type="text" value="#3A485F" maxlength="7" spellcheck="false"></span></label>
              </div>
            </section>
            <section id="method-editor-section" class="control-section method-editor-section" hidden>
              <div class="editor-header-row">
                <span class="editor-title">Gateway-wise methods</span>
                <div class="add-gateway-dropdown">
                  <button id="add-method" class="add-gateway-btn" type="button" aria-expanded="false" aria-haspopup="listbox">
                    <svg viewBox="0 0 20 20" aria-hidden="true"><path d="M10 5a1 1 0 011 1v3h3a1 1 0 110 2h-3v3a1 1 0 11-2 0v-3H6a1 1 0 110-2h3V6a1 1 0 011-1z"></path></svg> Add gateway
                  </button>
                  <div id="add-method-popover" class="custom-select-popover add-gateway-popover" hidden role="listbox" aria-label="Available gateways">
                  </div>
                </div>
              </div>
              <div id="method-editor-list" class="method-editor-list" aria-label="Configured payment methods"></div>
              <div id="method-editor" class="method-editor" hidden>
                <div class="switch-row"><div><strong>Enabled</strong><span id="method-enabled-hint">Shown to buyers</span></div><button id="method-enabled" class="switch is-on" type="button" role="switch" aria-checked="true" aria-label="Enable this payment method"><span></span></button></div>
                <label class="method-field"><span>Gateway</span><select id="method-gateway" class="text-control" aria-label="Gateway"></select></label>
                <div class="method-field"><span>Supported checkout mode</span><div id="method-mode-options" class="segmented-control method-mode-options" role="group" aria-label="Choose checkout mode"></div></div>
                <label class="method-field"><span>Label</span><input id="method-label" class="text-control" type="text" maxlength="90"></label>
                <label class="method-field"><span>Description</span><input id="method-description" class="text-control" type="text" maxlength="130"></label>
                <div class="method-field"><span>Availability</span><div class="segmented-control" role="group" aria-label="Choose availability"><button type="button" data-method-availability="available">Available</button><button type="button" data-method-availability="unavailable">Unavailable</button></div></div>
                <label id="method-unavailable-reason-wrapper" class="method-field" hidden><span>Unavailable reason</span><input id="method-unavailable-reason" class="text-control" type="text" maxlength="130"></label>
                <div class="method-field"><span>Environment</span><div class="segmented-control" role="group" aria-label="Choose method environment"><button type="button" data-method-environment="sandbox">Sandbox</button><button type="button" data-method-environment="live">Live</button></div></div>
                <div class="method-config-actions"><button id="method-default" class="secondary-button" type="button">Set as default</button><button id="remove-method" class="danger-button" type="button">Remove</button></div>
              </div>
            </section>
            <section class="control-section generated-code-section"><div class="code-actions"><button id="methods-view-code" class="secondary-button" type="button" aria-expanded="false">View code</button><button id="methods-copy-code" class="primary-button" type="button">Copy code</button></div><pre id="methods-generated-code" class="generated-code" hidden><code></code></pre><p id="methods-copy-status" class="copy-status" aria-live="polite"></p></section>
          </div>
        </aside>
      </div>
    </section>
    <footer class="playground-footer">
      <div class="footer-nav">
        <a class="footer-nav-link" href="/universal-payment-gateway/payment-elements/overview">
          <svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z" clip-rule="evenodd" /></svg>
          Package Overview
        </a>
        <a class="footer-nav-link footer-nav-next" href="/universal-payment-gateway/payment-elements/render-form">
          Render Customer Form
          <svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z" clip-rule="evenodd" /></svg>
        </a>
      </div>
      <div class="footer-copyright">
        <p>Powered By Fidex Developers (Pvt) Ltd</p>
        <p>Copyright &copy; AvraAPI. All rights reserved.</p>
      </div>
    </footer>
  </main>`;
  const loadScript = (id, src, attributes = {}) => {
    const existing = document.getElementById(id);
    if (existing) return Promise.resolve();
    return new Promise((resolve, reject) => {
      const script = document.createElement('script');
      script.id = id;
      script.src = src;
      Object.assign(script, attributes);
      script.onload = resolve;
      script.onerror = () => reject(new Error(`Could not load ${src}.`));
      document.head.append(script);
    });
  };
  const root = useRef(null);
  useEffect(() => {
    let cancelled = false;
    const isLocalDocs = ['localhost', '127.0.0.1'].includes(window.location.hostname);
    const cdnBase = `https://cdn.avraapi.com/payment-elements/v${CDN_VERSION}`;
    const bundleUrl = isLocalDocs ? 'http://localhost:8002/avraapi-payment-elements.umd.js' : `${cdnBase}/avraapi-payment-elements.umd.js`;
    const playgroundUrl = isLocalDocs ? '/images/payment-elements/playground.js?v=payment-methods-v2' : `${cdnBase}/docs/playground.js`;
    const styleUrl = isLocalDocs ? '/images/payment-elements/playground.css?v=payment-methods-v2' : `${cdnBase}/docs/playground.css`;
    const style = document.createElement('link');
    style.id = 'avra-payment-elements-playground-styles';
    style.rel = 'stylesheet';
    style.href = styleUrl;
    if (!isLocalDocs) {
      style.integrity = 'sha384-RDMa2adscZlXzXK/BADfA1CuOLx2TFzKZuVU/74i78WCqrwQykEGPIicoi8FqbJi';
      style.crossOrigin = 'anonymous';
    }
    document.head.append(style);
    const mount = () => {
      if (!cancelled && root.current) window.AvraAPIPaymentElementsPlayground?.mount();
    };
    Promise.resolve().then(() => loadScript('avra-payment-elements-bundle', bundleUrl, isLocalDocs ? {} : {
      integrity: 'sha384-OFlOd6fgBnHYPoVCXZ9AbKa1VH4GalDBS6fK1Tqib1wecbf2aJ0mMpmJOrma+aSt',
      crossOrigin: 'anonymous'
    })).then(() => loadScript('avra-payment-elements-playground-script', playgroundUrl, isLocalDocs ? {} : {
      integrity: 'sha384-gUJk/kbGexd54R4q8ljcJz9k25Y4W558QR98h+iN5DkyeW48IubSa5Fw456ja1tK',
      crossOrigin: 'anonymous'
    })).then(mount).catch(() => {
      if (root.current) root.current.innerHTML = '<p class="playground-load-error">The interactive preview could not load. Refresh the page and try again.</p>';
    });
    return () => {
      cancelled = true;
      style.remove();
    };
  }, []);
  return <div id="avra-payment-elements-playground" ref={root} dangerouslySetInnerHTML={{
    __html: markup
  }} />;
};

<span id="payment-methods" aria-hidden="true" />

<CustomerFormPlayground />


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.