{
  "name": "payment-method-form",
  "kind": "block",
  "primary": "card-ui",
  "page": "/catalog/ui-patterns/app/payment-method-form/payment-method-form.contents.html",
  "slots": [],
  "nested": [],
  "attrs": {},
  "html": "<card-ui>\n  <header>\n    <avatar-ui slot=\"icon\" icon=\"credit-card\"></avatar-ui>\n    <h3>Update payment method</h3>\n    <p slot=\"description\">Card on file: Visa ending in 4242 · Expires 08/2028</p>\n  </header>\n  <section>\n    <col-ui gap=\"4\">\n      <alert-ui variant=\"info\" icon=\"info\" text=\"Card details are tokenized by Stripe. We never see or store the full number.\"></alert-ui>\n      <field-ui label=\"Payment method\">\n        <select-ui value=\"card\">\n          <option value=\"card\">Credit or debit card</option>\n          <option value=\"ach\">Bank account (ACH)</option>\n          <option value=\"wire\">Wire transfer (annual only)</option>\n        </select-ui>\n      </field-ui>\n      <field-ui label=\"Card number\">\n        <input-ui placeholder=\"1234 1234 1234 1234\" prefix=\"credit-card\"></input-ui>\n      </field-ui>\n      <grid-ui columns=\"2\" gap=\"2\">\n        <field-ui label=\"Expiry\">\n          <input-ui placeholder=\"MM/YY\"></input-ui>\n        </field-ui>\n        <field-ui label=\"CVC\">\n          <input-ui placeholder=\"123\"></input-ui>\n        </field-ui>\n      </grid-ui>\n      <field-ui label=\"Name on card\">\n        <input-ui placeholder=\"Kim Granlund\"></input-ui>\n      </field-ui>\n      <divider-ui></divider-ui>\n      <text-ui strong>Billing address</text-ui>\n      <field-ui label=\"Country\">\n        <input-ui value=\"United States\"></input-ui>\n      </field-ui>\n      <field-ui label=\"Street address\">\n        <input-ui value=\"101 Montgomery St\"></input-ui>\n      </field-ui>\n      <grid-ui columns=\"3\" gap=\"2\">\n        <field-ui label=\"City\">\n          <input-ui value=\"San Francisco\"></input-ui>\n        </field-ui>\n        <field-ui label=\"State\">\n          <input-ui value=\"CA\"></input-ui>\n        </field-ui>\n        <field-ui label=\"ZIP\">\n          <input-ui value=\"94104\"></input-ui>\n        </field-ui>\n      </grid-ui>\n    </col-ui>\n  </section>\n  <footer>\n    <row-ui gap=\"2\" justify=\"space-between\" align=\"center\">\n      <button-ui text=\"Remove card\" variant=\"ghost\" icon=\"trash\" color=\"danger\"></button-ui>\n      <row-ui gap=\"2\">\n        <button-ui text=\"Cancel\" variant=\"ghost\"></button-ui>\n        <button-ui text=\"Save card\" variant=\"primary\"></button-ui>\n      </row-ui>\n    </row-ui>\n  </footer>\n</card-ui>",
  "source": "catalog/ui-patterns/app/payment-method-form/payment-method-form.contents.html",
  "metadata": {
    "domain": "billing",
    "description": "Payment method form — credit card number, expiry, CVC, billing address fields with save/cancel actions. Inline card form (drawer-less variant for gallery + inline-form contexts).",
    "keywords": [
      "payment",
      "method",
      "credit",
      "card",
      "billing",
      "form",
      "update",
      "save",
      "cvc",
      "cvv",
      "expiry",
      "visa",
      "mastercard",
      "amex",
      "card-on-file",
      "billing-address",
      "tax-id"
    ]
  },
  "captured_at": "2026-06-07T19:28:13.657Z",
  "template": [
    {
      "id": "avatar",
      "component": "Avatar",
      "slot": "icon",
      "icon": "credit-card"
    },
    {
      "id": "text",
      "component": "Text",
      "variant": "heading",
      "textContent": "Update payment method"
    },
    {
      "id": "text-2",
      "component": "Text",
      "variant": "body",
      "slot": "description",
      "textContent": "Card on file: Visa ending in 4242 · Expires 08/2028"
    },
    {
      "id": "header",
      "component": "Header",
      "children": [
        "avatar",
        "text",
        "text-2"
      ]
    },
    {
      "id": "alert",
      "component": "Alert",
      "icon": "info",
      "text": "Card details are tokenized by Stripe. We never see or store the full number.",
      "variant": "info"
    },
    {
      "id": "choice-picker",
      "component": "ChoicePicker",
      "value": "card",
      "options": [
        {
          "value": "card",
          "label": "Credit or debit card"
        },
        {
          "value": "ach",
          "label": "Bank account (ACH)"
        },
        {
          "value": "wire",
          "label": "Wire transfer (annual only)"
        }
      ]
    },
    {
      "id": "field",
      "component": "Field",
      "label": "Payment method",
      "children": [
        "choice-picker"
      ]
    },
    {
      "id": "input",
      "component": "Input",
      "placeholder": "1234 1234 1234 1234",
      "prefix": "credit-card"
    },
    {
      "id": "field-2",
      "component": "Field",
      "label": "Card number",
      "children": [
        "input"
      ]
    },
    {
      "id": "input-2",
      "component": "Input",
      "placeholder": "MM/YY"
    },
    {
      "id": "field-3",
      "component": "Field",
      "label": "Expiry",
      "children": [
        "input-2"
      ]
    },
    {
      "id": "input-3",
      "component": "Input",
      "placeholder": "123"
    },
    {
      "id": "field-4",
      "component": "Field",
      "label": "CVC",
      "children": [
        "input-3"
      ]
    },
    {
      "id": "grid",
      "component": "Grid",
      "columns": "2",
      "gap": "2",
      "children": [
        "field-3",
        "field-4"
      ]
    },
    {
      "id": "input-4",
      "component": "Input",
      "placeholder": "Kim Granlund"
    },
    {
      "id": "field-5",
      "component": "Field",
      "label": "Name on card",
      "children": [
        "input-4"
      ]
    },
    {
      "id": "divider",
      "component": "Divider"
    },
    {
      "id": "text-3",
      "component": "Text",
      "strong": true,
      "textContent": "Billing address"
    },
    {
      "id": "input-5",
      "component": "Input",
      "value": "United States"
    },
    {
      "id": "field-6",
      "component": "Field",
      "label": "Country",
      "children": [
        "input-5"
      ]
    },
    {
      "id": "input-6",
      "component": "Input",
      "value": "101 Montgomery St"
    },
    {
      "id": "field-7",
      "component": "Field",
      "label": "Street address",
      "children": [
        "input-6"
      ]
    },
    {
      "id": "input-7",
      "component": "Input",
      "value": "San Francisco"
    },
    {
      "id": "field-8",
      "component": "Field",
      "label": "City",
      "children": [
        "input-7"
      ]
    },
    {
      "id": "input-8",
      "component": "Input",
      "value": "CA"
    },
    {
      "id": "field-9",
      "component": "Field",
      "label": "State",
      "children": [
        "input-8"
      ]
    },
    {
      "id": "input-9",
      "component": "Input",
      "value": "94104"
    },
    {
      "id": "field-10",
      "component": "Field",
      "label": "ZIP",
      "children": [
        "input-9"
      ]
    },
    {
      "id": "grid-2",
      "component": "Grid",
      "columns": "3",
      "gap": "2",
      "children": [
        "field-8",
        "field-9",
        "field-10"
      ]
    },
    {
      "id": "column",
      "component": "Column",
      "gap": "4",
      "children": [
        "alert",
        "field",
        "field-2",
        "grid",
        "field-5",
        "divider",
        "text-3",
        "field-6",
        "field-7",
        "grid-2"
      ]
    },
    {
      "id": "section",
      "component": "Section",
      "children": [
        "column"
      ]
    },
    {
      "id": "button",
      "component": "Button",
      "color": "danger",
      "icon": "trash",
      "text": "Remove card",
      "variant": "ghost"
    },
    {
      "id": "button-2",
      "component": "Button",
      "text": "Cancel",
      "variant": "ghost"
    },
    {
      "id": "button-3",
      "component": "Button",
      "text": "Save card",
      "variant": "primary"
    },
    {
      "id": "row-2",
      "component": "Row",
      "gap": "2",
      "children": [
        "button-2",
        "button-3"
      ]
    },
    {
      "id": "row",
      "component": "Row",
      "align": "center",
      "gap": "2",
      "justify": "space-between",
      "children": [
        "button",
        "row-2"
      ]
    },
    {
      "id": "footer",
      "component": "Footer",
      "children": [
        "row"
      ]
    },
    {
      "id": "root",
      "component": "Card",
      "children": [
        "header",
        "section",
        "footer"
      ]
    }
  ]
}
