{
  "name": "drawer-custom-roles",
  "kind": "block",
  "primary": "drawer-ui",
  "page": "/apps/saas/app/members/members.contents.html",
  "slots": [],
  "nested": [
    "user-identity-row"
  ],
  "attrs": {
    "side": "right",
    "size": "md"
  },
  "html": "<drawer-ui id=\"drawer-custom-roles\" side=\"right\" size=\"md\">\n  <header>\n    <span slot=\"icon\">\n      <avatar-ui icon=\"shield-check\"></avatar-ui>\n    </span>\n    <span slot=\"heading\">\n      <text-ui strong>Custom roles</text-ui>\n      <badge-ui text=\"Pro\" variant=\"accent\"></badge-ui>\n    </span>\n    <span slot=\"action\"></span>\n  </header>\n  <section>\n    <text-ui color=\"subtle\" size=\"sm\">Define fine-grained permission sets and assign them to members.</text-ui>\n  </section>\n  <section>\n    <col-ui gap=\"4\">\n      <grid-ui columns=\"1 2@sm\" gap=\"3\">\n        <card-ui\n          ><section><stat-ui label=\"Built-in roles\" value=\"3\"></stat-ui></section\n        ></card-ui>\n        <card-ui\n          ><section><stat-ui label=\"Custom roles\" value=\"2\" change=\"+1 this month\" trend=\"up\"></stat-ui></section\n        ></card-ui>\n      </grid-ui>\n      <divider-ui></divider-ui>\n      <col-ui gap=\"2\">\n        <text-ui strong>Existing custom roles</text-ui>\n        <list-ui divider>\n          <list-item-ui>\n            <row-ui gap=\"2\" align=\"center\" grow><!-- nested: user-identity-row --></row-ui>\n          </list-item-ui>\n          <list-item-ui>\n            <row-ui gap=\"2\" align=\"center\" grow>\n              <avatar-ui icon=\"chart-line\" size=\"sm\"></avatar-ui>\n              <col-ui gap=\"0\" grow>\n                <text-ui strong>Analyst</text-ui>\n                <text-ui color=\"subtle\" size=\"sm\">Read + export only · 2 members</text-ui>\n              </col-ui>\n              <button-ui variant=\"ghost\" size=\"sm\" icon=\"pencil-simple\"></button-ui>\n            </row-ui>\n          </list-item-ui>\n        </list-ui>\n      </col-ui>\n      <divider-ui></divider-ui>\n      <col-ui gap=\"3\">\n        <text-ui strong>Create a new role</text-ui>\n        <field-ui label=\"Role name\">\n          <input-ui placeholder=\"e.g. Contractor\"></input-ui>\n        </field-ui>\n        <field-ui label=\"Description\">\n          <textarea-ui rows=\"2\" placeholder=\"One-line summary shown on member rows\"></textarea-ui>\n        </field-ui>\n        <field-ui label=\"Start from\" hint=\"Use an existing role as a baseline, then adjust below.\">\n          <select-ui value=\"viewer\">\n            <option value=\"viewer\">Viewer · read-only</option>\n            <option value=\"member\">Member · edit + invite</option>\n            <option value=\"admin\">Admin · full access</option>\n            <option value=\"blank\">Blank · no permissions</option>\n          </select-ui>\n        </field-ui>\n      </col-ui>\n      <divider-ui></divider-ui>\n      <col-ui gap=\"3\">\n        <text-ui strong>Content</text-ui>\n        <field-ui label=\"View projects and conversations\" inline>\n          <check-ui checked></check-ui>\n        </field-ui>\n        <field-ui label=\"Edit own content\" inline>\n          <check-ui checked></check-ui>\n        </field-ui>\n        <field-ui label=\"Edit others' content\" inline>\n          <check-ui></check-ui>\n        </field-ui>\n        <field-ui label=\"Delete content\" inline>\n          <check-ui></check-ui>\n        </field-ui>\n        <field-ui label=\"Export to CSV / PDF\" inline>\n          <check-ui></check-ui>\n        </field-ui>\n      </col-ui>\n      <divider-ui></divider-ui>\n      <col-ui gap=\"3\">\n        <text-ui strong>Members</text-ui>\n        <field-ui label=\"Invite new members\" inline>\n          <check-ui></check-ui>\n        </field-ui>\n        <field-ui label=\"Change member roles\" inline>\n          <check-ui></check-ui>\n        </field-ui>\n        <field-ui label=\"Remove members\" inline>\n          <check-ui></check-ui>\n        </field-ui>\n      </col-ui>\n      <divider-ui></divider-ui>\n      <col-ui gap=\"3\">\n        <text-ui strong>Workspace</text-ui>\n        <field-ui label=\"View billing and invoices\" inline>\n          <check-ui></check-ui>\n        </field-ui>\n        <field-ui label=\"Change billing plan\" inline>\n          <check-ui></check-ui>\n        </field-ui>\n        <field-ui label=\"Manage API keys\" inline>\n          <check-ui></check-ui>\n        </field-ui>\n        <field-ui label=\"Manage webhooks\" inline>\n          <check-ui></check-ui>\n        </field-ui>\n        <field-ui label=\"Delete workspace\" inline>\n          <check-ui></check-ui>\n        </field-ui>\n      </col-ui>\n    </col-ui>\n  </section>\n  <footer slot=\"footer\">\n    <grid-ui>\n      <button-ui text=\"Cancel\" variant=\"ghost\" onclick=\"this.closest('drawer-ui').open = false\"></button-ui>\n      <button-ui text=\"Create role\" icon=\"plus\" variant=\"primary\" onclick=\"this.closest('drawer-ui').open = false\"></button-ui>\n    </grid-ui>\n  </footer>\n</drawer-ui>",
  "source": "apps/saas/app/members/members.contents.html",
  "metadata": {
    "domain": "settings",
    "description": "Custom roles configuration drawer — create or edit permission role definition.",
    "keywords": [
      "drawer",
      "custom",
      "roles",
      "permissions",
      "settings",
      "RBAC",
      "access",
      "control"
    ]
  },
  "captured_at": "2026-06-07T19:28:13.657Z",
  "template": [
    {
      "id": "avatar",
      "component": "Avatar",
      "icon": "shield-check"
    },
    {
      "id": "text",
      "component": "Text",
      "variant": "body",
      "slot": "icon",
      "children": [
        "avatar"
      ]
    },
    {
      "id": "text-3",
      "component": "Text",
      "strong": true,
      "textContent": "Custom roles"
    },
    {
      "id": "badge",
      "component": "Badge",
      "text": "Pro",
      "variant": "accent"
    },
    {
      "id": "text-2",
      "component": "Text",
      "variant": "body",
      "slot": "heading",
      "children": [
        "text-3",
        "badge"
      ]
    },
    {
      "id": "text-4",
      "component": "Text",
      "variant": "body",
      "slot": "action"
    },
    {
      "id": "header",
      "component": "Header",
      "children": [
        "text",
        "text-2",
        "text-4"
      ]
    },
    {
      "id": "text-5",
      "component": "Text",
      "color": "subtle",
      "size": "sm",
      "textContent": "Define fine-grained permission sets and assign them to members."
    },
    {
      "id": "section",
      "component": "Section",
      "children": [
        "text-5"
      ]
    },
    {
      "id": "stat",
      "component": "Stat",
      "label": "Built-in roles",
      "value": "3"
    },
    {
      "id": "section-3",
      "component": "Section",
      "children": [
        "column-2"
      ]
    },
    {
      "id": "column-2",
      "component": "Column",
      "children": [
        "stat"
      ]
    },
    {
      "id": "card",
      "component": "Card",
      "children": [
        "section-3"
      ]
    },
    {
      "id": "stat-2",
      "component": "Stat",
      "change": "+1 this month",
      "label": "Custom roles",
      "trend": "up",
      "value": "2"
    },
    {
      "id": "section-4",
      "component": "Section",
      "children": [
        "column-3"
      ]
    },
    {
      "id": "column-3",
      "component": "Column",
      "children": [
        "stat-2"
      ]
    },
    {
      "id": "card-2",
      "component": "Card",
      "children": [
        "section-4"
      ]
    },
    {
      "id": "grid",
      "component": "Grid",
      "columns": "1 2@sm",
      "gap": "3",
      "children": [
        "card",
        "card-2"
      ]
    },
    {
      "id": "divider",
      "component": "Divider"
    },
    {
      "id": "text-6",
      "component": "Text",
      "strong": true,
      "textContent": "Existing custom roles"
    },
    {
      "id": "avatar-2",
      "component": "Avatar",
      "icon": "code",
      "size": "sm"
    },
    {
      "id": "text-7",
      "component": "Text",
      "strong": true,
      "textContent": "Developer"
    },
    {
      "id": "text-8",
      "component": "Text",
      "color": "subtle",
      "size": "sm",
      "textContent": "API + webhook access · 4 members"
    },
    {
      "id": "column-5",
      "component": "Column",
      "gap": "0",
      "grow": true,
      "children": [
        "text-7",
        "text-8"
      ]
    },
    {
      "id": "button",
      "component": "Button",
      "icon": "pencil-simple",
      "size": "sm",
      "variant": "ghost"
    },
    {
      "id": "row-2",
      "component": "Row",
      "align": "center",
      "gap": "2",
      "grow": true,
      "children": [
        "avatar-2",
        "column-5",
        "button"
      ]
    },
    {
      "id": "row",
      "component": "Row",
      "align": "center",
      "gap": "2",
      "grow": true,
      "children": [
        "row-2"
      ]
    },
    {
      "id": "list-item",
      "component": "ListItem",
      "children": [
        "row"
      ]
    },
    {
      "id": "avatar-3",
      "component": "Avatar",
      "icon": "chart-line",
      "size": "sm"
    },
    {
      "id": "text-9",
      "component": "Text",
      "strong": true,
      "textContent": "Analyst"
    },
    {
      "id": "text-10",
      "component": "Text",
      "color": "subtle",
      "size": "sm",
      "textContent": "Read + export only · 2 members"
    },
    {
      "id": "column-6",
      "component": "Column",
      "gap": "0",
      "grow": true,
      "children": [
        "text-9",
        "text-10"
      ]
    },
    {
      "id": "button-2",
      "component": "Button",
      "icon": "pencil-simple",
      "size": "sm",
      "variant": "ghost"
    },
    {
      "id": "row-3",
      "component": "Row",
      "align": "center",
      "gap": "2",
      "grow": true,
      "children": [
        "avatar-3",
        "column-6",
        "button-2"
      ]
    },
    {
      "id": "list-item-2",
      "component": "ListItem",
      "children": [
        "row-3"
      ]
    },
    {
      "id": "list",
      "component": "List",
      "divider": true,
      "children": [
        "list-item",
        "list-item-2"
      ]
    },
    {
      "id": "column-4",
      "component": "Column",
      "gap": "2",
      "children": [
        "text-6",
        "list"
      ]
    },
    {
      "id": "divider-2",
      "component": "Divider"
    },
    {
      "id": "text-11",
      "component": "Text",
      "strong": true,
      "textContent": "Create a new role"
    },
    {
      "id": "input",
      "component": "Input",
      "placeholder": "e.g. Contractor"
    },
    {
      "id": "field",
      "component": "Field",
      "label": "Role name",
      "children": [
        "input"
      ]
    },
    {
      "id": "text-area",
      "component": "TextArea",
      "placeholder": "One-line summary shown on member rows",
      "rows": "2"
    },
    {
      "id": "field-2",
      "component": "Field",
      "label": "Description",
      "children": [
        "text-area"
      ]
    },
    {
      "id": "choice-picker",
      "component": "ChoicePicker",
      "value": "viewer",
      "options": [
        {
          "value": "viewer",
          "label": "Viewer · read-only"
        },
        {
          "value": "member",
          "label": "Member · edit + invite"
        },
        {
          "value": "admin",
          "label": "Admin · full access"
        },
        {
          "value": "blank",
          "label": "Blank · no permissions"
        }
      ]
    },
    {
      "id": "field-3",
      "component": "Field",
      "hint": "Use an existing role as a baseline, then adjust below.",
      "label": "Start from",
      "children": [
        "choice-picker"
      ]
    },
    {
      "id": "column-7",
      "component": "Column",
      "gap": "3",
      "children": [
        "text-11",
        "field",
        "field-2",
        "field-3"
      ]
    },
    {
      "id": "divider-3",
      "component": "Divider"
    },
    {
      "id": "text-12",
      "component": "Text",
      "strong": true,
      "textContent": "Content"
    },
    {
      "id": "check-box",
      "component": "CheckBox",
      "checked": true
    },
    {
      "id": "field-4",
      "component": "Field",
      "inline": true,
      "label": "View projects and conversations",
      "children": [
        "check-box"
      ]
    },
    {
      "id": "check-box-2",
      "component": "CheckBox",
      "checked": true
    },
    {
      "id": "field-5",
      "component": "Field",
      "inline": true,
      "label": "Edit own content",
      "children": [
        "check-box-2"
      ]
    },
    {
      "id": "check-box-3",
      "component": "CheckBox"
    },
    {
      "id": "field-6",
      "component": "Field",
      "inline": true,
      "label": "Edit others' content",
      "children": [
        "check-box-3"
      ]
    },
    {
      "id": "check-box-4",
      "component": "CheckBox"
    },
    {
      "id": "field-7",
      "component": "Field",
      "inline": true,
      "label": "Delete content",
      "children": [
        "check-box-4"
      ]
    },
    {
      "id": "check-box-5",
      "component": "CheckBox"
    },
    {
      "id": "field-8",
      "component": "Field",
      "inline": true,
      "label": "Export to CSV / PDF",
      "children": [
        "check-box-5"
      ]
    },
    {
      "id": "column-8",
      "component": "Column",
      "gap": "3",
      "children": [
        "text-12",
        "field-4",
        "field-5",
        "field-6",
        "field-7",
        "field-8"
      ]
    },
    {
      "id": "divider-4",
      "component": "Divider"
    },
    {
      "id": "text-13",
      "component": "Text",
      "strong": true,
      "textContent": "Members"
    },
    {
      "id": "check-box-6",
      "component": "CheckBox"
    },
    {
      "id": "field-9",
      "component": "Field",
      "inline": true,
      "label": "Invite new members",
      "children": [
        "check-box-6"
      ]
    },
    {
      "id": "check-box-7",
      "component": "CheckBox"
    },
    {
      "id": "field-10",
      "component": "Field",
      "inline": true,
      "label": "Change member roles",
      "children": [
        "check-box-7"
      ]
    },
    {
      "id": "check-box-8",
      "component": "CheckBox"
    },
    {
      "id": "field-11",
      "component": "Field",
      "inline": true,
      "label": "Remove members",
      "children": [
        "check-box-8"
      ]
    },
    {
      "id": "column-9",
      "component": "Column",
      "gap": "3",
      "children": [
        "text-13",
        "field-9",
        "field-10",
        "field-11"
      ]
    },
    {
      "id": "divider-5",
      "component": "Divider"
    },
    {
      "id": "text-14",
      "component": "Text",
      "strong": true,
      "textContent": "Workspace"
    },
    {
      "id": "check-box-9",
      "component": "CheckBox"
    },
    {
      "id": "field-12",
      "component": "Field",
      "inline": true,
      "label": "View billing and invoices",
      "children": [
        "check-box-9"
      ]
    },
    {
      "id": "check-box-10",
      "component": "CheckBox"
    },
    {
      "id": "field-13",
      "component": "Field",
      "inline": true,
      "label": "Change billing plan",
      "children": [
        "check-box-10"
      ]
    },
    {
      "id": "check-box-11",
      "component": "CheckBox"
    },
    {
      "id": "field-14",
      "component": "Field",
      "inline": true,
      "label": "Manage API keys",
      "children": [
        "check-box-11"
      ]
    },
    {
      "id": "check-box-12",
      "component": "CheckBox"
    },
    {
      "id": "field-15",
      "component": "Field",
      "inline": true,
      "label": "Manage webhooks",
      "children": [
        "check-box-12"
      ]
    },
    {
      "id": "check-box-13",
      "component": "CheckBox"
    },
    {
      "id": "field-16",
      "component": "Field",
      "inline": true,
      "label": "Delete workspace",
      "children": [
        "check-box-13"
      ]
    },
    {
      "id": "column-10",
      "component": "Column",
      "gap": "3",
      "children": [
        "text-14",
        "field-12",
        "field-13",
        "field-14",
        "field-15",
        "field-16"
      ]
    },
    {
      "id": "column",
      "component": "Column",
      "gap": "4",
      "children": [
        "grid",
        "divider",
        "column-4",
        "divider-2",
        "column-7",
        "divider-3",
        "column-8",
        "divider-4",
        "column-9",
        "divider-5",
        "column-10"
      ]
    },
    {
      "id": "section-2",
      "component": "Section",
      "children": [
        "column"
      ]
    },
    {
      "id": "button-3",
      "component": "Button",
      "text": "Cancel",
      "variant": "ghost"
    },
    {
      "id": "button-4",
      "component": "Button",
      "icon": "plus",
      "text": "Create role",
      "variant": "primary"
    },
    {
      "id": "grid-2",
      "component": "Grid",
      "children": [
        "button-3",
        "button-4"
      ]
    },
    {
      "id": "footer",
      "component": "Footer",
      "slot": "footer",
      "children": [
        "grid-2"
      ]
    },
    {
      "id": "root",
      "component": "Drawer",
      "side": "right",
      "size": "md",
      "children": [
        "header",
        "section",
        "section-2",
        "footer"
      ]
    }
  ]
}
