{
  "revision": "6a562bda75a0d745594dff7f2604fa21c791c0a0",
  "sourceDirty": true,
  "updated": "2026-11-07",
  "components": [
    {
      "type": "WebPage",
      "displayName": "Page",
      "namePrefix": "Page",
      "palette": {
        "category": "Containers",
        "caption": "Page"
      },
      "icon": "component-page",
      "visual": true,
      "styleEditor": {
        "essentialProperties": [
          "textColor",
          "fontFamily",
          "fontSize",
          "fontWeight",
          "lineHeight",
          "textAlign",
          "backgroundColor",
          "borderWidth",
          "borderStyle",
          "borderColor",
          "borderRadius",
          "boxShadow"
        ]
      },
      "canHaveChildren": true,
      "defaultEvent": "OnCreate",
      "defaultBounds": {
        "width": 800,
        "height": 600
      },
      "defaults": {
        "caption": "Page",
        "browserTitle": "",
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true,
        "backgroundColor": "#ffffff"
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 800,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 600,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "Fit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerMode",
          "label": "Container layout",
          "type": "enum",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "align-to-parent",
            "row",
            "column"
          ],
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerPaddingTop",
          "label": "Padding top",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Padding",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerPaddingRight",
          "label": "Padding right",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Padding",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerPaddingBottom",
          "label": "Padding bottom",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Padding",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerPaddingLeft",
          "label": "Padding left",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Padding",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerGap",
          "label": "Gap",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Flow",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerWrap",
          "label": "Wrap",
          "type": "boolean",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": false,
          "inspectorGroup": "Flow",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerJustifyContent",
          "label": "Justify content",
          "type": "enum",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "space-between",
            "space-around"
          ],
          "inspectorGroup": "Alignment",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerAlignItems",
          "label": "Default alignment",
          "description": "Default cross-axis alignment for children. Each child can override it with Item alignment.",
          "type": "enum",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "caption",
          "label": "Caption",
          "type": "string",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "Page",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "browserTitle",
          "label": "Browser title",
          "description": "Title shown in the browser tab. Leave blank to use the application name.",
          "type": "string",
          "category": "Identity",
          "source": "props",
          "defaultValue": "",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "parameters",
          "label": "Parameters",
          "description": "Declare typed inputs received when navigating to this page.",
          "type": "page-parameters",
          "category": "Navigation",
          "source": "page",
          "designerAction": "page-parameters",
          "defaultValue": [],
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "backgroundColor",
          "label": "Background Color",
          "type": "color",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "#ffffff",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnCreate",
          "label": "OnCreate",
          "category": "Behavior",
          "eventType": "Event"
        },
        {
          "name": "OnShow",
          "label": "OnShow",
          "category": "Behavior",
          "eventType": "Event"
        },
        {
          "name": "OnParametersChanged",
          "label": "OnParametersChanged",
          "category": "Navigation",
          "eventType": "Event",
          "eventDetailType": "PageParametersChangedEventDetail",
          "eventDetailProperties": [
            "previous"
          ]
        },
        {
          "name": "OnHide",
          "label": "OnHide",
          "category": "Behavior",
          "eventType": "Event"
        },
        {
          "name": "OnResize",
          "label": "OnResize",
          "category": "Behavior",
          "eventType": "Event"
        },
        {
          "name": "OnLogin",
          "label": "OnLogin",
          "category": "RestGO",
          "eventType": "Event",
          "eventDetailType": "WebPageLoginEventDetail",
          "eventDetailProperties": [
            "user"
          ]
        },
        {
          "name": "OnLogout",
          "label": "OnLogout",
          "category": "RestGO",
          "eventType": "Event",
          "eventDetailType": "WebPageLogoutEventDetail",
          "eventDetailProperties": [
            "user"
          ]
        },
        {
          "name": "OnUnauthenticated",
          "label": "OnUnauthenticated",
          "category": "RestGO",
          "eventType": "Event"
        }
      ]
    },
    {
      "supportsFloatingPlacement": true,
      "floatingSizing": "responsive",
      "type": "WebPanel",
      "displayName": "Panel",
      "namePrefix": "Panel",
      "palette": {
        "category": "Containers",
        "caption": "Panel"
      },
      "icon": "component-panel",
      "visual": true,
      "styleEditor": {
        "previewProps": {
          "progressEnabled": true,
          "progressValue": 50
        },
        "essentialProperties": [
          "textColor",
          "fontFamily",
          "fontSize",
          "fontWeight",
          "lineHeight",
          "textAlign",
          "backgroundColor",
          "borderWidth",
          "borderStyle",
          "borderColor",
          "borderRadius",
          "boxShadow",
          "panelProgressColor",
          "panelProgressTrackColor",
          "panelProgressThickness"
        ]
      },
      "canHaveChildren": true,
      "defaultEvent": "OnClick",
      "defaultBounds": {
        "width": 240,
        "height": 160
      },
      "defaults": {
        "caption": "",
        "aspectRatio": "none",
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true,
        "backgroundColor": "transparent",
        "borderColor": "#808080",
        "backgroundImage": "",
        "backgroundSize": "cover",
        "backgroundPosition": "center",
        "backgroundRepeat": "no-repeat",
        "progressEnabled": false,
        "progressValue": 0,
        "floatingAlignment": "none",
        "placement": "in-flow",
        "floatingHorizontalAnchor": "left",
        "floatingVerticalAnchor": "top",
        "floatingZIndex": 100
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 240,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 160,
          "description": "A fixed aspect ratio derives height from width. Choose none to edit the saved height rules.",
          "editorLayout": "compact",
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "A fixed aspect ratio derives height from width. Choose none to edit the saved height rules.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "description": "A fixed aspect ratio derives height from width. Choose none to edit the saved height rules.",
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "description": "A fixed aspect ratio derives height from width. Choose none to edit the saved height rules.",
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "aspectRatio",
          "label": "Aspect ratio",
          "type": "enum",
          "category": "Size & position",
          "source": "props",
          "defaultValue": "none",
          "options": [
            "none",
            "1:1",
            "4:3",
            "3:4",
            "16:9",
            "9:16"
          ],
          "description": "none allows free dimensions. A fixed ratio derives height from the responsive width.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerMode",
          "label": "Container layout",
          "type": "enum",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "align-to-parent",
            "row",
            "column"
          ],
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerPaddingTop",
          "label": "Padding top",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Padding",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerPaddingRight",
          "label": "Padding right",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Padding",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerPaddingBottom",
          "label": "Padding bottom",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Padding",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerPaddingLeft",
          "label": "Padding left",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Padding",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerGap",
          "label": "Gap",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Flow",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerWrap",
          "label": "Wrap",
          "type": "boolean",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": false,
          "inspectorGroup": "Flow",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerJustifyContent",
          "label": "Justify content",
          "type": "enum",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "space-between",
            "space-around"
          ],
          "inspectorGroup": "Alignment",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerAlignItems",
          "label": "Default alignment",
          "description": "Default cross-axis alignment for children. Each child can override it with Item alignment.",
          "type": "enum",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "caption",
          "label": "Caption",
          "type": "string",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "placement",
          "label": "Placement",
          "type": "enum",
          "category": "Floating placement",
          "source": "props",
          "defaultValue": "in-flow",
          "options": [
            "in-flow",
            "floating"
          ],
          "description": "Floating Panels overlay page content and move with page scrolling without consuming layout space.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "floatingHorizontalAnchor",
          "label": "Floating horizontal anchor",
          "type": "enum",
          "category": "Floating placement",
          "source": "props",
          "defaultValue": "left",
          "options": [
            "left",
            "center",
            "right"
          ],
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "floatingVerticalAnchor",
          "label": "Floating vertical anchor",
          "type": "enum",
          "category": "Floating placement",
          "source": "props",
          "defaultValue": "top",
          "options": [
            "top",
            "center",
            "bottom"
          ],
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "floatingZIndex",
          "label": "Floating layer",
          "type": "number",
          "category": "Floating placement",
          "source": "props",
          "defaultValue": 100,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "floatingAlignment",
          "label": "Floating alignment",
          "type": "enum",
          "category": "Floating placement",
          "source": "props",
          "defaultValue": "none",
          "options": [
            "none",
            "top",
            "bottom",
            "left",
            "right",
            "client"
          ],
          "description": "Choose the page edge or client origin. Responsive width/height, content sizing, limits, margins and offsets remain active. Use Stretch on both axes to fill the client area.",
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "progressEnabled",
          "label": "Enable border progress",
          "type": "boolean",
          "category": "Progress",
          "source": "props",
          "defaultValue": false,
          "description": "Show progress along the Panel border automatically when the value is greater than 0 and less than 100.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "progressValue",
          "label": "Progress (%)",
          "type": "number",
          "category": "Progress",
          "source": "props",
          "defaultValue": 0,
          "description": "Progress percentage from 0 to 100. At 0 or 100 the indicator is hidden.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "backgroundImage",
          "label": "Background image",
          "type": "string",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "",
          "description": "Image URL, data URL, or project asset path (assets/imported/...). Leave empty to use only the selected style.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "backgroundSize",
          "label": "Background size",
          "type": "enum",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "cover",
          "options": [
            "cover",
            "contain",
            "auto",
            "stretch"
          ],
          "description": "Cover fills with cropping; contain keeps the full image; auto uses its original size; stretch fills both dimensions.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "backgroundPosition",
          "label": "Background position",
          "type": "enum",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "center",
          "options": [
            "center",
            "top",
            "bottom",
            "left",
            "right",
            "left top",
            "right top",
            "left bottom",
            "right bottom"
          ],
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "backgroundRepeat",
          "label": "Background repeat",
          "type": "enum",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "no-repeat",
          "options": [
            "no-repeat",
            "repeat",
            "repeat-x",
            "repeat-y"
          ],
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "backgroundColor",
          "label": "Background Color",
          "type": "color",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "transparent",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "borderColor",
          "label": "Border Color",
          "type": "color",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "#808080",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnClick",
          "label": "OnClick",
          "category": "Behavior",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnDblClick",
          "label": "OnDblClick",
          "category": "Behavior",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnMouseEnter",
          "label": "OnMouseEnter",
          "category": "Mouse",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnMouseLeave",
          "label": "OnMouseLeave",
          "category": "Mouse",
          "eventType": "MouseEvent"
        }
      ]
    },
    {
      "supportsStyles": false,
      "type": "WebGroup",
      "displayName": "Group",
      "namePrefix": "Group",
      "palette": {
        "category": "Containers",
        "caption": "Group"
      },
      "icon": "component-panel",
      "visual": true,
      "canHaveChildren": true,
      "defaultEvent": "OnClick",
      "defaultBounds": {
        "width": 240,
        "height": 160
      },
      "defaults": {
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true,
        "aspectRatio": "none"
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 240,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 160,
          "description": "A fixed aspect ratio derives height from width. Choose none to edit the saved height rules.",
          "editorLayout": "compact",
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "A fixed aspect ratio derives height from width. Choose none to edit the saved height rules.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "description": "A fixed aspect ratio derives height from width. Choose none to edit the saved height rules.",
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "description": "A fixed aspect ratio derives height from width. Choose none to edit the saved height rules.",
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "aspectRatio",
          "label": "Aspect ratio",
          "type": "enum",
          "category": "Size & position",
          "source": "props",
          "defaultValue": "none",
          "options": [
            "none",
            "1:1",
            "4:3",
            "3:4",
            "16:9",
            "9:16"
          ],
          "description": "none allows free dimensions. A fixed ratio derives height from the responsive width.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerMode",
          "label": "Container layout",
          "type": "enum",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "align-to-parent",
            "row",
            "column"
          ],
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerPaddingTop",
          "label": "Padding top",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Padding",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerPaddingRight",
          "label": "Padding right",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Padding",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerPaddingBottom",
          "label": "Padding bottom",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Padding",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerPaddingLeft",
          "label": "Padding left",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Padding",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerGap",
          "label": "Gap",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Flow",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerWrap",
          "label": "Wrap",
          "type": "boolean",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": false,
          "inspectorGroup": "Flow",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerJustifyContent",
          "label": "Justify content",
          "type": "enum",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "space-between",
            "space-around"
          ],
          "inspectorGroup": "Alignment",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerAlignItems",
          "label": "Default alignment",
          "description": "Default cross-axis alignment for children. Each child can override it with Item alignment.",
          "type": "enum",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnClick",
          "label": "OnClick",
          "category": "Behavior",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnDblClick",
          "label": "OnDblClick",
          "category": "Behavior",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnMouseEnter",
          "label": "OnMouseEnter",
          "category": "Mouse",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnMouseLeave",
          "label": "OnMouseLeave",
          "category": "Mouse",
          "eventType": "MouseEvent"
        }
      ]
    },
    {
      "supportsFloatingPlacement": true,
      "floatingSizing": "responsive",
      "type": "WebReusableElement",
      "displayName": "Reusable Component",
      "namePrefix": "Reusable",
      "palette": {
        "category": "Containers",
        "caption": "Reusable Component"
      },
      "icon": "component-panel",
      "visual": true,
      "styleEditor": {
        "essentialProperties": [
          "textColor",
          "fontFamily",
          "fontSize",
          "fontWeight",
          "lineHeight",
          "textAlign",
          "backgroundColor",
          "borderWidth",
          "borderStyle",
          "borderColor",
          "borderRadius",
          "boxShadow"
        ]
      },
      "canHaveChildren": false,
      "defaultEvent": null,
      "defaultBounds": {
        "width": 360,
        "height": 240
      },
      "defaults": {
        "reusableElementId": "",
        "placement": "in-flow",
        "floatingHorizontalAnchor": "left",
        "floatingVerticalAnchor": "top",
        "floatingZIndex": 100,
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 360,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 240,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "Fit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "reusableElementId",
          "label": "Reusable component",
          "type": "reusable-element",
          "category": "Reusable component",
          "source": "props",
          "defaultValue": "",
          "description": "The shared component definition rendered by this instance.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "placement",
          "label": "Placement",
          "type": "enum",
          "category": "Reusable component",
          "source": "props",
          "defaultValue": "in-flow",
          "options": [
            "in-flow",
            "floating"
          ],
          "description": "Floating instances are fixed to the viewport and do not consume page flow.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "floatingHorizontalAnchor",
          "label": "Floating horizontal anchor",
          "type": "enum",
          "category": "Floating placement",
          "source": "props",
          "defaultValue": "left",
          "options": [
            "left",
            "center",
            "right"
          ],
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "floatingVerticalAnchor",
          "label": "Floating vertical anchor",
          "type": "enum",
          "category": "Floating placement",
          "source": "props",
          "defaultValue": "top",
          "options": [
            "top",
            "center",
            "bottom"
          ],
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "floatingZIndex",
          "label": "Floating layer",
          "type": "number",
          "category": "Floating placement",
          "source": "props",
          "defaultValue": 100,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": []
    },
    {
      "type": "WebLabel",
      "displayName": "Label",
      "namePrefix": "Label",
      "palette": {
        "category": "Standard",
        "caption": "Label"
      },
      "icon": "component-label",
      "visual": true,
      "styleEditor": {
        "essentialProperties": [
          "textColor",
          "fontFamily",
          "fontSize",
          "fontWeight",
          "lineHeight",
          "textAlign",
          "fontStyle",
          "letterSpacing",
          "textTransform",
          "textDecoration",
          "whiteSpace",
          "textGradient",
          "backgroundColor",
          "opacity"
        ]
      },
      "canHaveChildren": false,
      "defaultEvent": "OnClick",
      "defaultBounds": {
        "width": 80,
        "height": 24
      },
      "defaults": {
        "caption": "Label",
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true,
        "color": "#000000",
        "autoSize": true,
        "textWrap": "none"
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 80,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 24,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "Fit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "caption",
          "label": "Caption",
          "type": "string",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "Label",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "textWrap",
          "label": "Text wrap",
          "type": "enum",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "none",
          "options": [
            "none",
            "word",
            "break-word",
            "character"
          ],
          "description": "None: single line. Word: between words. Break-word: also split words wider than the Label. Character: at any character. Auto Size keeps the width and fits the height when wrapping.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "color",
          "label": "Color",
          "type": "color",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "#000000",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "autoSize",
          "label": "Auto Size",
          "type": "boolean",
          "category": "Size & position",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnClick",
          "label": "OnClick",
          "category": "Behavior",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnDblClick",
          "label": "OnDblClick",
          "category": "Behavior",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnMouseEnter",
          "label": "OnMouseEnter",
          "category": "Mouse",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnMouseLeave",
          "label": "OnMouseLeave",
          "category": "Mouse",
          "eventType": "MouseEvent"
        }
      ]
    },
    {
      "type": "WebHtml",
      "displayName": "HTML",
      "namePrefix": "Html",
      "palette": {
        "category": "Standard",
        "caption": "HTML"
      },
      "icon": "code",
      "visual": true,
      "styleEditor": {
        "essentialProperties": [
          "backgroundColor",
          "borderWidth",
          "borderStyle",
          "borderColor",
          "borderRadius",
          "boxShadow",
          "opacity",
          "paddingTop",
          "paddingRight",
          "paddingBottom",
          "paddingLeft"
        ]
      },
      "canHaveChildren": false,
      "defaultEvent": "OnLoad",
      "defaultBounds": {
        "width": 320,
        "height": 180
      },
      "defaults": {
        "html": "<p>HTML content</p>",
        "aspectRatio": "none",
        "title": "HTML content",
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 320,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 180,
          "description": "A fixed aspect ratio derives height from width. Choose none to edit the saved height rules.",
          "editorLayout": "compact",
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "A fixed aspect ratio derives height from width. Choose none to edit the saved height rules.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "description": "A fixed aspect ratio derives height from width. Choose none to edit the saved height rules.",
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "description": "A fixed aspect ratio derives height from width. Choose none to edit the saved height rules.",
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "aspectRatio",
          "label": "Aspect ratio",
          "type": "enum",
          "category": "Size & position",
          "source": "props",
          "defaultValue": "none",
          "options": [
            "none",
            "1:1",
            "4:3",
            "3:4",
            "16:9",
            "9:16"
          ],
          "description": "none allows free dimensions. A fixed ratio derives height from the responsive width.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "html",
          "label": "HTML",
          "type": "string",
          "multiline": true,
          "category": "Content",
          "source": "props",
          "defaultValue": "<p>HTML content</p>",
          "description": "HTML and CSS, or a standalone HTTPS iframe embed. Inline markup scripts do not execute.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "title",
          "label": "Title",
          "type": "string",
          "category": "Accessibility",
          "source": "props",
          "defaultValue": "HTML content",
          "description": "Accessible name of the embedded HTML document.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnLoad",
          "label": "OnLoad",
          "category": "Behavior",
          "eventType": "Event"
        }
      ]
    },
    {
      "type": "WebEdit",
      "displayName": "Edit",
      "namePrefix": "Edit",
      "palette": {
        "category": "Standard",
        "caption": "Edit"
      },
      "icon": "component-edit",
      "visual": true,
      "styleEditor": {
        "essentialProperties": [
          "textColor",
          "fontFamily",
          "fontSize",
          "fontWeight",
          "lineHeight",
          "textAlign",
          "backgroundColor",
          "borderWidth",
          "borderStyle",
          "borderColor",
          "borderRadius",
          "boxShadow",
          "paddingTop",
          "paddingRight",
          "paddingBottom",
          "paddingLeft",
          "ringWidth",
          "ringColor",
          "editLabelPosition",
          "editLabelColor",
          "editIconPosition",
          "editIconColor"
        ],
        "previewProps": {
          "value": "Sample text",
          "label": "Label",
          "icon": "search"
        }
      },
      "canHaveChildren": false,
      "defaultEvent": "OnChange",
      "defaultBounds": {
        "width": 160,
        "height": 36
      },
      "defaults": {
        "value": "",
        "label": "",
        "icon": "",
        "iconAccessibleLabel": "",
        "placeholder": "",
        "readOnly": false,
        "maskEnabled": false,
        "mask": "",
        "maskCase": "none",
        "maskTokens": {},
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true,
        "tabIndex": 0
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 160,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 36,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "Fit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "tabIndex",
          "label": "TabIndex",
          "type": "number",
          "category": "Behavior",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "label",
          "label": "Label",
          "type": "string",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "",
          "description": "Optional accessible label for this field.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "icon",
          "label": "Icon",
          "type": "icon",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "",
          "options": [
            "",
            "add",
            "chevron-down",
            "chevron-right",
            "close",
            "delete",
            "folder-open",
            "info",
            "layers",
            "lightbulb",
            "palette",
            "page",
            "play",
            "redo",
            "save",
            "search",
            "settings",
            "style",
            "undo",
            "arrow-left",
            "arrow-right",
            "arrow-up",
            "arrow-down",
            "chevron-left",
            "chevron-up",
            "chevrons-left",
            "chevrons-right",
            "chevrons-up",
            "chevrons-down",
            "menu",
            "more-horizontal",
            "more-vertical",
            "home",
            "external-link",
            "check",
            "check-circle",
            "check-square",
            "minus",
            "minus-circle",
            "plus-circle",
            "edit",
            "copy",
            "cut",
            "clipboard",
            "download",
            "upload",
            "refresh",
            "link",
            "unlink",
            "share",
            "send",
            "printer",
            "archive",
            "eye",
            "eye-off",
            "lock",
            "unlock",
            "filter",
            "sort-asc",
            "sort-desc",
            "warning",
            "alert-circle",
            "help-circle",
            "bell",
            "bookmark",
            "flag",
            "heart",
            "star",
            "folder",
            "file",
            "file-plus",
            "file-text",
            "text",
            "image",
            "camera",
            "database",
            "table",
            "list",
            "grid",
            "chart-bar",
            "chart-line",
            "code",
            "terminal",
            "cloud",
            "upload-cloud",
            "download-cloud",
            "user",
            "users",
            "user-plus",
            "mail",
            "phone",
            "globe",
            "map-pin",
            "calendar",
            "clock",
            "pause",
            "stop",
            "skip-back",
            "skip-forward",
            "volume-2",
            "volume-x",
            "video",
            "login",
            "logout",
            "sign-in",
            "sign-out",
            "door-in",
            "door-out",
            "door-open",
            "door-closed",
            "key",
            "key-round",
            "shield",
            "shield-check",
            "shield-alert",
            "shield-x",
            "fingerprint",
            "badge-check",
            "id-card",
            "user-check",
            "user-x",
            "user-minus",
            "user-round",
            "contact",
            "accessibility",
            "password",
            "at-sign",
            "scan-face",
            "circle",
            "circle-dot",
            "square",
            "move",
            "maximize",
            "minimize",
            "expand",
            "shrink",
            "fullscreen",
            "panel-left",
            "panel-right",
            "panel-top",
            "panel-bottom",
            "sidebar-left",
            "sidebar-right",
            "layout",
            "columns",
            "rows",
            "align-left",
            "align-center",
            "align-right",
            "align-justify",
            "rotate-cw",
            "rotate-ccw",
            "repeat",
            "folder-plus",
            "folder-minus",
            "folder-x",
            "folder-search",
            "folder-check",
            "folder-lock",
            "file-minus",
            "file-x",
            "file-check",
            "file-code",
            "file-image",
            "file-video",
            "file-audio",
            "file-archive",
            "file-lock",
            "file-search",
            "file-copy",
            "files",
            "hard-drive",
            "server",
            "cpu",
            "monitor",
            "laptop",
            "smartphone",
            "tablet",
            "wifi",
            "bluetooth",
            "message-circle",
            "message-square",
            "messages-square",
            "message-plus",
            "message-x",
            "inbox",
            "outbox",
            "reply",
            "reply-all",
            "forward-mail",
            "paperclip",
            "attachment",
            "rss",
            "megaphone",
            "microphone",
            "microphone-off",
            "headset",
            "radio",
            "sms",
            "cart",
            "shopping-bag",
            "credit-card",
            "receipt",
            "wallet",
            "dollar-sign",
            "percent",
            "tags",
            "gift",
            "truck",
            "building",
            "briefcase",
            "target",
            "trophy",
            "toggle-right"
          ],
          "description": "Optional icon displayed inside the field.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "iconAccessibleLabel",
          "label": "Icon accessible label",
          "type": "string",
          "category": "Accessibility",
          "source": "props",
          "defaultValue": "",
          "description": "Accessible name for the icon action. Empty uses the icon and field names.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "value",
          "label": "Value",
          "type": "string",
          "category": "Data",
          "source": "props",
          "defaultValue": "",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "placeholder",
          "label": "Placeholder",
          "type": "string",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "readOnly",
          "label": "Read Only",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": false,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "inputType",
          "label": "Input Type",
          "type": "enum",
          "category": "Behavior",
          "source": "props",
          "defaultValue": "text",
          "options": [
            "text",
            "password",
            "email",
            "number",
            "search",
            "tel",
            "url"
          ],
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "maskEnabled",
          "label": "Enable mask",
          "type": "boolean",
          "category": "Input mask",
          "source": "props",
          "defaultValue": false,
          "description": "Apply the pattern to typing, paste and values assigned by code.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "mask",
          "label": "Mask pattern",
          "type": "string",
          "category": "Input mask",
          "source": "props",
          "defaultValue": "",
          "description": "0: digit; a: letter; *: alphanumeric; #: any character. Use [optional], {min,max}, | alternatives and backslash escapes. Example: (00) 0000[0]-0000.",
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "maskCase",
          "label": "Letter case",
          "type": "enum",
          "category": "Input mask",
          "source": "props",
          "defaultValue": "none",
          "options": [
            "none",
            "upper",
            "lower"
          ],
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "maskTokens",
          "label": "Custom tokens",
          "type": "json",
          "category": "Input mask",
          "source": "props",
          "defaultValue": {},
          "description": "JSON character rules, merged with the built-ins. Example: {\"H\":{\"pattern\":\"[0-9A-Fa-f]\",\"transform\":\"upper\"}}. Each key is one character; patterns match one complete character.",
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnChange",
          "label": "OnChange",
          "category": "Behavior",
          "eventType": "Event"
        },
        {
          "name": "OnInput",
          "label": "OnInput",
          "category": "Behavior",
          "eventType": "InputEvent"
        },
        {
          "name": "OnFocus",
          "label": "OnFocus",
          "category": "Behavior",
          "eventType": "FocusEvent"
        },
        {
          "name": "OnBlur",
          "label": "OnBlur",
          "category": "Behavior",
          "eventType": "FocusEvent"
        },
        {
          "name": "OnIconClick",
          "label": "OnIconClick",
          "category": "Mouse",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnKeyDown",
          "label": "OnKeyDown",
          "category": "Keyboard",
          "eventType": "KeyboardEvent"
        },
        {
          "name": "OnKeyUp",
          "label": "OnKeyUp",
          "category": "Keyboard",
          "eventType": "KeyboardEvent"
        }
      ]
    },
    {
      "type": "WebDate",
      "displayName": "Date",
      "namePrefix": "Date",
      "palette": {
        "category": "Standard",
        "caption": "Date"
      },
      "icon": "calendar",
      "visual": true,
      "styleEditor": {
        "essentialProperties": [
          "textColor",
          "fontFamily",
          "fontSize",
          "fontWeight",
          "lineHeight",
          "textAlign",
          "backgroundColor",
          "borderWidth",
          "borderStyle",
          "borderColor",
          "borderRadius",
          "boxShadow",
          "paddingTop",
          "paddingRight",
          "paddingBottom",
          "paddingLeft",
          "ringWidth",
          "ringColor"
        ],
        "previewProps": {
          "value": "2026-11-03T14:30",
          "mode": "datetime"
        }
      },
      "canHaveChildren": false,
      "defaultEvent": "OnChange",
      "defaultBounds": {
        "width": 240,
        "height": 36
      },
      "defaults": {
        "mode": "date",
        "dateFormat": "dd/MM/yyyy",
        "value": "",
        "min": "",
        "max": "",
        "showSeconds": false,
        "showCalendar": true,
        "placeholder": "",
        "accessibleLabel": "",
        "required": false,
        "readOnly": false,
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true,
        "tabIndex": 0
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 240,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 36,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "Fit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "tabIndex",
          "label": "TabIndex",
          "type": "number",
          "category": "Behavior",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "mode",
          "label": "Mode",
          "type": "enum",
          "category": "Date & time",
          "source": "props",
          "defaultValue": "date",
          "options": [
            "date",
            "datetime"
          ],
          "description": "Date only, or a local date and time without automatic UTC conversion.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "dateFormat",
          "label": "Date format",
          "type": "enum",
          "category": "Date & time",
          "source": "props",
          "defaultValue": "dd/MM/yyyy",
          "options": [
            "dd/MM/yyyy",
            "MM/dd/yyyy",
            "yyyy-MM-dd"
          ],
          "description": "Display and typing mask. The canonical value always uses ISO calendar fields.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "showSeconds",
          "label": "Show seconds",
          "type": "boolean",
          "category": "Date & time",
          "source": "props",
          "defaultValue": false,
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "value",
          "label": "Value",
          "type": "string",
          "category": "Data",
          "source": "props",
          "defaultValue": "",
          "description": "Empty, YYYY-MM-DD, or local YYYY-MM-DDTHH:mm[:ss]. The display uses the selected mask.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "min",
          "label": "Minimum",
          "type": "string",
          "category": "Validation",
          "source": "props",
          "defaultValue": "",
          "description": "Inclusive lower limit in local ISO format; empty removes the limit.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "max",
          "label": "Maximum",
          "type": "string",
          "category": "Validation",
          "source": "props",
          "defaultValue": "",
          "description": "Inclusive upper limit in local ISO format; empty removes the limit.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "required",
          "label": "Required",
          "type": "boolean",
          "category": "Validation",
          "source": "props",
          "defaultValue": false,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "readOnly",
          "label": "Read Only",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": false,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "showCalendar",
          "label": "Show calendar",
          "type": "boolean",
          "category": "Appearance",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "placeholder",
          "label": "Placeholder",
          "type": "string",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "",
          "description": "Empty displays the selected mask.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "accessibleLabel",
          "label": "Accessible label",
          "type": "string",
          "category": "Accessibility",
          "source": "props",
          "defaultValue": "",
          "description": "Empty uses the component name.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnChange",
          "label": "OnChange",
          "category": "Behavior",
          "eventType": "Event"
        },
        {
          "name": "OnInput",
          "label": "OnInput",
          "category": "Behavior",
          "eventType": "InputEvent"
        },
        {
          "name": "OnFocus",
          "label": "OnFocus",
          "category": "Behavior",
          "eventType": "FocusEvent"
        },
        {
          "name": "OnBlur",
          "label": "OnBlur",
          "category": "Behavior",
          "eventType": "FocusEvent"
        },
        {
          "name": "OnKeyDown",
          "label": "OnKeyDown",
          "category": "Keyboard",
          "eventType": "KeyboardEvent"
        },
        {
          "name": "OnKeyUp",
          "label": "OnKeyUp",
          "category": "Keyboard",
          "eventType": "KeyboardEvent"
        }
      ]
    },
    {
      "type": "WebTextArea",
      "displayName": "Text Area",
      "namePrefix": "TextArea",
      "palette": {
        "category": "Standard",
        "caption": "Text Area"
      },
      "icon": "component-text-area",
      "visual": true,
      "styleEditor": {
        "essentialProperties": [
          "textColor",
          "fontFamily",
          "fontSize",
          "fontWeight",
          "lineHeight",
          "textAlign",
          "backgroundColor",
          "borderWidth",
          "borderStyle",
          "borderColor",
          "borderRadius",
          "boxShadow",
          "paddingTop",
          "paddingRight",
          "paddingBottom",
          "paddingLeft",
          "ringWidth",
          "ringColor"
        ],
        "previewProps": {
          "value": "Sample text\nSee how your text style looks across multiple lines."
        }
      },
      "canHaveChildren": false,
      "defaultEvent": "OnChange",
      "defaultBounds": {
        "width": 240,
        "height": 96
      },
      "defaults": {
        "value": "",
        "placeholder": "",
        "readOnly": false,
        "rows": 4,
        "spellCheck": true,
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true,
        "tabIndex": 0
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 240,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 96,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "Fit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "tabIndex",
          "label": "TabIndex",
          "type": "number",
          "category": "Behavior",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "value",
          "label": "Value",
          "type": "string",
          "category": "Data",
          "source": "props",
          "defaultValue": "",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "placeholder",
          "label": "Placeholder",
          "type": "string",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "readOnly",
          "label": "Read Only",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": false,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "rows",
          "label": "Rows",
          "type": "number",
          "category": "Size & position",
          "source": "props",
          "defaultValue": 4,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "spellCheck",
          "label": "Spell Check",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnChange",
          "label": "OnChange",
          "category": "Behavior",
          "eventType": "Event"
        },
        {
          "name": "OnInput",
          "label": "OnInput",
          "category": "Behavior",
          "eventType": "InputEvent"
        },
        {
          "name": "OnFocus",
          "label": "OnFocus",
          "category": "Behavior",
          "eventType": "FocusEvent"
        },
        {
          "name": "OnBlur",
          "label": "OnBlur",
          "category": "Behavior",
          "eventType": "FocusEvent"
        },
        {
          "name": "OnKeyDown",
          "label": "OnKeyDown",
          "category": "Keyboard",
          "eventType": "KeyboardEvent"
        },
        {
          "name": "OnKeyUp",
          "label": "OnKeyUp",
          "category": "Keyboard",
          "eventType": "KeyboardEvent"
        }
      ]
    },
    {
      "type": "WebButton",
      "displayName": "Button",
      "namePrefix": "Button",
      "palette": {
        "category": "Standard",
        "caption": "Button"
      },
      "icon": "component-button",
      "visual": true,
      "styleEditor": {
        "essentialProperties": [
          "textColor",
          "fontFamily",
          "fontSize",
          "fontWeight",
          "lineHeight",
          "textAlign",
          "backgroundColor",
          "borderWidth",
          "borderStyle",
          "borderColor",
          "borderRadius",
          "boxShadow",
          "paddingTop",
          "paddingRight",
          "paddingBottom",
          "paddingLeft",
          "buttonContentMode",
          "buttonIconPosition",
          "buttonIconSize",
          "buttonIconColor",
          "cursor"
        ]
      },
      "canHaveChildren": false,
      "defaultEvent": "OnClick",
      "defaultBounds": {
        "width": 100,
        "height": 36
      },
      "defaults": {
        "caption": "Button",
        "icon": "add",
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true,
        "tabIndex": 0
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 100,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 36,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "Fit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "tabIndex",
          "label": "TabIndex",
          "type": "number",
          "category": "Behavior",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "caption",
          "label": "Caption",
          "type": "string",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "Button",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "icon",
          "label": "Icon",
          "type": "icon",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "add",
          "options": [
            "add",
            "chevron-down",
            "chevron-right",
            "close",
            "delete",
            "folder-open",
            "info",
            "layers",
            "lightbulb",
            "palette",
            "page",
            "play",
            "redo",
            "save",
            "search",
            "settings",
            "style",
            "undo",
            "arrow-left",
            "arrow-right",
            "arrow-up",
            "arrow-down",
            "chevron-left",
            "chevron-up",
            "chevrons-left",
            "chevrons-right",
            "chevrons-up",
            "chevrons-down",
            "menu",
            "more-horizontal",
            "more-vertical",
            "home",
            "external-link",
            "check",
            "check-circle",
            "check-square",
            "minus",
            "minus-circle",
            "plus-circle",
            "edit",
            "copy",
            "cut",
            "clipboard",
            "download",
            "upload",
            "refresh",
            "link",
            "unlink",
            "share",
            "send",
            "printer",
            "archive",
            "eye",
            "eye-off",
            "lock",
            "unlock",
            "filter",
            "sort-asc",
            "sort-desc",
            "warning",
            "alert-circle",
            "help-circle",
            "bell",
            "bookmark",
            "flag",
            "heart",
            "star",
            "folder",
            "file",
            "file-plus",
            "file-text",
            "text",
            "image",
            "camera",
            "database",
            "table",
            "list",
            "grid",
            "chart-bar",
            "chart-line",
            "code",
            "terminal",
            "cloud",
            "upload-cloud",
            "download-cloud",
            "user",
            "users",
            "user-plus",
            "mail",
            "phone",
            "globe",
            "map-pin",
            "calendar",
            "clock",
            "pause",
            "stop",
            "skip-back",
            "skip-forward",
            "volume-2",
            "volume-x",
            "video",
            "login",
            "logout",
            "sign-in",
            "sign-out",
            "door-in",
            "door-out",
            "door-open",
            "door-closed",
            "key",
            "key-round",
            "shield",
            "shield-check",
            "shield-alert",
            "shield-x",
            "fingerprint",
            "badge-check",
            "id-card",
            "user-check",
            "user-x",
            "user-minus",
            "user-round",
            "contact",
            "accessibility",
            "password",
            "at-sign",
            "scan-face",
            "circle",
            "circle-dot",
            "square",
            "move",
            "maximize",
            "minimize",
            "expand",
            "shrink",
            "fullscreen",
            "panel-left",
            "panel-right",
            "panel-top",
            "panel-bottom",
            "sidebar-left",
            "sidebar-right",
            "layout",
            "columns",
            "rows",
            "align-left",
            "align-center",
            "align-right",
            "align-justify",
            "rotate-cw",
            "rotate-ccw",
            "repeat",
            "folder-plus",
            "folder-minus",
            "folder-x",
            "folder-search",
            "folder-check",
            "folder-lock",
            "file-minus",
            "file-x",
            "file-check",
            "file-code",
            "file-image",
            "file-video",
            "file-audio",
            "file-archive",
            "file-lock",
            "file-search",
            "file-copy",
            "files",
            "hard-drive",
            "server",
            "cpu",
            "monitor",
            "laptop",
            "smartphone",
            "tablet",
            "wifi",
            "bluetooth",
            "message-circle",
            "message-square",
            "messages-square",
            "message-plus",
            "message-x",
            "inbox",
            "outbox",
            "reply",
            "reply-all",
            "forward-mail",
            "paperclip",
            "attachment",
            "rss",
            "megaphone",
            "microphone",
            "microphone-off",
            "headset",
            "radio",
            "sms",
            "cart",
            "shopping-bag",
            "credit-card",
            "receipt",
            "wallet",
            "dollar-sign",
            "percent",
            "tags",
            "gift",
            "truck",
            "building",
            "briefcase",
            "target",
            "trophy",
            "toggle-right"
          ],
          "description": "Choose the icon used by this button when its style shows an icon.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnClick",
          "label": "OnClick",
          "category": "Behavior",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnFocus",
          "label": "OnFocus",
          "category": "Behavior",
          "eventType": "FocusEvent"
        },
        {
          "name": "OnBlur",
          "label": "OnBlur",
          "category": "Behavior",
          "eventType": "FocusEvent"
        },
        {
          "name": "OnMouseEnter",
          "label": "OnMouseEnter",
          "category": "Mouse",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnMouseLeave",
          "label": "OnMouseLeave",
          "category": "Mouse",
          "eventType": "MouseEvent"
        }
      ]
    },
    {
      "type": "WebCheckBox",
      "displayName": "Check Box",
      "namePrefix": "CheckBox",
      "palette": {
        "category": "Standard",
        "caption": "Check Box"
      },
      "icon": "component-check-box",
      "visual": true,
      "styleEditor": {
        "essentialProperties": [
          "textColor",
          "fontFamily",
          "fontSize",
          "fontWeight",
          "lineHeight",
          "textAlign",
          "backgroundColor",
          "borderWidth",
          "borderStyle",
          "borderColor",
          "borderRadius",
          "cursor",
          "ringWidth",
          "ringColor"
        ]
      },
      "canHaveChildren": false,
      "defaultEvent": "OnChange",
      "defaultBounds": {
        "width": 120,
        "height": 24
      },
      "defaults": {
        "caption": "Check Box",
        "checked": false,
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true,
        "tabIndex": 0
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 120,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 24,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "Fit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "tabIndex",
          "label": "TabIndex",
          "type": "number",
          "category": "Behavior",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "caption",
          "label": "Caption",
          "type": "string",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "Check Box",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "checked",
          "label": "Checked",
          "type": "boolean",
          "category": "Data",
          "source": "props",
          "defaultValue": false,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnChange",
          "label": "OnChange",
          "category": "Behavior",
          "eventType": "Event"
        },
        {
          "name": "OnClick",
          "label": "OnClick",
          "category": "Behavior",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnFocus",
          "label": "OnFocus",
          "category": "Behavior",
          "eventType": "FocusEvent"
        },
        {
          "name": "OnBlur",
          "label": "OnBlur",
          "category": "Behavior",
          "eventType": "FocusEvent"
        }
      ]
    },
    {
      "type": "WebToggle",
      "displayName": "Toggle",
      "namePrefix": "Toggle",
      "palette": {
        "category": "Standard",
        "caption": "Toggle"
      },
      "icon": "component-toggle",
      "visual": true,
      "canHaveChildren": false,
      "defaultEvent": "OnChange",
      "styleEditor": {
        "essentialProperties": [
          "backgroundColor",
          "backgroundGradient",
          "toggleCheckedColor",
          "toggleThumbColor",
          "borderWidth",
          "borderStyle",
          "borderColor",
          "borderRadius",
          "boxShadow",
          "cursor",
          "ringWidth",
          "ringColor",
          "opacity"
        ]
      },
      "defaultBounds": {
        "width": 48,
        "height": 26
      },
      "defaults": {
        "checked": false,
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true,
        "tabIndex": 0
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 48,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 26,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "Fit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "tabIndex",
          "label": "TabIndex",
          "type": "number",
          "category": "Behavior",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "checked",
          "label": "Checked",
          "type": "boolean",
          "category": "Data",
          "source": "props",
          "defaultValue": false,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnChange",
          "label": "OnChange",
          "category": "Behavior",
          "eventType": "Event"
        },
        {
          "name": "OnClick",
          "label": "OnClick",
          "category": "Behavior",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnFocus",
          "label": "OnFocus",
          "category": "Behavior",
          "eventType": "FocusEvent"
        },
        {
          "name": "OnBlur",
          "label": "OnBlur",
          "category": "Behavior",
          "eventType": "FocusEvent"
        }
      ]
    },
    {
      "type": "WebProgressBar",
      "displayName": "ProgressBar",
      "namePrefix": "ProgressBar",
      "palette": {
        "category": "Standard",
        "caption": "ProgressBar"
      },
      "icon": "chart-bar",
      "visual": true,
      "canHaveChildren": false,
      "defaultEvent": "OnChange",
      "defaultBounds": {
        "width": 240,
        "height": 28
      },
      "defaults": {
        "format": "bars",
        "min": 0,
        "max": 100,
        "value": 50,
        "showValue": true,
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true
      },
      "styleEditor": {
        "essentialProperties": [
          "progressColor",
          "progressTrackColor",
          "progressThickness",
          "textColor",
          "fontFamily",
          "fontSize",
          "fontWeight",
          "lineHeight",
          "textAlign",
          "borderRadius",
          "backgroundColor",
          "borderWidth",
          "borderColor",
          "borderStyle",
          "borderGradient",
          "opacity"
        ]
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 240,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 28,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "Fit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "format",
          "label": "Format",
          "type": "enum",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "bars",
          "options": [
            "bars",
            "dunnet",
            "circus"
          ],
          "description": "bars: horizontal bar; dunnet: donut ring; circus: filled circle.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "min",
          "label": "Minimum",
          "type": "number",
          "category": "Progress",
          "source": "props",
          "defaultValue": 0,
          "description": "Finite progress value. Maximum must exceed minimum; the displayed value is clamped to the range.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "max",
          "label": "Maximum",
          "type": "number",
          "category": "Progress",
          "source": "props",
          "defaultValue": 100,
          "description": "Finite progress value. Maximum must exceed minimum; the displayed value is clamped to the range.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "value",
          "label": "Value",
          "type": "number",
          "category": "Progress",
          "source": "props",
          "defaultValue": 50,
          "description": "Finite progress value. Maximum must exceed minimum; the displayed value is clamped to the range.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "showValue",
          "label": "Show percentage",
          "type": "boolean",
          "category": "Appearance",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnChange",
          "label": "OnChange",
          "category": "Behavior",
          "eventType": "Event"
        },
        {
          "name": "OnClick",
          "label": "OnClick",
          "category": "Behavior",
          "eventType": "MouseEvent"
        }
      ]
    },
    {
      "type": "WebIcon",
      "displayName": "Icons",
      "namePrefix": "Icon",
      "palette": {
        "category": "Standard",
        "caption": "Icons"
      },
      "icon": "star",
      "visual": true,
      "canHaveChildren": false,
      "defaultEvent": "OnClick",
      "defaultBounds": {
        "width": 32,
        "height": 32
      },
      "defaults": {
        "icon": "star",
        "mode": "icon",
        "accessibleLabel": "",
        "strokeWidth": 2,
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true,
        "tabIndex": 0
      },
      "styleEditor": {
        "essentialProperties": [
          "textColor",
          "backgroundColor",
          "borderWidth",
          "borderStyle",
          "borderColor",
          "borderRadius",
          "boxShadow",
          "ringWidth",
          "ringColor",
          "opacity"
        ]
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 32,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 32,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "Fit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "tabIndex",
          "label": "TabIndex",
          "type": "number",
          "category": "Behavior",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "icon",
          "label": "Icon",
          "type": "icon",
          "iconLibrary": "lucide",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "star",
          "options": [
            "a-arrow-down",
            "a-arrow-up",
            "a-large-small",
            "accessibility",
            "activity",
            "ad",
            "air-vent",
            "airplay",
            "alarm-clock-check",
            "alarm-clock-minus",
            "alarm-clock-off",
            "alarm-clock-plus",
            "alarm-clock",
            "alarm-smoke",
            "align-center-horizontal",
            "align-center-vertical",
            "align-end-horizontal",
            "align-end-vertical",
            "align-horizontal-distribute-center",
            "align-horizontal-distribute-end",
            "align-horizontal-distribute-start",
            "align-horizontal-justify-center",
            "align-horizontal-justify-end",
            "align-horizontal-justify-start",
            "align-horizontal-space-around",
            "align-horizontal-space-between",
            "align-start-horizontal",
            "align-start-vertical",
            "align-vertical-distribute-center",
            "align-vertical-distribute-end",
            "align-vertical-distribute-start",
            "align-vertical-justify-center",
            "align-vertical-justify-end",
            "align-vertical-justify-start",
            "align-vertical-space-around",
            "align-vertical-space-between",
            "ambulance",
            "ampersand",
            "ampersands",
            "amphora",
            "anchor",
            "angle",
            "antenna",
            "anvil",
            "aperture",
            "app-window-mac",
            "app-window",
            "apple",
            "archive-restore",
            "archive-x",
            "archive",
            "armchair",
            "armenian-dram",
            "arrow-big-down-dash",
            "arrow-big-down",
            "arrow-big-left-dash",
            "arrow-big-left",
            "arrow-big-right-dash",
            "arrow-big-right",
            "arrow-big-up-dash",
            "arrow-big-up",
            "arrow-down-0-1",
            "arrow-down-1-0",
            "arrow-down-a-z",
            "arrow-down-from-line",
            "arrow-down-left",
            "arrow-down-narrow-wide",
            "arrow-down-right",
            "arrow-down-to-dot",
            "arrow-down-to-line",
            "arrow-down-up",
            "arrow-down-wide-narrow",
            "arrow-down-z-a",
            "arrow-down",
            "arrow-left-from-line",
            "arrow-left-right",
            "arrow-left-to-line",
            "arrow-left",
            "arrow-right-from-line",
            "arrow-right-left",
            "arrow-right-to-line",
            "arrow-right",
            "arrow-up-0-1",
            "arrow-up-1-0",
            "arrow-up-a-z",
            "arrow-up-down",
            "arrow-up-from-dot",
            "arrow-up-from-line",
            "arrow-up-left",
            "arrow-up-narrow-wide",
            "arrow-up-right",
            "arrow-up-to-line",
            "arrow-up-wide-narrow",
            "arrow-up-z-a",
            "arrow-up",
            "arrows-up-from-line",
            "asterisk",
            "astroid",
            "at-sign",
            "atom",
            "audio-lines-off",
            "audio-lines-x",
            "audio-lines",
            "audio-waveform",
            "avocado",
            "award",
            "axe",
            "axis-3d",
            "baby",
            "backpack",
            "bacon",
            "badge-alert",
            "badge-cent",
            "badge-check",
            "badge-dollar-sign",
            "badge-euro",
            "badge-indian-rupee",
            "badge-info",
            "badge-japanese-yen",
            "badge-minus",
            "badge-percent",
            "badge-plus",
            "badge-pound-sterling",
            "badge-question-mark",
            "badge-russian-ruble",
            "badge-swiss-franc",
            "badge-turkish-lira",
            "badge-x",
            "badge",
            "baggage-claim",
            "balloon",
            "ban",
            "banana",
            "bandage",
            "bangladeshi-taka",
            "banknote-arrow-down",
            "banknote-arrow-up",
            "banknote-check",
            "banknote-x",
            "banknote",
            "barcode",
            "barrel",
            "baseline",
            "bath",
            "battery-charging",
            "battery-full",
            "battery-low",
            "battery-medium",
            "battery-plus",
            "battery-warning",
            "battery",
            "beaker",
            "bean-off",
            "bean",
            "bed-double",
            "bed-single",
            "bed",
            "beef-off",
            "beef",
            "beer-off",
            "beer",
            "belarusian-ruble",
            "bell-check",
            "bell-dot",
            "bell-electric",
            "bell-minus",
            "bell-off",
            "bell-plus",
            "bell-ring",
            "bell",
            "between-horizontal-end",
            "between-horizontal-start",
            "between-vertical-end",
            "between-vertical-start",
            "biceps-flexed",
            "bike",
            "binary",
            "binoculars",
            "biohazard",
            "bird",
            "birdhouse",
            "bitcoin",
            "blend",
            "blender",
            "blinds",
            "blocks",
            "bluetooth-connected",
            "bluetooth-off",
            "bluetooth-searching",
            "bluetooth",
            "bold",
            "bolt",
            "bomb",
            "bone-fracture",
            "bone",
            "book-a",
            "book-alert",
            "book-audio",
            "book-bookmark",
            "book-check",
            "book-copy",
            "book-dashed",
            "book-down",
            "book-headphones",
            "book-heart",
            "book-image",
            "book-key",
            "book-lock",
            "book-minus",
            "book-open-check",
            "book-open-text",
            "book-open",
            "book-plus",
            "book-search",
            "book-text",
            "book-type",
            "book-up-2",
            "book-up",
            "book-user",
            "book-x",
            "book",
            "bookmark-check",
            "bookmark-minus",
            "bookmark-off",
            "bookmark-plus",
            "bookmark-x",
            "bookmark",
            "boom-box",
            "bot-message-square",
            "bot-off",
            "bot",
            "bottle-wine",
            "bow-arrow",
            "box",
            "boxes",
            "braces",
            "brackets",
            "brain-circuit",
            "brain-cog",
            "brain-off",
            "brain",
            "brick-wall-fire",
            "brick-wall-shield",
            "brick-wall",
            "bridge",
            "briefcase-business",
            "briefcase-conveyor-belt",
            "briefcase-medical",
            "briefcase-plus",
            "briefcase",
            "bring-to-front",
            "broccoli",
            "broom-sparkles",
            "broom",
            "brush-cleaning",
            "brush",
            "bubbles",
            "bug-off",
            "bug-play",
            "bug",
            "building-complex-plus",
            "building-complex",
            "building",
            "bus-front",
            "bus",
            "cable-car",
            "cable",
            "cake-slice",
            "cake",
            "calculator",
            "calendar-1",
            "calendar-arrow-down",
            "calendar-arrow-up",
            "calendar-check-2",
            "calendar-check",
            "calendar-chevrons-left",
            "calendar-chevrons-right",
            "calendar-clock",
            "calendar-cog",
            "calendar-days",
            "calendar-fold",
            "calendar-heart",
            "calendar-minus-2",
            "calendar-minus",
            "calendar-off",
            "calendar-plus-2",
            "calendar-plus",
            "calendar-range",
            "calendar-search",
            "calendar-sync",
            "calendar-x-2",
            "calendar-x",
            "calendar",
            "calendars",
            "camera-off",
            "camera",
            "can-soda",
            "can",
            "candy-cane",
            "candy-off",
            "candy",
            "cannabis-off",
            "cannabis",
            "captions-off",
            "captions",
            "car-battery",
            "car-front",
            "car-taxi-front",
            "car",
            "caravan",
            "card-sim",
            "carrot",
            "carton-off",
            "carton",
            "case-lower",
            "case-sensitive",
            "case-upper",
            "cassette-tape",
            "cast",
            "castle",
            "cat",
            "cctv-off",
            "cctv",
            "certificate",
            "chart-area",
            "chart-bar-big",
            "chart-bar-decreasing",
            "chart-bar-increasing",
            "chart-bar-stacked",
            "chart-bar",
            "chart-candlestick",
            "chart-column-big",
            "chart-column-decreasing",
            "chart-column-increasing",
            "chart-column-stacked",
            "chart-column",
            "chart-gantt",
            "chart-line",
            "chart-network",
            "chart-no-axes-column-decreasing",
            "chart-no-axes-column-increasing",
            "chart-no-axes-column",
            "chart-no-axes-combined",
            "chart-no-axes-gantt",
            "chart-pie",
            "chart-scatter",
            "chart-spline",
            "check-check",
            "check-line",
            "check",
            "chef-hat",
            "cherry",
            "chess-bishop",
            "chess-king",
            "chess-knight",
            "chess-pawn",
            "chess-queen",
            "chess-rook",
            "chevron-down",
            "chevron-first",
            "chevron-last",
            "chevron-left",
            "chevron-right",
            "chevron-up",
            "chevrons-down-up",
            "chevrons-down",
            "chevrons-left-right-ellipsis",
            "chevrons-left-right",
            "chevrons-left",
            "chevrons-right-left",
            "chevrons-right",
            "chevrons-up-down",
            "chevrons-up",
            "church",
            "cigarette-off",
            "cigarette",
            "circle-alert",
            "circle-arrow-down",
            "circle-arrow-left",
            "circle-arrow-out-down-left",
            "circle-arrow-out-down-right",
            "circle-arrow-out-up-left",
            "circle-arrow-out-up-right",
            "circle-arrow-right",
            "circle-arrow-up",
            "circle-check-big",
            "circle-check",
            "circle-chevron-down",
            "circle-chevron-left",
            "circle-chevron-right",
            "circle-chevron-up",
            "circle-chevrons-down",
            "circle-chevrons-left",
            "circle-chevrons-right",
            "circle-chevrons-up",
            "circle-dashed-check",
            "circle-dashed",
            "circle-divide",
            "circle-dollar-sign",
            "circle-dot-dashed",
            "circle-dot",
            "circle-ellipsis",
            "circle-equal",
            "circle-euro",
            "circle-fading-arrow-up",
            "circle-fading-play",
            "circle-fading-plus",
            "circle-gauge",
            "circle-minus",
            "circle-off",
            "circle-parking-off",
            "circle-parking",
            "circle-pause",
            "circle-percent",
            "circle-pile",
            "circle-play",
            "circle-plus",
            "circle-pound-sterling",
            "circle-power",
            "circle-question-mark",
            "circle-slash-2",
            "circle-slash",
            "circle-small",
            "circle-star",
            "circle-stop",
            "circle-user-round",
            "circle-user",
            "circle-x",
            "circle",
            "circuit-board",
            "citrus",
            "clapperboard",
            "clef-alto",
            "clef-bass",
            "clef-treble",
            "clipboard-check",
            "clipboard-clock",
            "clipboard-copy",
            "clipboard-list",
            "clipboard-minus",
            "clipboard-paste",
            "clipboard-pen-line",
            "clipboard-pen",
            "clipboard-plus",
            "clipboard-type",
            "clipboard-x",
            "clipboard",
            "clock-1",
            "clock-10",
            "clock-11",
            "clock-12",
            "clock-2",
            "clock-3",
            "clock-4",
            "clock-5",
            "clock-6",
            "clock-7",
            "clock-8",
            "clock-9",
            "clock-alert",
            "clock-arrow-down",
            "clock-arrow-left",
            "clock-arrow-right",
            "clock-arrow-up",
            "clock-check",
            "clock-fading",
            "clock-plus",
            "clock",
            "closed-caption",
            "cloud-alert",
            "cloud-backup",
            "cloud-check",
            "cloud-cog",
            "cloud-download",
            "cloud-drizzle",
            "cloud-fog",
            "cloud-hail",
            "cloud-lightning",
            "cloud-moon-rain",
            "cloud-moon",
            "cloud-off",
            "cloud-rain-wind",
            "cloud-rain",
            "cloud-snow",
            "cloud-sun-rain",
            "cloud-sun",
            "cloud-sync",
            "cloud-upload",
            "cloud",
            "cloudy",
            "clover",
            "club",
            "code-xml",
            "code",
            "coffee",
            "cog",
            "coins",
            "columns-2",
            "columns-3-cog",
            "columns-3",
            "columns-4",
            "combine",
            "command",
            "compass",
            "component",
            "computer",
            "concierge-bell",
            "cone",
            "construction",
            "contact-round",
            "contact",
            "container",
            "contrast",
            "cookie",
            "cooking-pot",
            "copy-check",
            "copy-minus",
            "copy-plus",
            "copy-slash",
            "copy-x",
            "copy",
            "copyleft",
            "copyright",
            "corner-down-left",
            "corner-down-right",
            "corner-left-down",
            "corner-left-up",
            "corner-right-down",
            "corner-right-up",
            "corner-up-left",
            "corner-up-right",
            "cpu-ai",
            "cpu",
            "creative-commons",
            "credit-card-check",
            "credit-card-minus",
            "credit-card-plus",
            "credit-card-reader",
            "credit-card-x",
            "credit-card",
            "croissant",
            "crop",
            "cross",
            "crosshair",
            "crown",
            "cuboid",
            "cup-soda",
            "cupcake",
            "currency",
            "cylinder",
            "dam",
            "database-arrow-down",
            "database-arrow-up",
            "database-backup",
            "database-check",
            "database-minus",
            "database-plus",
            "database-search",
            "database-x",
            "database-zap",
            "database",
            "decimals-arrow-left",
            "decimals-arrow-right",
            "delete",
            "dessert",
            "diameter",
            "diamond-minus",
            "diamond-percent",
            "diamond-plus",
            "diamond",
            "dice-1",
            "dice-2",
            "dice-3",
            "dice-4",
            "dice-5",
            "dice-6",
            "dices",
            "diff",
            "disc-2",
            "disc-3",
            "disc-album",
            "disc",
            "divide",
            "dna-off",
            "dna",
            "dock",
            "dog",
            "dollar-sign",
            "dome",
            "donut",
            "door-closed-cog",
            "door-closed-locked",
            "door-closed-package",
            "door-closed",
            "door-open",
            "door-stairwell",
            "dot",
            "download",
            "drafting-compass",
            "drama",
            "drill",
            "drone",
            "droplet-off",
            "droplet",
            "droplets",
            "drum",
            "drumstick",
            "dumbbell",
            "ear-off",
            "ear",
            "earth-lock",
            "earth",
            "eclipse",
            "egg-fried",
            "egg-off",
            "egg",
            "eighth-note",
            "eighth-notes",
            "eject",
            "ellipse",
            "ellipsis-vertical",
            "ellipsis",
            "engine",
            "equal-approximately-not",
            "equal-approximately",
            "equal-not",
            "equal",
            "eraser",
            "ethernet-port",
            "euro",
            "ev-charger",
            "expand",
            "external-link",
            "eye-closed",
            "eye-dashed",
            "eye-off",
            "eye",
            "face-angry",
            "face-expressionless",
            "face-grinning",
            "face-neutral",
            "face-slightly-frowning",
            "face-slightly-smiling-plus",
            "face-slightly-smiling",
            "factory",
            "fan",
            "fast-forward",
            "faucet",
            "feather",
            "fence",
            "ferris-wheel",
            "file-archive",
            "file-axis-3d",
            "file-badge",
            "file-box",
            "file-braces-corner",
            "file-braces",
            "file-chart-column-increasing",
            "file-chart-column",
            "file-chart-line",
            "file-chart-pie",
            "file-check-corner",
            "file-check",
            "file-clock",
            "file-code-corner",
            "file-code",
            "file-cog",
            "file-diff",
            "file-digit",
            "file-down",
            "file-exclamation-point",
            "file-headphone",
            "file-heart",
            "file-image",
            "file-input",
            "file-key",
            "file-lock",
            "file-minus-corner",
            "file-minus",
            "file-music",
            "file-output",
            "file-pen-line",
            "file-pen",
            "file-play",
            "file-plus-corner",
            "file-plus",
            "file-question-mark",
            "file-scan",
            "file-search-corner",
            "file-search",
            "file-signal",
            "file-sliders",
            "file-spreadsheet",
            "file-stack",
            "file-symlink",
            "file-terminal",
            "file-text",
            "file-type-corner",
            "file-type",
            "file-up",
            "file-user",
            "file-video-camera",
            "file-volume",
            "file-x-corner",
            "file-x",
            "file",
            "files",
            "film",
            "fingerprint-pattern",
            "fire-extinguisher",
            "fish-off",
            "fish-symbol",
            "fish",
            "fishing-hook",
            "fishing-rod",
            "flag-off",
            "flag-triangle-left",
            "flag-triangle-right",
            "flag",
            "flame-kindling",
            "flame",
            "flashlight-off",
            "flashlight",
            "flask-conical-off",
            "flask-conical",
            "flask-round",
            "flower-2",
            "flower",
            "focus",
            "fold-horizontal",
            "fold-vertical",
            "folder-archive",
            "folder-bookmark",
            "folder-check",
            "folder-clock",
            "folder-closed",
            "folder-code",
            "folder-cog",
            "folder-dot",
            "folder-down",
            "folder-git-2",
            "folder-git",
            "folder-heart",
            "folder-input",
            "folder-kanban",
            "folder-key",
            "folder-lock",
            "folder-minus",
            "folder-open-dot",
            "folder-open",
            "folder-output",
            "folder-pen",
            "folder-plus",
            "folder-root",
            "folder-search-2",
            "folder-search",
            "folder-symlink",
            "folder-sync",
            "folder-tree",
            "folder-up",
            "folder-user",
            "folder-users",
            "folder-x",
            "folder",
            "folders",
            "footprints",
            "forklift",
            "form",
            "forward",
            "frame",
            "fuel",
            "fullscreen",
            "funnel-plus",
            "funnel-x",
            "funnel",
            "galaxy",
            "gallery-horizontal-end",
            "gallery-horizontal",
            "gallery-thumbnails",
            "gallery-vertical-end",
            "gallery-vertical",
            "gamepad-2",
            "gamepad-directional",
            "gamepad",
            "gap-horizontal",
            "gap-vertical",
            "gauge",
            "gavel",
            "gem",
            "georgian-lari",
            "germ-off",
            "germ",
            "ghost",
            "gift",
            "git-branch-minus",
            "git-branch-plus",
            "git-branch",
            "git-commit-horizontal",
            "git-commit-vertical",
            "git-compare-arrows",
            "git-compare",
            "git-fork",
            "git-graph",
            "git-merge-conflict",
            "git-merge",
            "git-pull-request-arrow",
            "git-pull-request-closed",
            "git-pull-request-create-arrow",
            "git-pull-request-create",
            "git-pull-request-draft",
            "git-pull-request",
            "glass-water",
            "glasses",
            "globe-check",
            "globe-code",
            "globe-lock",
            "globe-off",
            "globe-x",
            "globe",
            "goal",
            "gpu",
            "graduation-cap",
            "grape",
            "graph-hub",
            "graph-star",
            "grid-2x2-check",
            "grid-2x2-plus",
            "grid-2x2-x",
            "grid-2x2",
            "grid-3x2",
            "grid-3x3",
            "grip-horizontal",
            "grip-vertical",
            "grip",
            "groceries",
            "group",
            "guitar-electric",
            "guitar",
            "half-note",
            "ham",
            "hamburger",
            "hammer",
            "hand-coins",
            "hand-fist",
            "hand-grab",
            "hand-heart",
            "hand-helping",
            "hand-metal",
            "hand-platter",
            "hand",
            "handbag",
            "handle-bottom-right",
            "handshake",
            "hard-drive-download",
            "hard-drive-upload",
            "hard-drive",
            "hard-hat",
            "hash",
            "hat-glasses",
            "haze",
            "hd",
            "hdmi-port",
            "heading-1",
            "heading-2",
            "heading-3",
            "heading-4",
            "heading-5",
            "heading-6",
            "heading",
            "headphone-off",
            "headphones",
            "headset",
            "heart-crack",
            "heart-handshake",
            "heart-minus",
            "heart-off",
            "heart-plus",
            "heart-pulse",
            "heart-x",
            "heart",
            "heater",
            "helicopter",
            "hexagon",
            "highlighter",
            "hiking-stick",
            "hop-off",
            "hop",
            "hospital",
            "hotel",
            "hourglass-cog",
            "hourglass",
            "house-cog",
            "house-heart",
            "house-plug",
            "house-plus",
            "house-wifi",
            "house",
            "houses",
            "ice-cream-bowl",
            "ice-cream-cone",
            "id-card-lanyard",
            "id-card",
            "image-down",
            "image-minus",
            "image-off",
            "image-play",
            "image-plus",
            "image-up",
            "image-upscale",
            "image",
            "images",
            "import",
            "inbox",
            "indian-rupee",
            "infinity",
            "info",
            "inspection-panel",
            "italic",
            "iteration-ccw",
            "iteration-cw",
            "iv-bag",
            "japanese-yen",
            "joystick",
            "kanban",
            "kayak",
            "kazakh-tenge",
            "key-round",
            "key-square",
            "key",
            "keyboard-music",
            "keyboard-off",
            "keyboard",
            "lambda",
            "lamp-ceiling",
            "lamp-desk",
            "lamp-floor",
            "lamp-wall-down",
            "lamp-wall-up",
            "lamp",
            "land-plot",
            "landmark",
            "languages",
            "laptop-minimal-check",
            "laptop-minimal",
            "laptop",
            "lasso-select",
            "lasso",
            "layer-arrow-down",
            "layer-arrow-up",
            "layers-2",
            "layers-arrow-down",
            "layers-arrow-up",
            "layers-minus",
            "layers-plus",
            "layers",
            "layout-arrow-down",
            "layout-arrow-right",
            "layout-dashboard",
            "layout-freeform",
            "layout-grid-circles",
            "layout-grid",
            "layout-list",
            "layout-panel-left",
            "layout-panel-top",
            "layout-template",
            "leaf",
            "leafy-green",
            "lectern",
            "lens-concave",
            "lens-convex",
            "lens",
            "letter-spacing",
            "letters",
            "library-big",
            "library",
            "life-buoy",
            "ligature",
            "lightbulb-off",
            "lightbulb",
            "lighthouse",
            "line-dot-bottom-vertical",
            "line-dot-left-horizontal",
            "line-dot-right-horizontal",
            "line-dot-top-vertical",
            "line-height",
            "line-squiggle",
            "line-style",
            "link-2-off",
            "link-2",
            "link",
            "list-check",
            "list-checks",
            "list-chevrons-down-up",
            "list-chevrons-up-down",
            "list-clock",
            "list-collapse",
            "list-end",
            "list-filter-plus",
            "list-filter",
            "list-indent-decrease",
            "list-indent-increase",
            "list-minus",
            "list-music",
            "list-ordered",
            "list-plus",
            "list-restart",
            "list-sort-ascending",
            "list-sort-descending",
            "list-start",
            "list-todo",
            "list-tree",
            "list-video",
            "list-x",
            "list",
            "loader-circle",
            "loader-pinwheel",
            "loader",
            "locate-fixed",
            "locate-off",
            "locate",
            "lock-keyhole-open",
            "lock-keyhole",
            "lock-open",
            "lock",
            "log-in",
            "log-out",
            "logs",
            "lollipop",
            "luggage",
            "magnet",
            "mail-badge",
            "mail-check",
            "mail-clock",
            "mail-dot",
            "mail-minus",
            "mail-open",
            "mail-pen",
            "mail-plus",
            "mail-question-mark",
            "mail-search",
            "mail-warning",
            "mail-x",
            "mail",
            "mailbox",
            "mails",
            "map-minus",
            "map-pin-check-inside",
            "map-pin-check",
            "map-pin-house",
            "map-pin-minus-inside",
            "map-pin-minus",
            "map-pin-off",
            "map-pin-pen",
            "map-pin-plus-inside",
            "map-pin-plus",
            "map-pin-search",
            "map-pin-x-inside",
            "map-pin-x",
            "map-pin",
            "map-pinned",
            "map-plus",
            "map",
            "mars-stroke",
            "mars",
            "martini",
            "maximize-2",
            "maximize",
            "medal",
            "megaphone-off",
            "megaphone",
            "memory-stick",
            "menu",
            "merge",
            "message-circle-check",
            "message-circle-code",
            "message-circle-dashed-check",
            "message-circle-dashed",
            "message-circle-heart",
            "message-circle-more",
            "message-circle-off",
            "message-circle-plus",
            "message-circle-question-mark",
            "message-circle-reply",
            "message-circle-text",
            "message-circle-warning",
            "message-circle-x",
            "message-circle",
            "message-square-check",
            "message-square-code",
            "message-square-dashed",
            "message-square-diff",
            "message-square-dot",
            "message-square-heart",
            "message-square-lock",
            "message-square-more",
            "message-square-off",
            "message-square-plus",
            "message-square-quote",
            "message-square-reply",
            "message-square-share",
            "message-square-text",
            "message-square-warning",
            "message-square-x",
            "message-square",
            "messages-circle",
            "messages-square",
            "metronome",
            "mic-audio-lines",
            "mic-off",
            "mic-signal",
            "mic-vocal",
            "mic",
            "microchip",
            "microscope",
            "microwave",
            "midi-port",
            "milestone",
            "milk-off",
            "milk",
            "minimize-2",
            "minimize",
            "minus",
            "mirror-rectangular",
            "mirror-round",
            "monitor-check",
            "monitor-cloud",
            "monitor-cog",
            "monitor-dot",
            "monitor-down",
            "monitor-off",
            "monitor-pause",
            "monitor-pc",
            "monitor-play",
            "monitor-smartphone",
            "monitor-speaker",
            "monitor-stop",
            "monitor-up",
            "monitor-x",
            "monitor",
            "moon-star",
            "moon",
            "mop-sparkles",
            "mop",
            "mosque",
            "motorbike",
            "mountain-snow",
            "mountain",
            "mouse-left",
            "mouse-off",
            "mouse-pointer-2-off",
            "mouse-pointer-2",
            "mouse-pointer-ban",
            "mouse-pointer-click",
            "mouse-pointer",
            "mouse-right",
            "mouse",
            "mouth-off",
            "mouth",
            "move-3d",
            "move-diagonal-2",
            "move-diagonal",
            "move-down-left",
            "move-down-right",
            "move-down",
            "move-horizontal",
            "move-left",
            "move-right",
            "move-up-left",
            "move-up-right",
            "move-up",
            "move-vertical",
            "move",
            "navigation-2-off",
            "navigation-2",
            "navigation-off",
            "navigation",
            "nepali-rupee",
            "network",
            "newspaper",
            "nfc",
            "non-binary",
            "notebook-dot",
            "notebook-pen",
            "notebook-tabs",
            "notebook-text",
            "notebook",
            "notepad-text-dashed",
            "notepad-text",
            "nut-off",
            "nut",
            "octagon-alert",
            "octagon-minus",
            "octagon-pause",
            "octagon-x",
            "octagon",
            "omega",
            "option",
            "orbit",
            "origami",
            "package-2",
            "package-check",
            "package-minus",
            "package-open",
            "package-plus",
            "package-search",
            "package-x",
            "package",
            "paint-bucket",
            "paint-roller",
            "paintbrush-vertical",
            "paintbrush",
            "palette",
            "panda",
            "panel-bottom-close",
            "panel-bottom-dashed",
            "panel-bottom-open",
            "panel-bottom",
            "panel-left-close",
            "panel-left-dashed",
            "panel-left-open",
            "panel-left-right-dashed",
            "panel-left",
            "panel-right-close",
            "panel-right-dashed",
            "panel-right-open",
            "panel-right",
            "panel-top-bottom-dashed",
            "panel-top-close",
            "panel-top-dashed",
            "panel-top-open",
            "panel-top",
            "panels-left-bottom",
            "panels-right-bottom",
            "panels-top-left",
            "paper-bag",
            "paperclip",
            "parasol",
            "parentheses",
            "park",
            "parking-meter",
            "party-popper",
            "pause",
            "paw-print",
            "pc-case",
            "pen-line",
            "pen-off",
            "pen-tool",
            "pen",
            "pencil-line",
            "pencil-off",
            "pencil-ruler",
            "pencil-sparkles",
            "pencil",
            "pentagon",
            "percent",
            "perfume-bottle",
            "person-standing",
            "phi",
            "philippine-peso",
            "phone-call",
            "phone-forwarded",
            "phone-incoming",
            "phone-log",
            "phone-missed",
            "phone-off",
            "phone-outgoing",
            "phone",
            "pi",
            "piano",
            "pickaxe",
            "picture-in-picture-2",
            "picture-in-picture",
            "piggy-bank",
            "pilcrow-left",
            "pilcrow-right",
            "pilcrow",
            "pill-bottle",
            "pill",
            "pin-off",
            "pin",
            "pipette",
            "pizza",
            "plane-landing",
            "plane-takeoff",
            "plane",
            "plant-pot",
            "play-off",
            "play",
            "playing-card",
            "playing-cards-fan",
            "playing-cards",
            "plug-2",
            "plug-zap",
            "plug",
            "plus",
            "pocket-knife",
            "podium",
            "pointer-off",
            "pointer",
            "popcorn",
            "popsicle",
            "pound-sterling",
            "power-off",
            "power",
            "presentation",
            "printer-3d",
            "printer-check",
            "printer-x",
            "printer",
            "projector",
            "proportions",
            "puzzle",
            "pyramid",
            "qr-code",
            "quote",
            "rabbit",
            "radar",
            "radiation",
            "radical",
            "radio-off",
            "radio-receiver",
            "radio-tower",
            "radio",
            "radius",
            "rainbow",
            "rat",
            "ratio",
            "receipt-cent",
            "receipt-euro",
            "receipt-indian-rupee",
            "receipt-japanese-yen",
            "receipt-pound-sterling",
            "receipt-russian-ruble",
            "receipt-swiss-franc",
            "receipt-text",
            "receipt-turkish-lira",
            "receipt",
            "rectangle-circle",
            "rectangle-ellipsis",
            "rectangle-goggles",
            "rectangle-horizontal",
            "rectangle-vertical",
            "recycle",
            "redo-2",
            "redo-dot",
            "redo",
            "refresh-ccw-dot",
            "refresh-ccw",
            "refresh-cw-off",
            "refresh-cw",
            "refrigerator",
            "regex",
            "remove-formatting",
            "repeat-1",
            "repeat-2",
            "repeat-off",
            "repeat",
            "replace-all",
            "replace",
            "reply-all",
            "reply",
            "rewind",
            "ribbon",
            "road",
            "robot-arm",
            "robot-vacuum",
            "rocket",
            "rocking-chair",
            "roller-coaster",
            "rose",
            "rotate-3d",
            "rotate-ccw-clock",
            "rotate-ccw-key",
            "rotate-ccw-square",
            "rotate-ccw",
            "rotate-cw-clock",
            "rotate-cw-fading-clock",
            "rotate-cw-square",
            "rotate-cw",
            "route-off",
            "route",
            "router",
            "rows-2",
            "rows-3",
            "rows-4",
            "rss",
            "rugby-ball",
            "ruler-dimension-line",
            "ruler",
            "russian-ruble",
            "sailboat",
            "salad",
            "sandwich",
            "satellite-dish",
            "satellite",
            "saudi-riyal",
            "save-all",
            "save-check",
            "save-off",
            "save-pen",
            "save-plus",
            "save",
            "scale-3d",
            "scale",
            "scaling",
            "scan-barcode",
            "scan-box",
            "scan-eye",
            "scan-face",
            "scan-heart",
            "scan-line",
            "scan-qr-code",
            "scan-search",
            "scan-square",
            "scan-text",
            "scan",
            "school",
            "scissors-line-dashed",
            "scissors",
            "scooter",
            "scratch-blocks",
            "screen-share-off",
            "screen-share",
            "screw",
            "scroll-text",
            "scroll",
            "search-alert",
            "search-check",
            "search-code",
            "search-slash",
            "search-x",
            "search",
            "section",
            "send-horizontal",
            "send-to-back",
            "send",
            "separator-horizontal",
            "separator-vertical",
            "server-cog",
            "server-crash",
            "server-nas",
            "server-off",
            "server-plus",
            "server",
            "settings-2",
            "settings",
            "shapes",
            "share-2",
            "share",
            "sheet",
            "shell",
            "shelving-unit",
            "shield-alert",
            "shield-ban",
            "shield-check",
            "shield-cog-corner",
            "shield-cog",
            "shield-ellipsis",
            "shield-half",
            "shield-house",
            "shield-keyhole",
            "shield-lock",
            "shield-minus",
            "shield-off",
            "shield-plus",
            "shield-question-mark",
            "shield-user",
            "shield-x",
            "shield",
            "ship-cargo",
            "ship-wheel",
            "ship",
            "shirt",
            "shopping-bag",
            "shopping-basket",
            "shopping-cart-minus",
            "shopping-cart-plus",
            "shopping-cart",
            "shovel",
            "shower-head",
            "shredder",
            "shrimp-off",
            "shrimp",
            "shrink",
            "shrub",
            "shuffle",
            "sigma",
            "signal-high",
            "signal-low",
            "signal-medium",
            "signal-zero",
            "signal",
            "signature",
            "signpost-big",
            "signpost",
            "siren",
            "sixteenth-notes",
            "skip-back",
            "skip-forward",
            "skull",
            "slash",
            "slice",
            "sliders-horizontal",
            "sliders-vertical",
            "smartphone-charging",
            "smartphone-nfc",
            "smartphone-user-round",
            "smartphone",
            "snail",
            "snowflake",
            "soap-dispenser-droplet",
            "sofa",
            "solar-panel",
            "soup",
            "space",
            "spade",
            "sparkle",
            "sparkles",
            "speaker",
            "speech",
            "spell-check-2",
            "spell-check",
            "spline-pointer",
            "spline",
            "split",
            "spool",
            "sport-shoe",
            "spotlight",
            "spray-can",
            "sprout",
            "square-activity",
            "square-arrow-down-left",
            "square-arrow-down-right",
            "square-arrow-down",
            "square-arrow-left",
            "square-arrow-out-down-left",
            "square-arrow-out-down-right",
            "square-arrow-out-up-left",
            "square-arrow-out-up-right",
            "square-arrow-right-enter",
            "square-arrow-right-exit",
            "square-arrow-right",
            "square-arrow-up-left",
            "square-arrow-up-right",
            "square-arrow-up",
            "square-asterisk",
            "square-bookmark",
            "square-bottom-dashed-scissors",
            "square-centerline-dashed-horizontal",
            "square-centerline-dashed-vertical",
            "square-chart-gantt",
            "square-check-big",
            "square-check",
            "square-chevron-down",
            "square-chevron-left",
            "square-chevron-right",
            "square-chevron-up",
            "square-code",
            "square-dashed-bottom-code",
            "square-dashed-bottom",
            "square-dashed-kanban",
            "square-dashed-mouse-pointer",
            "square-dashed-plus",
            "square-dashed-text",
            "square-dashed-top-solid",
            "square-dashed-x-corner",
            "square-dashed-x",
            "square-dashed",
            "square-dimensions",
            "square-divide",
            "square-dot",
            "square-equal",
            "square-exclamation-point",
            "square-function",
            "square-kanban",
            "square-library",
            "square-m",
            "square-menu",
            "square-minus",
            "square-mouse-pointer",
            "square-off",
            "square-parking-off",
            "square-parking",
            "square-pause",
            "square-pen",
            "square-percent",
            "square-pi",
            "square-pilcrow",
            "square-play",
            "square-plus",
            "square-power",
            "square-radical",
            "square-round-corner",
            "square-scissors",
            "square-sigma",
            "square-slash",
            "square-sparkles",
            "square-split-horizontal",
            "square-split-vertical",
            "square-square",
            "square-stack",
            "square-star",
            "square-stop",
            "square-terminal",
            "square-text",
            "square-user-round",
            "square-user",
            "square-x",
            "square",
            "squares-exclude",
            "squares-intersect",
            "squares-subtract",
            "squares-unite",
            "squircle-dashed",
            "squircle",
            "squirrel",
            "stamp",
            "star-check",
            "star-half",
            "star-minus",
            "star-off",
            "star-plus",
            "star-x",
            "star",
            "step-back",
            "step-forward",
            "stethoscope",
            "sticker",
            "sticky-note-check",
            "sticky-note-minus",
            "sticky-note-off",
            "sticky-note-plus",
            "sticky-note-x",
            "sticky-note",
            "sticky-notes",
            "stone",
            "store",
            "stretch-horizontal",
            "stretch-vertical",
            "strikethrough",
            "subscript",
            "summary",
            "sun-dim",
            "sun-medium",
            "sun-moon",
            "sun-snow",
            "sun",
            "sunrise",
            "sunset",
            "superscript",
            "swatch-book",
            "swiss-franc",
            "switch-camera",
            "sword",
            "swords",
            "syringe",
            "table-2",
            "table-cells-merge",
            "table-cells-split",
            "table-columns-split",
            "table-of-contents",
            "table-properties",
            "table-rows-split",
            "table",
            "tablet-smartphone",
            "tablet",
            "tablets",
            "tag-plus",
            "tag-x",
            "tag",
            "tags",
            "tally-1",
            "tally-2",
            "tally-3",
            "tally-4",
            "tally-5",
            "tangent",
            "target",
            "telescope",
            "tent-tree",
            "tent",
            "terminal",
            "test-tube-diagonal",
            "test-tube",
            "test-tubes",
            "text-align-center",
            "text-align-end",
            "text-align-justify-center",
            "text-align-justify-end",
            "text-align-justify-start",
            "text-align-justify",
            "text-align-start",
            "text-cursor-input",
            "text-cursor",
            "text-initial",
            "text-quote",
            "text-search",
            "text-wrap",
            "theater",
            "thermometer-snowflake",
            "thermometer-sun",
            "thermometer",
            "thumbs-down",
            "thumbs-up",
            "tic-tac-toe",
            "ticket-check",
            "ticket-minus",
            "ticket-percent",
            "ticket-plus",
            "ticket-slash",
            "ticket-x",
            "ticket",
            "tickets-plane",
            "tickets",
            "timeline",
            "timer-off",
            "timer-reset",
            "timer",
            "toggle-left",
            "toggle-right",
            "toilet",
            "tombstone",
            "tool-case",
            "toolbox",
            "toothbrush-sparkles",
            "toothbrush",
            "tornado",
            "torus",
            "touchpad-off",
            "touchpad",
            "towel-rack",
            "tower-control",
            "toy-brick",
            "tractor",
            "traffic-cone",
            "trailer",
            "train-front-tunnel",
            "train-front",
            "train-track",
            "tram-front",
            "transgender",
            "trash-off",
            "trash",
            "tree-deciduous",
            "tree-palm",
            "tree-pine",
            "trees",
            "trending-down",
            "trending-up-down",
            "trending-up",
            "triangle-alert",
            "triangle-dashed",
            "triangle-right",
            "triangle",
            "triangles-centerline-dashed-horizontal",
            "triangles-centerline-dashed-vertical",
            "trophy",
            "truck-electric",
            "truck",
            "tube-lotion",
            "turkish-lira",
            "turntable",
            "turtle",
            "tv-minimal-play",
            "tv-minimal",
            "tv",
            "type-outline",
            "type",
            "umbrella-off",
            "umbrella",
            "underline",
            "undo-2",
            "undo-dot",
            "undo",
            "unfold-horizontal",
            "unfold-vertical",
            "ungroup",
            "university",
            "unlink-2",
            "unlink",
            "unplug",
            "upload",
            "usb-c-port",
            "usb",
            "user-check",
            "user-cog",
            "user-group",
            "user-key",
            "user-lock",
            "user-minus",
            "user-pen",
            "user-plus",
            "user-round-arrow-left",
            "user-round-check",
            "user-round-cog",
            "user-round-group",
            "user-round-key",
            "user-round-minus",
            "user-round-pen",
            "user-round-plus",
            "user-round-search",
            "user-round-star",
            "user-round-x",
            "user-round",
            "user-search",
            "user-shield",
            "user-star",
            "user-x",
            "user",
            "users-collaboration",
            "users-round-collaboration",
            "users-round",
            "users",
            "utensils-crossed",
            "utensils",
            "utility-pole",
            "van",
            "variable",
            "vault",
            "vector-polygon",
            "vector-square",
            "vegan",
            "venetian-mask",
            "venus-and-mars",
            "venus",
            "vibrate-off",
            "vibrate",
            "video-off",
            "video",
            "videotape",
            "view",
            "virus-off",
            "virus",
            "voicemail",
            "volleyball",
            "volume-1",
            "volume-2",
            "volume-off",
            "volume-x",
            "volume",
            "vote",
            "wallet-cards",
            "wallet-minimal",
            "wallet",
            "wallpaper",
            "wand-sparkles",
            "wand",
            "warehouse",
            "washing-machine",
            "watch",
            "waves-arrow-down",
            "waves-arrow-up",
            "waves-horizontal",
            "waves-ladder",
            "waves-vertical",
            "waypoints",
            "webcam-off",
            "webcam",
            "webhook-off",
            "webhook",
            "weight-tilde",
            "weight",
            "wheat-off",
            "wheat",
            "whistle",
            "whole-word",
            "wifi-cog",
            "wifi-high",
            "wifi-lock",
            "wifi-low",
            "wifi-off",
            "wifi-pen",
            "wifi-sync",
            "wifi-zero",
            "wifi",
            "wind-arrow-down",
            "wind-arrow-up",
            "wind",
            "wine-off",
            "wine",
            "workflow",
            "worm",
            "wrench-off",
            "wrench",
            "x-line-top",
            "x",
            "zap-off",
            "zap",
            "zodiac-aquarius",
            "zodiac-aries",
            "zodiac-cancer",
            "zodiac-capricorn",
            "zodiac-gemini",
            "zodiac-leo",
            "zodiac-libra",
            "zodiac-ophiuchus",
            "zodiac-pisces",
            "zodiac-sagittarius",
            "zodiac-scorpio",
            "zodiac-taurus",
            "zodiac-virgo",
            "zoom-in",
            "zoom-out"
          ],
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "mode",
          "label": "Mode",
          "type": "enum",
          "category": "Behavior",
          "source": "props",
          "defaultValue": "icon",
          "options": [
            "icon",
            "button"
          ],
          "description": "Icon displays a Lucide graphic. Button enables click and keyboard activation without a caption.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "accessibleLabel",
          "label": "Accessible label",
          "type": "string",
          "category": "Accessibility",
          "source": "props",
          "defaultValue": "",
          "description": "Name announced by assistive technology. Never displayed as a caption; falls back to the component name.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "strokeWidth",
          "label": "Stroke width",
          "type": "number",
          "category": "Appearance",
          "source": "props",
          "defaultValue": 2,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnClick",
          "label": "OnClick",
          "category": "Behavior",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnDblClick",
          "label": "OnDblClick",
          "category": "Behavior",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnFocus",
          "label": "OnFocus",
          "category": "Behavior",
          "eventType": "FocusEvent"
        },
        {
          "name": "OnBlur",
          "label": "OnBlur",
          "category": "Behavior",
          "eventType": "FocusEvent"
        },
        {
          "name": "OnKeyDown",
          "label": "OnKeyDown",
          "category": "Behavior",
          "eventType": "KeyboardEvent"
        },
        {
          "name": "OnKeyUp",
          "label": "OnKeyUp",
          "category": "Behavior",
          "eventType": "KeyboardEvent"
        },
        {
          "name": "OnMouseEnter",
          "label": "OnMouseEnter",
          "category": "Behavior",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnMouseLeave",
          "label": "OnMouseLeave",
          "category": "Behavior",
          "eventType": "MouseEvent"
        }
      ]
    },
    {
      "type": "WebMenu",
      "displayName": "Menu",
      "namePrefix": "Menu",
      "palette": {
        "category": "Navigation",
        "caption": "Menu"
      },
      "icon": "menu",
      "visual": true,
      "canHaveChildren": false,
      "defaultEvent": "OnItemClick",
      "designerAction": "menu-configurator",
      "supportsFloatingPlacement": true,
      "floatingSizing": "responsive",
      "defaultBounds": {
        "width": 288,
        "height": 640
      },
      "defaults": {
        "configuration": {
          "schemaVersion": 1,
          "orientation": "vertical",
          "accessibleLabel": "Main navigation",
          "collapsible": true,
          "collapsed": false,
          "accordion": false,
          "searchable": false,
          "themeToggle": true,
          "searchMode": "filter",
          "searchPlaceholder": "Search menu…",
          "emptyText": "No items found",
          "footerText": "",
          "selectedItemId": "",
          "mobileBreakpoint": 768,
          "mobileIconPosition": "left",
          "drawerWidth": 288,
          "drawerSide": "left",
          "closeOnSelect": true,
          "brand": {
            "visible": true,
            "caption": "Workspace",
            "subtitle": "Your application",
            "logo": "",
            "logoSize": 36,
            "page": "",
            "href": ""
          },
          "user": {
            "visible": false,
            "bindToCurrentUser": false,
            "settings": false,
            "settingsLanguage": "en",
            "emailConfirmationUrl": "",
            "passwordResetUrl": "",
            "name": "",
            "description": "",
            "avatar": "",
            "status": "none"
          },
          "appearance": {
            "background": "var(--wr-theme-surface)",
            "foreground": "var(--wr-theme-heading)",
            "muted": "var(--wr-theme-text-muted)",
            "border": "var(--wr-theme-border)",
            "hoverBackground": "var(--wr-theme-disabled-surface)",
            "activeBackground": "var(--wr-theme-surface-muted)",
            "activeForeground": "var(--wr-theme-primary)",
            "accent": "var(--wr-theme-primary)",
            "badgeBackground": "var(--wr-theme-surface-muted)",
            "badgeForeground": "var(--wr-theme-primary)",
            "itemHeight": 44,
            "itemRadius": 10,
            "itemGap": 4,
            "iconSize": 20,
            "fontSize": 14,
            "padding": 14,
            "indent": 18,
            "collapsedWidth": 72
          },
          "items": [
            {
              "id": "home",
              "label": "Home",
              "icon": "house"
            },
            {
              "id": "workspace",
              "label": "Workspace",
              "icon": "layers",
              "expanded": true,
              "children": [
                {
                  "id": "projects",
                  "label": "Projects",
                  "icon": "folder"
                },
                {
                  "id": "team",
                  "label": "Team",
                  "icon": "users"
                }
              ]
            },
            {
              "id": "settings",
              "label": "Settings",
              "icon": "settings"
            }
          ]
        },
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true,
        "placement": "floating",
        "floatingHorizontalAnchor": "left",
        "floatingVerticalAnchor": "top"
      },
      "styleEditor": {
        "essentialProperties": [
          "fontFamily",
          "fontWeight",
          "letterSpacing",
          "lineHeight",
          "borderWidth",
          "borderStyle",
          "borderColor",
          "borderRadius",
          "boxShadow",
          "opacity"
        ]
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 288,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 640,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "Fit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "menuDefinitionId",
          "label": "Menu definition",
          "type": "menu-definition",
          "category": "Menu",
          "source": "props",
          "description": "Shared configuration and TypeScript; runtime state remains independent for each placement.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "editMenuDefinition",
          "label": "Edit shared menu",
          "type": "designer-action",
          "category": "Menu",
          "designerAction": "menu-definition-edit",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "configuration",
          "label": "Menu configuration",
          "type": "menu-config",
          "category": "Menu",
          "source": "props",
          "designerAction": "menu-configurator",
          "defaultValue": {
            "schemaVersion": 1,
            "orientation": "vertical",
            "accessibleLabel": "Main navigation",
            "collapsible": true,
            "collapsed": false,
            "accordion": false,
            "searchable": false,
            "themeToggle": true,
            "searchMode": "filter",
            "searchPlaceholder": "Search menu…",
            "emptyText": "No items found",
            "footerText": "",
            "selectedItemId": "",
            "mobileBreakpoint": 768,
            "mobileIconPosition": "left",
            "drawerWidth": 288,
            "drawerSide": "left",
            "closeOnSelect": true,
            "brand": {
              "visible": true,
              "caption": "Workspace",
              "subtitle": "Your application",
              "logo": "",
              "logoSize": 36,
              "page": "",
              "href": ""
            },
            "user": {
              "visible": false,
              "bindToCurrentUser": false,
              "settings": false,
              "settingsLanguage": "en",
              "emailConfirmationUrl": "",
              "passwordResetUrl": "",
              "name": "",
              "description": "",
              "avatar": "",
              "status": "none"
            },
            "appearance": {
              "background": "var(--wr-theme-surface)",
              "foreground": "var(--wr-theme-heading)",
              "muted": "var(--wr-theme-text-muted)",
              "border": "var(--wr-theme-border)",
              "hoverBackground": "var(--wr-theme-disabled-surface)",
              "activeBackground": "var(--wr-theme-surface-muted)",
              "activeForeground": "var(--wr-theme-primary)",
              "accent": "var(--wr-theme-primary)",
              "badgeBackground": "var(--wr-theme-surface-muted)",
              "badgeForeground": "var(--wr-theme-primary)",
              "itemHeight": 44,
              "itemRadius": 10,
              "itemGap": 4,
              "iconSize": 20,
              "fontSize": 14,
              "padding": 14,
              "indent": 18,
              "collapsedWidth": 72
            },
            "items": [
              {
                "id": "home",
                "label": "Home",
                "icon": "house"
              },
              {
                "id": "workspace",
                "label": "Workspace",
                "icon": "layers",
                "expanded": true,
                "children": [
                  {
                    "id": "projects",
                    "label": "Projects",
                    "icon": "folder"
                  },
                  {
                    "id": "team",
                    "label": "Team",
                    "icon": "users"
                  }
                ]
              },
              {
                "id": "settings",
                "label": "Settings",
                "icon": "settings"
              }
            ]
          },
          "description": "Edit orientation, menu items, brand, user, appearance and the optional Light/Dark theme switch. Responsive placement is automatic.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "placement",
          "label": "Placement",
          "type": "enum",
          "source": "props",
          "defaultValue": "floating",
          "options": [
            "in-flow",
            "floating"
          ],
          "readOnly": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "floatingHorizontalAnchor",
          "label": "Horizontal side",
          "type": "enum",
          "source": "props",
          "defaultValue": "left",
          "options": [
            "left",
            "center",
            "right"
          ],
          "category": "Menu placement",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "floatingVerticalAnchor",
          "label": "Vertical side",
          "type": "enum",
          "source": "props",
          "defaultValue": "top",
          "options": [
            "top",
            "center",
            "bottom"
          ],
          "category": "Menu placement",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "floatingZIndex",
          "label": "Layer",
          "type": "number",
          "source": "props",
          "defaultValue": 1000,
          "readOnly": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnSearch",
          "category": "Menu",
          "eventDetailType": "WebMenuSearchEvent",
          "eventDetailProperties": [
            "text"
          ],
          "description": "Emitted when the user presses Enter in event search mode. Typing and clearing do not emit; menu items remain unchanged."
        },
        {
          "name": "OnItemClick",
          "category": "Menu",
          "eventDetailType": "WebMenuItemEvent",
          "eventDetailProperties": [
            "item",
            "itemId",
            "path"
          ],
          "description": "Call event.preventDefault() synchronously to cancel automatic selection and navigation."
        },
        {
          "name": "OnSelectionChange",
          "category": "Menu",
          "eventDetailType": "WebMenuItemEvent",
          "eventDetailProperties": [
            "item",
            "itemId"
          ]
        },
        {
          "name": "OnItemToggle",
          "category": "Menu",
          "eventDetailType": "WebMenuItemToggleEvent",
          "eventDetailProperties": [
            "itemId",
            "expanded"
          ]
        },
        {
          "name": "OnCollapseChange",
          "category": "Menu",
          "eventDetailType": "WebMenuStateEvent",
          "eventDetailProperties": [
            "collapsed"
          ]
        },
        {
          "name": "OnOpen",
          "category": "Menu",
          "eventDetailType": "WebMenuStateEvent"
        },
        {
          "name": "OnClose",
          "category": "Menu",
          "eventDetailType": "WebMenuStateEvent"
        },
        {
          "name": "OnBrandClick",
          "category": "Menu",
          "eventDetailType": "WebMenuBrand"
        },
        {
          "name": "OnUserClick",
          "category": "Menu",
          "eventDetailType": "WebMenuUser"
        }
      ]
    },
    {
      "type": "WebLogin",
      "displayName": "Login",
      "namePrefix": "Login",
      "palette": {
        "category": "Authentication",
        "caption": "Login"
      },
      "icon": "user",
      "visual": true,
      "canHaveChildren": false,
      "defaultEvent": "OnLogin",
      "designerAction": "login-configurator",
      "defaultBounds": {
        "width": 420,
        "height": 400
      },
      "defaults": {
        "configuration": {
          "version": 1,
          "presentation": "panel",
          "initialView": "login",
          "allowRegistration": true,
          "showFullName": true,
          "requireFullName": true,
          "confirmPassword": true,
          "showRemember": true,
          "rememberDefault": false,
          "showPasswordToggle": true,
          "autoLoginAfterRegistration": false,
          "closeOnLogin": true,
          "openOnShow": true,
          "dismissible": true,
          "language": "en",
          "recovery": {
            "enabled": true,
            "automaticLinks": true,
            "returnUrl": "",
            "texts": {
              "forgotPassword": "Forgot your password?",
              "requestTitle": "Recover your account",
              "requestSubtitle": "Enter your email to receive a password reset link.",
              "requestButton": "Send reset link",
              "requestSent": "If the account is eligible for recovery, you will receive an email with instructions.",
              "resetTitle": "Set a new password",
              "resetSubtitle": "Enter and confirm your new password.",
              "resetButton": "Save new password",
              "passwordChanged": "Password changed. Sign in with your new password.",
              "invalidLink": "The recovery link is invalid or expired. Request a new link.",
              "backToLogin": "Back to sign in"
            }
          },
          "styles": {},
          "email": {
            "label": "Email",
            "placeholder": "name@example.com"
          },
          "password": {
            "label": "Password",
            "placeholder": ""
          },
          "fullName": {
            "label": "Full name",
            "placeholder": ""
          },
          "passwordConfirmation": {
            "label": "Confirm password",
            "placeholder": ""
          },
          "texts": {
            "loginTitle": "Welcome back",
            "loginSubtitle": "Sign in with your email and password.",
            "registerTitle": "Create your account",
            "registerSubtitle": "Enter your details to get started.",
            "loginButton": "Sign in",
            "registerButton": "Create account",
            "switchToRegister": "New here? Create an account",
            "switchToLogin": "Already have an account? Sign in",
            "remember": "Remember me",
            "showPassword": "Show password",
            "hidePassword": "Hide password",
            "close": "Close",
            "busy": "Please wait…",
            "registered": "Account created. Sign in with your email and password.",
            "authenticated": "You are signed in.",
            "passwordMismatch": "Passwords do not match.",
            "unavailable": "Configure the project RestGo connection.",
            "requestFailed": "Could not complete the request. Please try again."
          },
          "appearance": {
            "fontFamily": "Roboto, sans-serif",
            "fontSize": 14,
            "background": "var(--wr-theme-surface)",
            "foreground": "var(--wr-theme-text)",
            "backgroundEnd": "var(--wr-theme-surface-end)",
            "heading": "var(--wr-theme-heading)",
            "muted": "var(--wr-theme-text-muted)",
            "border": "var(--wr-theme-border)",
            "borderEnd": "var(--wr-theme-border-accent)",
            "inputBackground": "var(--wr-theme-input)",
            "primary": "var(--wr-theme-primary)",
            "inputBackgroundEnd": "var(--wr-theme-input-end)",
            "primaryEnd": "var(--wr-theme-accent)",
            "focus": "var(--wr-theme-focus)",
            "onPrimary": "var(--wr-theme-on-primary)",
            "error": "var(--wr-theme-danger)",
            "borderRadius": 12,
            "padding": 20,
            "gap": 8,
            "maxWidth": 420,
            "fieldHeight": 36
          }
        },
        "visible": true,
        "enabled": true,
        "collapseWhenHidden": true
      },
      "styleDependencies": [
        "WebPanel",
        "WebLabel",
        "WebEdit",
        "WebButton",
        "WebCheckBox",
        "WebPopup"
      ],
      "embeddedStyles": {
        "propertyPath": [
          "configuration",
          "styles"
        ],
        "slots": [
          {
            "name": "panel",
            "label": "Panel",
            "componentType": "WebPanel"
          },
          {
            "name": "popup",
            "label": "Popup",
            "componentType": "WebPopup"
          },
          {
            "name": "title",
            "label": "Title",
            "componentType": "WebLabel"
          },
          {
            "name": "subtitle",
            "label": "Subtitle",
            "componentType": "WebLabel"
          },
          {
            "name": "fullNameLabel",
            "label": "Full name label",
            "componentType": "WebLabel"
          },
          {
            "name": "fullName",
            "label": "Full name input",
            "componentType": "WebEdit"
          },
          {
            "name": "emailLabel",
            "label": "Email label",
            "componentType": "WebLabel"
          },
          {
            "name": "email",
            "label": "Email input",
            "componentType": "WebEdit"
          },
          {
            "name": "passwordLabel",
            "label": "Password label",
            "componentType": "WebLabel"
          },
          {
            "name": "password",
            "label": "Password input",
            "componentType": "WebEdit"
          },
          {
            "name": "passwordConfirmationLabel",
            "label": "Password confirmation label",
            "componentType": "WebLabel"
          },
          {
            "name": "passwordConfirmation",
            "label": "Password confirmation input",
            "componentType": "WebEdit"
          },
          {
            "name": "remember",
            "label": "Remember me",
            "componentType": "WebCheckBox"
          },
          {
            "name": "submit",
            "label": "Submit button",
            "componentType": "WebButton"
          },
          {
            "name": "passwordToggle",
            "label": "Show password button",
            "componentType": "WebButton",
            "defaultStyle": "none"
          },
          {
            "name": "registerLink",
            "label": "Registration link",
            "componentType": "WebButton",
            "defaultStyle": "none"
          },
          {
            "name": "loginLink",
            "label": "Return to login link",
            "componentType": "WebButton",
            "defaultStyle": "none"
          },
          {
            "name": "recoveryLink",
            "label": "Recovery link",
            "componentType": "WebButton",
            "defaultStyle": "none"
          },
          {
            "name": "close",
            "label": "Close button",
            "componentType": "WebButton",
            "defaultStyle": "none"
          },
          {
            "name": "feedback",
            "label": "Success / status message",
            "componentType": "WebLabel"
          },
          {
            "name": "errorFeedback",
            "label": "Error message",
            "componentType": "WebLabel",
            "defaultStyle": "none"
          }
        ]
      },
      "styleEditor": {
        "essentialProperties": [
          "fontFamily",
          "fontSize",
          "fontWeight",
          "letterSpacing",
          "lineHeight",
          "borderWidth",
          "borderStyle",
          "borderColor",
          "borderRadius",
          "boxShadow",
          "opacity"
        ]
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 420,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 400,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "Fit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fit-content",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "configuration",
          "label": "Login configuration",
          "type": "login-config",
          "category": "Login",
          "source": "props",
          "designerAction": "login-configurator",
          "defaultValue": {
            "version": 1,
            "presentation": "panel",
            "initialView": "login",
            "allowRegistration": true,
            "showFullName": true,
            "requireFullName": true,
            "confirmPassword": true,
            "showRemember": true,
            "rememberDefault": false,
            "showPasswordToggle": true,
            "autoLoginAfterRegistration": false,
            "closeOnLogin": true,
            "openOnShow": true,
            "dismissible": true,
            "language": "en",
            "recovery": {
              "enabled": true,
              "automaticLinks": true,
              "returnUrl": "",
              "texts": {
                "forgotPassword": "Forgot your password?",
                "requestTitle": "Recover your account",
                "requestSubtitle": "Enter your email to receive a password reset link.",
                "requestButton": "Send reset link",
                "requestSent": "If the account is eligible for recovery, you will receive an email with instructions.",
                "resetTitle": "Set a new password",
                "resetSubtitle": "Enter and confirm your new password.",
                "resetButton": "Save new password",
                "passwordChanged": "Password changed. Sign in with your new password.",
                "invalidLink": "The recovery link is invalid or expired. Request a new link.",
                "backToLogin": "Back to sign in"
              }
            },
            "styles": {},
            "email": {
              "label": "Email",
              "placeholder": "name@example.com"
            },
            "password": {
              "label": "Password",
              "placeholder": ""
            },
            "fullName": {
              "label": "Full name",
              "placeholder": ""
            },
            "passwordConfirmation": {
              "label": "Confirm password",
              "placeholder": ""
            },
            "texts": {
              "loginTitle": "Welcome back",
              "loginSubtitle": "Sign in with your email and password.",
              "registerTitle": "Create your account",
              "registerSubtitle": "Enter your details to get started.",
              "loginButton": "Sign in",
              "registerButton": "Create account",
              "switchToRegister": "New here? Create an account",
              "switchToLogin": "Already have an account? Sign in",
              "remember": "Remember me",
              "showPassword": "Show password",
              "hidePassword": "Hide password",
              "close": "Close",
              "busy": "Please wait…",
              "registered": "Account created. Sign in with your email and password.",
              "authenticated": "You are signed in.",
              "passwordMismatch": "Passwords do not match.",
              "unavailable": "Configure the project RestGo connection.",
              "requestFailed": "Could not complete the request. Please try again."
            },
            "appearance": {
              "fontFamily": "Roboto, sans-serif",
              "fontSize": 14,
              "background": "var(--wr-theme-surface)",
              "foreground": "var(--wr-theme-text)",
              "backgroundEnd": "var(--wr-theme-surface-end)",
              "heading": "var(--wr-theme-heading)",
              "muted": "var(--wr-theme-text-muted)",
              "border": "var(--wr-theme-border)",
              "borderEnd": "var(--wr-theme-border-accent)",
              "inputBackground": "var(--wr-theme-input)",
              "primary": "var(--wr-theme-primary)",
              "inputBackgroundEnd": "var(--wr-theme-input-end)",
              "primaryEnd": "var(--wr-theme-accent)",
              "focus": "var(--wr-theme-focus)",
              "onPrimary": "var(--wr-theme-on-primary)",
              "error": "var(--wr-theme-danger)",
              "borderRadius": 12,
              "padding": 20,
              "gap": 8,
              "maxWidth": 420,
              "fieldHeight": 36
            }
          },
          "description": "Configure login, registration and account recovery, text, internal project Styles, Panel or Popup, and RestGo behavior.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnLogin",
          "category": "Login",
          "eventDetailType": "WebLoginUserEvent",
          "eventDetailProperties": [
            "user",
            "restored"
          ],
          "description": "A login or restored server-validated session. Credentials are never included."
        },
        {
          "name": "OnRegister",
          "category": "Login",
          "eventDetailType": "WebLoginUserEvent",
          "eventDetailProperties": [
            "user"
          ],
          "description": "RestGo created the account. This alone does not start a session."
        },
        {
          "name": "OnRecoveryRequested",
          "category": "Recovery",
          "eventDetailType": "WebLoginRecoveryEvent",
          "eventDetailProperties": [
            "email"
          ],
          "description": "RestGo accepted the request. This does not reveal account existence or prove email delivery."
        },
        {
          "name": "OnPasswordReset",
          "category": "Recovery",
          "description": "RestGo accepted the new password. Returns to login without starting a session."
        },
        {
          "name": "OnError",
          "category": "Login",
          "eventDetailType": "WebLoginErrorEvent",
          "eventDetailProperties": [
            "operation",
            "message",
            "code",
            "status"
          ]
        },
        {
          "name": "OnViewChange",
          "category": "Login",
          "eventDetailType": "WebLoginViewEvent",
          "eventDetailProperties": [
            "view"
          ]
        },
        {
          "name": "OnClose",
          "category": "Login"
        }
      ]
    },
    {
      "type": "WebComboBox",
      "displayName": "Combo Box",
      "namePrefix": "ComboBox",
      "palette": {
        "category": "Standard",
        "caption": "Combo Box"
      },
      "icon": "component-combo-box",
      "visual": true,
      "styleEditor": {
        "essentialProperties": [
          "textColor",
          "fontFamily",
          "fontSize",
          "fontWeight",
          "lineHeight",
          "textAlign",
          "backgroundColor",
          "borderWidth",
          "borderStyle",
          "borderColor",
          "borderRadius",
          "boxShadow",
          "paddingTop",
          "paddingRight",
          "paddingBottom",
          "paddingLeft",
          "ringWidth",
          "ringColor"
        ],
        "previewProps": {
          "items": [
            "Sample text",
            "Another option"
          ],
          "selectedIndex": 0,
          "value": "Sample text"
        }
      },
      "canHaveChildren": false,
      "defaultEvent": "OnChange",
      "designerAction": "combo-box-configurator",
      "defaultBounds": {
        "width": 160,
        "height": 36
      },
      "defaults": {
        "items": [],
        "values": [],
        "comboBoxConfig": null,
        "selectedIndex": -1,
        "value": "",
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true,
        "tabIndex": 0
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 160,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 36,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "Fit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "tabIndex",
          "label": "TabIndex",
          "type": "number",
          "category": "Behavior",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "items",
          "label": "Items",
          "type": "string-list",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "combo-box-items",
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "values",
          "label": "Values",
          "type": "string-list",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "combo-box-values",
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "comboBoxConfig",
          "label": "API Client binding",
          "type": "combo-box-config",
          "category": "Data",
          "source": "props",
          "defaultValue": null,
          "description": "Select the API Client response list, display field, and key field.",
          "designerAction": "combo-box-configurator",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "selectedIndex",
          "label": "Selected Index",
          "type": "number",
          "category": "Data",
          "source": "props",
          "defaultValue": -1,
          "description": "For API-bound options, use Value to select the key after the list loads.",
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "value",
          "label": "Value",
          "type": "string",
          "category": "Data",
          "source": "props",
          "defaultValue": "",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnChange",
          "label": "OnChange",
          "category": "Behavior",
          "eventType": "Event"
        },
        {
          "name": "OnFocus",
          "label": "OnFocus",
          "category": "Behavior",
          "eventType": "FocusEvent"
        },
        {
          "name": "OnBlur",
          "label": "OnBlur",
          "category": "Behavior",
          "eventType": "FocusEvent"
        }
      ]
    },
    {
      "type": "WebImage",
      "displayName": "Image",
      "namePrefix": "Image",
      "palette": {
        "category": "Standard",
        "caption": "Image"
      },
      "icon": "component-image",
      "visual": true,
      "styleEditor": {
        "essentialProperties": [
          "objectFit",
          "objectPosition",
          "backgroundColor",
          "borderWidth",
          "borderStyle",
          "borderColor",
          "borderRadius",
          "boxShadow",
          "opacity",
          "cursor"
        ]
      },
      "canHaveChildren": false,
      "defaultEvent": "OnClick",
      "defaultBounds": {
        "width": 160,
        "height": 120
      },
      "defaults": {
        "src": "",
        "placeholder": "image",
        "alt": "",
        "objectFit": "contain",
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 160,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 120,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "Fit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "src",
          "label": "Source",
          "type": "string",
          "category": "Data",
          "source": "props",
          "defaultValue": "",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "placeholder",
          "label": "Empty Image",
          "type": "enum",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "image",
          "options": [
            "image",
            "user"
          ],
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "alt",
          "label": "Alternative Text",
          "type": "string",
          "category": "Accessibility",
          "source": "props",
          "defaultValue": "",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "objectFit",
          "label": "Object Fit",
          "type": "enum",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "contain",
          "options": [
            "contain",
            "cover",
            "fill",
            "none",
            "scale-down"
          ],
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnClick",
          "label": "OnClick",
          "category": "Behavior",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnLoad",
          "label": "OnLoad",
          "category": "Behavior",
          "eventType": "Event"
        },
        {
          "name": "OnError",
          "label": "OnError",
          "category": "Behavior",
          "eventType": "Event"
        }
      ]
    },
    {
      "type": "WebListBox",
      "displayName": "List Box",
      "namePrefix": "ListBox",
      "palette": {
        "category": "Standard",
        "caption": "List Box"
      },
      "icon": "component-list-box",
      "visual": true,
      "styleEditor": {
        "essentialProperties": [
          "textColor",
          "fontFamily",
          "fontSize",
          "fontWeight",
          "lineHeight",
          "textAlign",
          "backgroundColor",
          "borderWidth",
          "borderStyle",
          "borderColor",
          "borderRadius",
          "boxShadow",
          "paddingTop",
          "paddingRight",
          "paddingBottom",
          "paddingLeft",
          "ringWidth",
          "ringColor"
        ],
        "previewProps": {
          "items": [
            "Sample text",
            "Another item"
          ],
          "selectedIndex": 0
        }
      },
      "canHaveChildren": false,
      "defaultEvent": "OnChange",
      "defaultBounds": {
        "width": 180,
        "height": 120
      },
      "defaults": {
        "items": [],
        "selectedIndex": -1,
        "multiple": false,
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true,
        "tabIndex": 0
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 180,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 120,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "Fit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "tabIndex",
          "label": "TabIndex",
          "type": "number",
          "category": "Behavior",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "items",
          "label": "Items",
          "type": "string-list",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "selectedIndex",
          "label": "Selected Index",
          "type": "number",
          "category": "Data",
          "source": "props",
          "defaultValue": -1,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "multiple",
          "label": "Multiple",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": false,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnChange",
          "label": "OnChange",
          "category": "Behavior",
          "eventType": "Event"
        },
        {
          "name": "OnDblClick",
          "label": "OnDblClick",
          "category": "Behavior",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnFocus",
          "label": "OnFocus",
          "category": "Behavior",
          "eventType": "FocusEvent"
        },
        {
          "name": "OnBlur",
          "label": "OnBlur",
          "category": "Behavior",
          "eventType": "FocusEvent"
        }
      ]
    },
    {
      "type": "WebDataGrid",
      "styleDependencies": [
        "WebToggle"
      ],
      "displayName": "Data Grid",
      "namePrefix": "DataGrid",
      "palette": {
        "category": "Standard",
        "caption": "Data Grid"
      },
      "icon": "table",
      "visual": true,
      "styleEditor": {
        "essentialProperties": [
          "textColor",
          "fontFamily",
          "fontSize",
          "fontWeight",
          "backgroundColor",
          "borderWidth",
          "borderColor",
          "borderRadius",
          "boxShadow",
          "dataGridHorizontalLineVisibility",
          "dataGridHorizontalLineColor",
          "dataGridVerticalLineVisibility",
          "dataGridHeaderBackgroundColor",
          "dataGridHeaderTextColor",
          "dataGridHeaderFontWeight",
          "dataGridFooterBackgroundColor",
          "dataGridFooterTextColor",
          "dataGridButtonContentMode",
          "dataGridButtonBackgroundColor",
          "dataGridButtonTextColor",
          "dataGridCheckboxAccentColor",
          "dataGridCheckboxSize"
        ]
      },
      "canHaveChildren": false,
      "defaultEvent": null,
      "designerAction": "data-grid-configurator",
      "defaultBounds": {
        "width": 640,
        "height": 320
      },
      "defaults": {
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true,
        "dataGridConfig": {
          "schemaVersion": 2,
          "apiClientId": null,
          "operationId": null,
          "listPath": "",
          "columnCount": 3,
          "showHeader": true,
          "stickyHeader": true,
          "showFooter": false,
          "stickyFooter": true,
          "rowHeightMode": "dynamic",
          "fixedRowHeight": 40,
          "minRowHeight": 36,
          "maxRowHeight": null,
          "cellPaddingHorizontal": 10,
          "cellPaddingVertical": 8,
          "wrapText": false,
          "stripedRows": false,
          "showHorizontalLines": true,
          "showVerticalLines": false,
          "emptyMessage": "No data",
          "columns": [
            {
              "id": "column-1",
              "header": "Column 1",
              "fieldPath": "",
              "cellKind": "text",
              "fixedCaption": "",
              "buttonIcon": null,
              "footer": "",
              "widthMode": "dynamic",
              "width": 180,
              "minWidth": 96,
              "maxWidth": null,
              "flex": 1,
              "headerAlign": "start",
              "cellAlign": "start"
            },
            {
              "id": "column-2",
              "header": "Column 2",
              "fieldPath": "",
              "cellKind": "text",
              "fixedCaption": "",
              "buttonIcon": null,
              "footer": "",
              "widthMode": "dynamic",
              "width": 180,
              "minWidth": 96,
              "maxWidth": null,
              "flex": 1,
              "headerAlign": "start",
              "cellAlign": "start"
            },
            {
              "id": "column-3",
              "header": "Column 3",
              "fieldPath": "",
              "cellKind": "text",
              "fixedCaption": "",
              "buttonIcon": null,
              "footer": "",
              "widthMode": "dynamic",
              "width": 180,
              "minWidth": 96,
              "maxWidth": null,
              "flex": 1,
              "headerAlign": "start",
              "cellAlign": "start"
            }
          ]
        }
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 640,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 320,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "Fit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "dataGridConfig",
          "label": "Data source and columns",
          "type": "data-grid-config",
          "category": "Data Grid",
          "source": "props",
          "defaultValue": {
            "schemaVersion": 2,
            "apiClientId": null,
            "operationId": null,
            "listPath": "",
            "columnCount": 3,
            "showHeader": true,
            "stickyHeader": true,
            "showFooter": false,
            "stickyFooter": true,
            "rowHeightMode": "dynamic",
            "fixedRowHeight": 40,
            "minRowHeight": 36,
            "maxRowHeight": null,
            "cellPaddingHorizontal": 10,
            "cellPaddingVertical": 8,
            "wrapText": false,
            "stripedRows": false,
            "showHorizontalLines": true,
            "showVerticalLines": false,
            "emptyMessage": "No data",
            "columns": [
              {
                "id": "column-1",
                "header": "Column 1",
                "fieldPath": "",
                "cellKind": "text",
                "fixedCaption": "",
                "buttonIcon": null,
                "footer": "",
                "widthMode": "dynamic",
                "width": 180,
                "minWidth": 96,
                "maxWidth": null,
                "flex": 1,
                "headerAlign": "start",
                "cellAlign": "start"
              },
              {
                "id": "column-2",
                "header": "Column 2",
                "fieldPath": "",
                "cellKind": "text",
                "fixedCaption": "",
                "buttonIcon": null,
                "footer": "",
                "widthMode": "dynamic",
                "width": 180,
                "minWidth": 96,
                "maxWidth": null,
                "flex": 1,
                "headerAlign": "start",
                "cellAlign": "start"
              },
              {
                "id": "column-3",
                "header": "Column 3",
                "fieldPath": "",
                "cellKind": "text",
                "fixedCaption": "",
                "buttonIcon": null,
                "footer": "",
                "widthMode": "dynamic",
                "width": 180,
                "minWidth": 96,
                "maxWidth": null,
                "flex": 1,
                "headerAlign": "start",
                "cellAlign": "start"
              }
            ]
          },
          "description": "Configure the source, columns, responsive widths, row sizing, and cell layout in the Data Grid editor.",
          "designerAction": "data-grid-configurator",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnCellClick",
          "label": "OnCellClick",
          "category": "Data",
          "eventType": "Event",
          "eventDetailType": "WebDataGridCellEventDetail",
          "eventDetailTypeArgumentSuffix": "RowValue",
          "eventDetailProperties": [
            "column",
            "rowIndex",
            "columnIndex",
            "value",
            "getValue"
          ]
        }
      ]
    },
    {
      "type": "WebCharts",
      "displayName": "Charts",
      "namePrefix": "Charts",
      "palette": {
        "category": "Standard",
        "caption": "Charts"
      },
      "icon": "chart-no-axes-combined",
      "visual": true,
      "canHaveChildren": false,
      "defaultEvent": "OnPointClick",
      "designerAction": "charts-configurator",
      "defaultBounds": {
        "width": 480,
        "height": 320
      },
      "defaults": {
        "chartsConfig": {
          "schemaVersion": 1,
          "type": "bar",
          "title": "Chart title",
          "subtitle": "",
          "fontFamily": "inherit",
          "legendFontFamily": "inherit",
          "textColor": null,
          "titleColor": null,
          "subtitleColor": null,
          "legendColor": null,
          "titleIcon": null,
          "showLegend": true,
          "legendPosition": "bottom",
          "showGrid": true,
          "showLabels": false,
          "smooth": true,
          "stacked": false,
          "innerRadius": 65,
          "valuePrefix": "",
          "valueSuffix": "",
          "decimalPlaces": 0,
          "emptyText": "No data to display",
          "series": []
        },
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true
      },
      "styleEditor": {
        "essentialProperties": [
          "backgroundColor",
          "textColor",
          "fontFamily",
          "fontSize",
          "fontWeight",
          "borderRadius",
          "borderWidth",
          "borderColor",
          "borderStyle",
          "boxShadow"
        ]
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 480,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 320,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "Fit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "chartsConfig",
          "label": "Chart and data series",
          "type": "charts-config",
          "category": "Charts",
          "source": "props",
          "defaultValue": {
            "schemaVersion": 1,
            "type": "bar",
            "title": "Chart title",
            "subtitle": "",
            "fontFamily": "inherit",
            "legendFontFamily": "inherit",
            "textColor": null,
            "titleColor": null,
            "subtitleColor": null,
            "legendColor": null,
            "titleIcon": null,
            "showLegend": true,
            "legendPosition": "bottom",
            "showGrid": true,
            "showLabels": false,
            "smooth": true,
            "stacked": false,
            "innerRadius": 65,
            "valuePrefix": "",
            "valueSuffix": "",
            "decimalPlaces": 0,
            "emptyText": "No data to display",
            "series": []
          },
          "designerAction": "charts-configurator",
          "description": "Choose a chart, customize its appearance and bind up to five API response series.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnPointClick",
          "category": "Data",
          "description": "Runs when a chart point is clicked or activated with the keyboard.",
          "eventDetailType": "WebChartPointEventDetail",
          "eventDetailProperties": [
            "label",
            "value",
            "seriesId",
            "seriesName",
            "index"
          ]
        },
        {
          "name": "OnClick",
          "category": "Mouse",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnMouseEnter",
          "category": "Mouse",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnMouseLeave",
          "category": "Mouse",
          "eventType": "MouseEvent"
        }
      ]
    },
    {
      "type": "WebRepeatingGroup",
      "displayName": "Repeating Group",
      "namePrefix": "RepeatingGroup",
      "palette": {
        "category": "Containers",
        "caption": "Repeating Group"
      },
      "icon": "component-list-box",
      "visual": true,
      "styleEditor": {
        "essentialProperties": [
          "textColor",
          "fontFamily",
          "fontSize",
          "fontWeight",
          "lineHeight",
          "textAlign",
          "backgroundColor",
          "borderWidth",
          "borderStyle",
          "borderColor",
          "borderRadius",
          "boxShadow"
        ]
      },
      "canHaveChildren": true,
      "designerChildHost": "repeating-row",
      "defaultEvent": null,
      "designerAction": "repeating-group-configurator",
      "defaultBounds": {
        "width": 420,
        "height": 320
      },
      "defaults": {
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true,
        "repeatingGroupConfig": {
          "schemaVersion": 1,
          "apiClientId": null,
          "operationId": null,
          "listPath": "",
          "rowHeightMode": "dynamic",
          "fixedRowHeight": 120,
          "minRowHeight": 80,
          "maxRowHeight": null,
          "gap": 8,
          "emptyMessage": "No data"
        }
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 420,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 320,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "Fit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerMode",
          "label": "Container layout",
          "type": "enum",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "align-to-parent",
            "row",
            "column"
          ],
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerPaddingTop",
          "label": "Padding top",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Padding",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerPaddingRight",
          "label": "Padding right",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Padding",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerPaddingBottom",
          "label": "Padding bottom",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Padding",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerPaddingLeft",
          "label": "Padding left",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Padding",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerGap",
          "label": "Gap",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Flow",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerWrap",
          "label": "Wrap",
          "type": "boolean",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": false,
          "inspectorGroup": "Flow",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerJustifyContent",
          "label": "Justify content",
          "type": "enum",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "space-between",
            "space-around"
          ],
          "inspectorGroup": "Alignment",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerAlignItems",
          "label": "Default alignment",
          "description": "Default cross-axis alignment for children. Each child can override it with Item alignment.",
          "type": "enum",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "repeatingGroupConfig",
          "label": "Data source and rows",
          "type": "repeating-group-config",
          "category": "Repeating Group",
          "source": "props",
          "defaultValue": {
            "schemaVersion": 1,
            "apiClientId": null,
            "operationId": null,
            "listPath": "",
            "rowHeightMode": "dynamic",
            "fixedRowHeight": 120,
            "minRowHeight": 80,
            "maxRowHeight": null,
            "gap": 8,
            "emptyMessage": "No data"
          },
          "designerAction": "repeating-group-configurator",
          "description": "Choose the API response list and row sizing. Children form one responsive row template.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnClick",
          "label": "OnClick",
          "category": "Behavior",
          "eventType": "MouseEvent"
        },
        {
          "name": "OnDblClick",
          "label": "OnDblClick",
          "category": "Behavior",
          "eventType": "MouseEvent"
        }
      ]
    },
    {
      "type": "WebPopup",
      "displayName": "Popup",
      "namePrefix": "Popup",
      "palette": {
        "category": "Nonvisual",
        "caption": "Popup"
      },
      "icon": "component-popup",
      "visual": true,
      "styleEditor": {
        "essentialProperties": [
          "textColor",
          "fontFamily",
          "fontSize",
          "fontWeight",
          "lineHeight",
          "textAlign",
          "backgroundColor",
          "borderWidth",
          "borderStyle",
          "borderColor",
          "borderRadius",
          "boxShadow"
        ]
      },
      "designerPresentation": "tray",
      "canHaveChildren": true,
      "defaultEvent": "OnShow",
      "defaultBounds": {
        "width": 360,
        "height": 200
      },
      "defaults": {
        "modal": true,
        "visible": false,
        "collapseWhenHidden": true,
        "enabled": true
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 360,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 200,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Preserves the shared visibility contract; popup dialogs never participate in page layout.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerMode",
          "label": "Container layout",
          "type": "enum",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "align-to-parent",
            "row",
            "column"
          ],
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerPaddingTop",
          "label": "Padding top",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Padding",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerPaddingRight",
          "label": "Padding right",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Padding",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerPaddingBottom",
          "label": "Padding bottom",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Padding",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerPaddingLeft",
          "label": "Padding left",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Padding",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerGap",
          "label": "Gap",
          "type": "number",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": 0,
          "inspectorGroup": "Flow",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerWrap",
          "label": "Wrap",
          "type": "boolean",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": false,
          "inspectorGroup": "Flow",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerJustifyContent",
          "label": "Justify content",
          "type": "enum",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "space-between",
            "space-around"
          ],
          "inspectorGroup": "Alignment",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "containerAlignItems",
          "label": "Default alignment",
          "description": "Default cross-axis alignment for children. Each child can override it with Item alignment.",
          "type": "enum",
          "category": "Children layout",
          "source": "layout-container",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "modal",
          "label": "Modal",
          "description": "When opened, prevents interaction with the page while the popup is visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnShow",
          "label": "OnShow",
          "category": "Behavior",
          "eventType": "Event"
        },
        {
          "name": "OnHide",
          "label": "OnHide",
          "category": "Behavior",
          "eventType": "Event"
        },
        {
          "name": "OnClose",
          "label": "OnClose",
          "category": "Behavior",
          "eventType": "Event"
        },
        {
          "name": "OnCancel",
          "label": "OnCancel",
          "category": "Behavior",
          "eventType": "Event"
        }
      ]
    },
    {
      "type": "WebApiClient",
      "displayName": "API Client",
      "namePrefix": "ApiClient",
      "palette": {
        "category": "Nonvisual",
        "caption": "API Client"
      },
      "icon": "component-api-client",
      "visual": false,
      "canHaveChildren": false,
      "defaultEvent": null,
      "designerAction": "api-client-tester",
      "defaultBounds": {
        "width": 112,
        "height": 52
      },
      "defaults": {
        "baseUrl": "",
        "apiClientConfig": {
          "schemaVersion": 1,
          "defaultHeaders": [],
          "timeoutMs": 30000,
          "operations": [
            {
              "id": "operation-1",
              "name": "Request",
              "method": "GET",
              "path": "",
              "headers": [],
              "query": [],
              "body": {
                "kind": "none",
                "content": ""
              },
              "credentials": "omit",
              "timeoutMs": null,
              "responseSchema": null
            }
          ]
        }
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "baseUrl",
          "label": "Base URL",
          "type": "string",
          "category": "Connection",
          "source": "props",
          "defaultValue": "",
          "description": "Custom API URL. RestGo-bound clients use the fixed URL from RestGo integration > Connection.",
          "conditionalReadOnly": true,
          "derivedDefault": false
        },
        {
          "name": "apiClientConfig",
          "label": "Requests",
          "type": "api-client-config",
          "category": "API Client",
          "source": "props",
          "defaultValue": {
            "schemaVersion": 1,
            "defaultHeaders": [],
            "timeoutMs": 30000,
            "operations": [
              {
                "id": "operation-1",
                "name": "Request",
                "method": "GET",
                "path": "",
                "headers": [],
                "query": [],
                "body": {
                  "kind": "none",
                  "content": ""
                },
                "credentials": "omit",
                "timeoutMs": null,
                "responseSchema": null
              }
            ]
          },
          "description": "Configure requests in the Designer; access RequestName.parameter and RequestName.execute() in code with typed request objects.",
          "designerAction": "api-client-tester",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnRequest",
          "label": "OnRequest",
          "category": "Request",
          "eventType": "Event",
          "eventDetailType": "WebApiOperationEventDetail"
        },
        {
          "name": "OnSuccess",
          "label": "OnSuccess",
          "category": "Request",
          "eventType": "Event",
          "eventDetailType": "WebApiOperationEventDetail"
        },
        {
          "name": "OnError",
          "label": "OnError",
          "category": "Request",
          "eventType": "Event",
          "eventDetailType": "WebApiOperationEventDetail"
        },
        {
          "name": "OnComplete",
          "label": "OnComplete",
          "category": "Request",
          "eventType": "Event",
          "eventDetailType": "WebApiOperationEventDetail"
        }
      ]
    },
    {
      "type": "WebTimer",
      "displayName": "Timer",
      "namePrefix": "Timer",
      "palette": {
        "category": "Nonvisual",
        "caption": "Timer"
      },
      "icon": "timer",
      "visual": false,
      "canHaveChildren": false,
      "defaultEvent": "OnTimer",
      "defaultBounds": {
        "width": 112,
        "height": 52
      },
      "defaults": {
        "time": 1000,
        "loop": true,
        "enabled": false
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "time",
          "label": "Time (ms)",
          "type": "number",
          "category": "Behavior",
          "source": "props",
          "defaultValue": 1000,
          "description": "Interval in milliseconds (1 to 2147483647). Changing it restarts the current interval.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "loop",
          "label": "Loop",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": false,
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnTimer",
          "label": "OnTimer",
          "category": "Timer",
          "eventType": "Event",
          "eventDetailType": "WebTimerEventDetail",
          "eventDetailProperties": [
            "tick"
          ]
        },
        {
          "name": "OnStart",
          "label": "OnStart",
          "category": "Timer",
          "eventType": "Event"
        },
        {
          "name": "OnStop",
          "label": "OnStop",
          "category": "Timer",
          "eventType": "Event"
        }
      ]
    },
    {
      "type": "WebPayments",
      "displayName": "Payments",
      "namePrefix": "Payments",
      "palette": {
        "category": "Nonvisual",
        "caption": "Payments"
      },
      "icon": "credit-card",
      "visual": false,
      "canHaveChildren": false,
      "defaultEvent": "OnPaymentSucceeded",
      "defaultBounds": {
        "width": 32,
        "height": 32
      },
      "defaults": {
        "gatewaySlug": "",
        "mode": "payment",
        "enabled": true,
        "autoResume": true,
        "autoWatch": true,
        "persistAttempts": true,
        "pollInterval": 2000,
        "pollTimeout": 60000
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "gatewaySlug",
          "label": "Gateway slug",
          "type": "string",
          "category": "Payments",
          "source": "props",
          "defaultValue": "",
          "description": "Gateway configured in RestGo. Uses the project connection and customer Authentication session.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "mode",
          "label": "Mode",
          "type": "enum",
          "category": "Payments",
          "source": "props",
          "options": [
            "payment",
            "subscription"
          ],
          "defaultValue": "payment",
          "description": "Default for new attempts. Existing attempts keep their original mode.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "description": "Allows explicit operations. Never creates a charge automatically.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "autoResume",
          "label": "Auto resume",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "description": "Restores and queries a saved operation after session restoration. Never creates a charge or opens checkout automatically.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "autoWatch",
          "label": "Auto watch",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "description": "Automatically follows pending financial confirmation and source synchronization for the selected operation.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "persistAttempts",
          "label": "Persist attempts",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "description": "Automatically saves recovery data before requests and checkout navigation. Requires browser storage.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "pollInterval",
          "label": "Poll interval (ms)",
          "type": "number",
          "category": "Behavior",
          "source": "props",
          "defaultValue": 2000,
          "description": "Interval for explicit checkout waiting or operation observation.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "pollTimeout",
          "label": "Poll timeout (ms)",
          "type": "number",
          "category": "Behavior",
          "source": "props",
          "defaultValue": 60000,
          "description": "Local observation deadline. A timeout never marks a payment failed.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnPaymentSucceeded",
          "category": "Payments",
          "eventDetailType": "WebPaymentsCheckoutEventDetail",
          "eventDetailProperties": [
            "operation"
          ]
        },
        {
          "name": "OnSubscriptionActivated",
          "category": "Payments",
          "eventDetailType": "WebPaymentsCheckoutEventDetail",
          "eventDetailProperties": [
            "operation"
          ]
        },
        {
          "name": "OnSubscriptionCanceled",
          "category": "Payments",
          "eventDetailType": "WebPaymentsCheckoutEventDetail",
          "eventDetailProperties": [
            "operation"
          ]
        },
        {
          "name": "OnCheckoutCreated",
          "category": "Payments",
          "eventDetailType": "WebPaymentsCheckoutEventDetail",
          "eventDetailProperties": [
            "operation"
          ]
        },
        {
          "name": "OnCheckoutReady",
          "category": "Payments",
          "eventDetailType": "WebPaymentsCheckoutEventDetail",
          "eventDetailProperties": [
            "operation"
          ]
        },
        {
          "name": "OnCheckoutOpened",
          "category": "Payments",
          "eventDetailType": "WebPaymentsCheckoutEventDetail",
          "eventDetailProperties": [
            "operation"
          ]
        },
        {
          "name": "OnOperationChange",
          "category": "Payments",
          "eventDetailType": "WebPaymentsOperationEventDetail",
          "eventDetailProperties": [
            "previous",
            "operation"
          ]
        },
        {
          "name": "OnSynchronizationChange",
          "category": "Payments",
          "eventDetailType": "WebPaymentsSynchronizationEventDetail",
          "eventDetailProperties": [
            "operation",
            "pending",
            "error"
          ]
        },
        {
          "name": "OnHistoryChange",
          "category": "Payments",
          "eventDetailType": "WebPaymentsHistoryEventDetail",
          "eventDetailProperties": [
            "items",
            "nextCursor",
            "hasMore"
          ]
        },
        {
          "name": "OnStateChange",
          "category": "Payments",
          "eventDetailType": "WebPaymentsStateEventDetail",
          "eventDetailProperties": [
            "previous",
            "state"
          ]
        },
        {
          "name": "OnRestored",
          "category": "Payments",
          "eventDetailType": "WebPaymentsResumeEventDetail",
          "eventDetailProperties": [
            "checkpoint",
            "operation",
            "automatic"
          ]
        },
        {
          "name": "OnError",
          "category": "Payments",
          "eventDetailType": "WebPaymentsErrorEventDetail",
          "eventDetailProperties": [
            "action",
            "operationId",
            "error"
          ]
        },
        {
          "name": "OnRequestComplete",
          "category": "Payments",
          "eventDetailType": "WebPaymentsRequestEventDetail",
          "eventDetailProperties": [
            "action",
            "operationId",
            "error"
          ]
        }
      ]
    },
    {
      "type": "WebFileUpload",
      "displayName": "File Upload",
      "namePrefix": "FileUpload",
      "palette": {
        "category": "Nonvisual",
        "caption": "File Upload"
      },
      "icon": "component-file-upload",
      "visual": false,
      "canHaveChildren": false,
      "defaultEvent": "OnChange",
      "defaultBounds": {
        "width": 112,
        "height": 52
      },
      "defaults": {
        "accept": "",
        "isPublic": false,
        "enabled": true
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "accept",
          "label": "Accepted file types",
          "type": "string",
          "category": "Behavior",
          "source": "props",
          "defaultValue": "",
          "description": "Native file chooser filter, such as image/* or .pdf,.txt. Empty accepts all file types.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "isPublic",
          "label": "Public file",
          "type": "boolean",
          "category": "Storage",
          "source": "props",
          "defaultValue": false,
          "description": "Default visibility when uploading. Private files require authorized access; upload options can override this value.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnChange",
          "label": "OnChange",
          "category": "Selection",
          "eventType": "Event",
          "eventDetailType": "WebFileUploadChangeEventDetail"
        },
        {
          "name": "OnSuccess",
          "label": "OnSuccess",
          "category": "Upload",
          "eventType": "Event",
          "eventDetailType": "WebFileUploadResult",
          "eventDetailProperties": [
            "id",
            "downloadUrl",
            "url",
            "isPublic"
          ]
        },
        {
          "name": "OnProgress",
          "label": "OnProgress",
          "category": "Upload",
          "eventType": "Event",
          "eventDetailType": "WebFileUploadProgressEventDetail",
          "eventDetailProperties": [
            "percentage",
            "loaded",
            "total",
            "lengthComputable"
          ]
        },
        {
          "name": "OnError",
          "label": "OnError",
          "category": "Upload",
          "eventType": "Event",
          "eventDetailType": "Error"
        },
        {
          "name": "OnComplete",
          "label": "OnComplete",
          "category": "Upload",
          "eventType": "Event",
          "eventDetailType": "WebFileUploadCompleteEventDetail",
          "eventDetailProperties": [
            "result",
            "error"
          ]
        }
      ]
    },
    {
      "type": "WebVideoUpload",
      "displayName": "Video Upload",
      "namePrefix": "VideoUpload",
      "palette": {
        "category": "Nonvisual",
        "caption": "Video Upload"
      },
      "icon": "video",
      "visual": false,
      "canHaveChildren": false,
      "defaultEvent": "OnChange",
      "defaultBounds": {
        "width": 32,
        "height": 32
      },
      "defaults": {
        "accept": ".mp4,.mov,.mkv,.webm",
        "enabled": true,
        "title": "",
        "descri": "",
        "isPublic": false,
        "chunkSizeBytes": 8388608,
        "maxFileSizeMB": null,
        "maxDurationSeconds": null
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "accept",
          "label": "Accepted video types",
          "type": "string",
          "category": "Behavior",
          "source": "props",
          "defaultValue": ".mp4,.mov,.mkv,.webm",
          "description": "Chooser filter. RestGo accepts MP4, MOV, MKV and WebM.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "title",
          "label": "Title",
          "type": "string",
          "category": "Video",
          "source": "props",
          "defaultValue": "",
          "description": "Empty uses the filename as the title on RestGo.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "descri",
          "label": "Description",
          "type": "string",
          "category": "Video",
          "source": "props",
          "defaultValue": "",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "isPublic",
          "label": "Public video",
          "type": "boolean",
          "category": "Video",
          "source": "props",
          "defaultValue": false,
          "description": "Public upload requires server permission. Private by default.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "chunkSizeBytes",
          "label": "Chunk size (bytes)",
          "type": "number",
          "category": "Upload",
          "source": "props",
          "defaultValue": 8388608,
          "description": "Positive integer. Automatically capped at the session maxChunkBytes.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "maxFileSizeMB",
          "label": "Maximum file size (MB)",
          "type": "number",
          "category": "Limits",
          "source": "props",
          "defaultValue": null,
          "nullable": true,
          "description": "Optional local limit, 1 MB = 1024² bytes. Leave empty for no local limit; server limits still apply.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "maxDurationSeconds",
          "label": "Maximum duration (seconds)",
          "type": "number",
          "category": "Limits",
          "source": "props",
          "defaultValue": null,
          "nullable": true,
          "description": "Optional positive limit. The browser must be able to read the duration; leave empty to disable.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnChange",
          "category": "Selection",
          "eventDetailType": "WebVideoUploadChangeEventDetail"
        },
        {
          "name": "OnProgress",
          "category": "Upload",
          "eventDetailType": "WebVideoUploadProgressEventDetail",
          "eventDetailProperties": [
            "confirmedBytes",
            "totalBytes",
            "percentage",
            "chunk"
          ]
        },
        {
          "name": "OnStateChange",
          "category": "Upload",
          "eventDetailType": "WebVideoUploadStateEventDetail",
          "eventDetailProperties": [
            "previous",
            "state"
          ]
        },
        {
          "name": "OnUploadComplete",
          "category": "Upload",
          "eventDetailType": "WebVideoUploadResult"
        },
        {
          "name": "OnProcessingProgress",
          "category": "Processing",
          "eventDetailType": "WebVideoUploadProcessingEventDetail",
          "eventDetailProperties": [
            "video",
            "jobs"
          ]
        },
        {
          "name": "OnReady",
          "category": "Processing",
          "eventDetailType": "WebVideoUploadResult"
        },
        {
          "name": "OnError",
          "category": "Upload",
          "eventDetailType": "Error"
        },
        {
          "name": "OnComplete",
          "category": "Upload",
          "eventDetailType": "WebVideoUploadCompleteEventDetail",
          "eventDetailProperties": [
            "operation",
            "video",
            "error"
          ]
        }
      ]
    },
    {
      "type": "WebVideoPlayer",
      "displayName": "Video Player",
      "namePrefix": "VideoPlayer",
      "palette": {
        "category": "Standard",
        "caption": "Video Player"
      },
      "icon": "video",
      "visual": true,
      "canHaveChildren": false,
      "defaultEvent": "OnLoaded",
      "styleEditor": {
        "essentialProperties": [
          "objectFit",
          "objectPosition",
          "backgroundColor",
          "borderWidth",
          "borderStyle",
          "borderColor",
          "borderRadius",
          "boxShadow",
          "opacity",
          "cursor"
        ]
      },
      "defaultBounds": {
        "width": 480,
        "height": 270
      },
      "defaults": {
        "source": null,
        "controls": true,
        "autoplay": false,
        "muted": false,
        "loop": false,
        "playsInline": true,
        "volume": 1,
        "playbackRate": 1,
        "objectFit": "contain",
        "aspectRatio": "none",
        "quality": "auto",
        "poster": "",
        "visible": true,
        "collapseWhenHidden": true,
        "enabled": true
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "x",
          "label": "Left",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "y",
          "label": "Top",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 0,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "width",
          "label": "Width",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 480,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "height",
          "label": "Height",
          "type": "number",
          "category": "Size & position",
          "source": "bounds",
          "defaultValue": 270,
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemWidth",
          "label": "Responsive width",
          "description": "Fit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHeight",
          "label": "Responsive height",
          "description": "Fit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "fixed",
          "options": [
            "fixed",
            "stretch",
            "fit-content"
          ],
          "inspectorGroup": "Sizing",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinWidth",
          "label": "Minimum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxWidth",
          "label": "Maximum width",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMinHeight",
          "label": "Minimum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemMaxHeight",
          "label": "Maximum height",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": null,
          "nullable": true,
          "inspectorGroup": "Limits",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemGrow",
          "label": "Grow",
          "type": "number",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemShrink",
          "label": "Shrink",
          "description": "Allows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.",
          "type": "boolean",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": true,
          "inspectorGroup": "Flex",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemAlignSelf",
          "label": "Item alignment",
          "description": "Cross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.",
          "type": "enum",
          "category": "Responsive size",
          "source": "layout-item",
          "defaultValue": "auto",
          "options": [
            "auto",
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Alignment",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemHorizontalAnchor",
          "label": "Horizontal anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemVerticalAnchor",
          "label": "Vertical anchor",
          "type": "enum",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": "start",
          "options": [
            "start",
            "center",
            "end",
            "stretch"
          ],
          "inspectorGroup": "Anchors",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemLeft",
          "label": "Left inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemRight",
          "label": "Right inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemTop",
          "label": "Top inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "itemBottom",
          "label": "Bottom inset",
          "type": "number",
          "category": "Anchors & offsets",
          "source": "layout-item",
          "defaultValue": 0,
          "inspectorGroup": "Offsets",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "margin",
          "label": "Margin",
          "description": "Outer spacing on all four sides, in pixels. Row and column layouts include this spacing between components.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "marginTop",
          "label": "Margin top",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginRight",
          "label": "Margin right",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginBottom",
          "label": "Margin bottom",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "marginLeft",
          "label": "Margin left",
          "description": "Outer spacing on this side, in pixels. Overrides the shared Margin value.",
          "type": "number",
          "category": "Spacing",
          "source": "props",
          "defaultValue": 0,
          "inspectorGroup": "Individual sides",
          "editorLayout": "compact",
          "conditionalReadOnly": false,
          "derivedDefault": true
        },
        {
          "name": "visible",
          "label": "Visible",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "collapseWhenHidden",
          "label": "Collapse when hidden",
          "description": "Removes the component from the layout while it is not visible.",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "enabled",
          "label": "Enabled",
          "type": "boolean",
          "category": "Behavior",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "tabIndex",
          "label": "TabIndex",
          "type": "number",
          "category": "Behavior",
          "source": "props",
          "defaultValue": 0,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "aspectRatio",
          "label": "Aspect ratio",
          "type": "enum",
          "category": "Video",
          "source": "props",
          "defaultValue": "none",
          "options": [
            "none",
            "16:9",
            "9:16"
          ],
          "description": "Keep a fixed ratio by calculating height from the responsive width. none uses the saved height rules.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "source",
          "label": "Video source",
          "type": "video-source",
          "category": "Video",
          "source": "props",
          "defaultValue": null,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "controls",
          "label": "Show controls",
          "type": "boolean",
          "category": "Video",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "autoplay",
          "label": "Autoplay",
          "type": "boolean",
          "category": "Video",
          "source": "props",
          "defaultValue": false,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "muted",
          "label": "Muted",
          "type": "boolean",
          "category": "Video",
          "source": "props",
          "defaultValue": false,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "loop",
          "label": "Loop",
          "type": "boolean",
          "category": "Video",
          "source": "props",
          "defaultValue": false,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "playsInline",
          "label": "Play inline",
          "type": "boolean",
          "category": "Video",
          "source": "props",
          "defaultValue": true,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "volume",
          "label": "Volume (0–1)",
          "type": "number",
          "category": "Video",
          "source": "props",
          "defaultValue": 1,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "playbackRate",
          "label": "Playback rate",
          "type": "number",
          "category": "Video",
          "source": "props",
          "defaultValue": 1,
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "objectFit",
          "label": "Object fit",
          "type": "enum",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "contain",
          "options": [
            "contain",
            "cover",
            "fill",
            "none",
            "scale-down"
          ],
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "quality",
          "label": "Initial quality",
          "type": "enum",
          "category": "Video",
          "source": "props",
          "defaultValue": "auto",
          "options": [
            "auto"
          ],
          "description": "Manual qualities are discovered from the loaded video. Use the playback quality menu or SetQuality().",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "poster",
          "label": "Poster",
          "type": "string",
          "category": "Appearance",
          "source": "props",
          "defaultValue": "",
          "description": "Optional poster URL. RestGo thumbnails are fetched with the current access policy.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "currentRowBindings",
          "label": "Current row",
          "type": "current-row-bindings",
          "category": "Data",
          "source": "props",
          "defaultValue": [],
          "designerAction": "current-row-bindings",
          "description": "Bind writable visual values to fields of this repeated row.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnLoaded",
          "label": "OnLoaded",
          "category": "Video",
          "eventType": "Event",
          "eventDetailType": "WebVideoPlayerLoadedEventDetail",
          "eventDetailProperties": [
            "source",
            "duration",
            "availableQualities"
          ]
        },
        {
          "name": "OnPlay",
          "label": "OnPlay",
          "category": "Video",
          "eventType": "Event",
          "eventDetailType": "WebVideoPlayerTimeEventDetail",
          "eventDetailProperties": [
            "currentTime",
            "duration"
          ]
        },
        {
          "name": "OnPause",
          "label": "OnPause",
          "category": "Video",
          "eventType": "Event",
          "eventDetailType": "WebVideoPlayerTimeEventDetail",
          "eventDetailProperties": [
            "currentTime",
            "duration"
          ]
        },
        {
          "name": "OnEnded",
          "label": "OnEnded",
          "category": "Video",
          "eventType": "Event",
          "eventDetailType": "WebVideoPlayerTimeEventDetail",
          "eventDetailProperties": [
            "currentTime",
            "duration"
          ]
        },
        {
          "name": "OnTimeUpdate",
          "label": "OnTimeUpdate",
          "category": "Video",
          "eventType": "Event",
          "eventDetailType": "WebVideoPlayerTimeEventDetail",
          "eventDetailProperties": [
            "currentTime",
            "duration"
          ]
        },
        {
          "name": "OnBuffering",
          "label": "OnBuffering",
          "category": "Video",
          "eventType": "Event",
          "eventDetailType": "WebVideoPlayerBufferingEventDetail",
          "eventDetailProperties": [
            "buffering"
          ]
        },
        {
          "name": "OnQualityChange",
          "label": "OnQualityChange",
          "category": "Video",
          "eventType": "Event",
          "eventDetailType": "WebVideoPlayerQualityEventDetail",
          "eventDetailProperties": [
            "requested",
            "current"
          ]
        },
        {
          "name": "OnError",
          "label": "OnError",
          "category": "Video",
          "eventType": "Event",
          "eventDetailType": "Error"
        }
      ]
    },
    {
      "type": "WebReportBuilder",
      "displayName": "Report Builder",
      "namePrefix": "ReportBuilder",
      "palette": {
        "category": "Nonvisual",
        "caption": "Report Builder"
      },
      "icon": "component-report-builder",
      "visual": false,
      "supportsStyles": false,
      "canHaveChildren": false,
      "designerAction": "report-builder",
      "defaultEvent": "OnSuccess",
      "defaultBounds": {
        "width": 160,
        "height": 40
      },
      "defaults": {
        "reportTemplate": {
          "schemaVersion": 1,
          "name": "Report",
          "paper": {
            "size": "A4",
            "orientation": "portrait",
            "margins": {
              "top": 15,
              "right": 15,
              "bottom": 15,
              "left": 15
            }
          },
          "parameters": [],
          "bands": [
            {
              "id": "report-title",
              "kind": "title",
              "height": 22,
              "elements": [
                {
                  "id": "report-heading",
                  "name": "Title",
                  "type": "text",
                  "x": 0,
                  "y": 0,
                  "width": 180,
                  "height": 12,
                  "value": {
                    "kind": "static",
                    "value": "My report"
                  },
                  "fontSize": 22,
                  "color": "#1e293b",
                  "bold": true,
                  "align": "left"
                }
              ]
            },
            {
              "id": "report-page-header",
              "kind": "pageHeader",
              "height": 10,
              "elements": []
            },
            {
              "id": "report-detail",
              "kind": "detail",
              "height": 30,
              "elements": []
            },
            {
              "id": "report-page-footer",
              "kind": "pageFooter",
              "height": 10,
              "elements": [
                {
                  "id": "report-page-number",
                  "name": "Page",
                  "type": "text",
                  "x": 150,
                  "y": 0,
                  "width": 30,
                  "height": 8,
                  "value": {
                    "kind": "system",
                    "value": "pageNumber"
                  },
                  "fontSize": 9,
                  "color": "#64748b",
                  "bold": false,
                  "align": "right"
                }
              ]
            },
            {
              "id": "report-summary",
              "kind": "summary",
              "height": 12,
              "elements": []
            }
          ]
        },
        "previewMode": "modal",
        "fileName": "report.pdf"
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "reportTemplate",
          "label": "Report template",
          "type": "report-template",
          "category": "Report",
          "source": "props",
          "designerAction": "report-builder",
          "defaultValue": {
            "schemaVersion": 1,
            "name": "Report",
            "paper": {
              "size": "A4",
              "orientation": "portrait",
              "margins": {
                "top": 15,
                "right": 15,
                "bottom": 15,
                "left": 15
              }
            },
            "parameters": [],
            "bands": [
              {
                "id": "report-title",
                "kind": "title",
                "height": 22,
                "elements": [
                  {
                    "id": "report-heading",
                    "name": "Title",
                    "type": "text",
                    "x": 0,
                    "y": 0,
                    "width": 180,
                    "height": 12,
                    "value": {
                      "kind": "static",
                      "value": "My report"
                    },
                    "fontSize": 22,
                    "color": "#1e293b",
                    "bold": true,
                    "align": "left"
                  }
                ]
              },
              {
                "id": "report-page-header",
                "kind": "pageHeader",
                "height": 10,
                "elements": []
              },
              {
                "id": "report-detail",
                "kind": "detail",
                "height": 30,
                "elements": []
              },
              {
                "id": "report-page-footer",
                "kind": "pageFooter",
                "height": 10,
                "elements": [
                  {
                    "id": "report-page-number",
                    "name": "Page",
                    "type": "text",
                    "x": 150,
                    "y": 0,
                    "width": 30,
                    "height": 8,
                    "value": {
                      "kind": "system",
                      "value": "pageNumber"
                    },
                    "fontSize": 9,
                    "color": "#64748b",
                    "bold": false,
                    "align": "right"
                  }
                ]
              },
              {
                "id": "report-summary",
                "kind": "summary",
                "height": 12,
                "elements": []
              }
            ]
          },
          "description": "Open the report designer to edit bands, fields, repeated records and parameters.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "previewMode",
          "label": "Preview destination",
          "type": "enum",
          "category": "Report",
          "source": "props",
          "options": [
            "modal",
            "new-tab",
            "download"
          ],
          "defaultValue": "modal",
          "description": "Show the generated PDF in a modal, open it in a new tab, or download it directly.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "fileName",
          "label": "PDF file name",
          "type": "string",
          "category": "Report",
          "source": "props",
          "defaultValue": "report.pdf",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnGenerate",
          "category": "Report",
          "eventDetailType": "WebReportGenerationOptions"
        },
        {
          "name": "OnSuccess",
          "category": "Report",
          "eventDetailType": "WebReportResult",
          "eventDetailProperties": [
            "blob",
            "pageCount",
            "fileName"
          ]
        },
        {
          "name": "OnError",
          "category": "Report",
          "eventDetailType": "Error"
        }
      ]
    },
    {
      "type": "WebToast",
      "displayName": "Toast",
      "namePrefix": "Toast",
      "palette": {
        "category": "Nonvisual",
        "caption": "Toast"
      },
      "icon": "bell",
      "visual": true,
      "supportsCurrentRowBindings": false,
      "disposeWithDocument": true,
      "designerPresentation": "tray",
      "canHaveChildren": false,
      "defaultEvent": "OnShow",
      "defaultBounds": {
        "width": 340,
        "height": 64
      },
      "styleEditor": {
        "essentialProperties": [
          "fontFamily",
          "fontSize",
          "borderRadius",
          "boxShadow",
          "toastSucessBackgroundColor",
          "toastSucessTextColor",
          "toastAlertBackgroundColor",
          "toastAlertTextColor",
          "toastDangerBackgroundColor",
          "toastDangerTextColor",
          "toastNotifierBackgroundColor",
          "toastNotifierTextColor"
        ]
      },
      "defaults": {
        "duration": 4000,
        "position": "top-right",
        "sucessIcon": "check-circle",
        "alertIcon": "warning",
        "dangerIcon": "alert-circle",
        "notifierIcon": "info"
      },
      "properties": [
        {
          "name": "name",
          "label": "Name",
          "type": "string",
          "category": "Identity",
          "source": "node",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "duration",
          "label": "Duration (ms)",
          "type": "number",
          "category": "Behavior",
          "source": "props",
          "defaultValue": 4000,
          "description": "Time visible in milliseconds. Zero keeps the notification until dismissed.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "position",
          "label": "Position",
          "type": "enum",
          "category": "Behavior",
          "source": "props",
          "defaultValue": "top-right",
          "options": [
            "top-left",
            "top-center",
            "top-right",
            "middle-left",
            "middle-center",
            "middle-right",
            "bottom-left",
            "bottom-center",
            "bottom-right"
          ],
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "sucessIcon",
          "label": "Sucess icon",
          "type": "icon",
          "category": "Icons",
          "source": "props",
          "defaultValue": "check-circle",
          "options": [
            "",
            "add",
            "chevron-down",
            "chevron-right",
            "close",
            "delete",
            "folder-open",
            "info",
            "layers",
            "lightbulb",
            "palette",
            "page",
            "play",
            "redo",
            "save",
            "search",
            "settings",
            "style",
            "undo",
            "arrow-left",
            "arrow-right",
            "arrow-up",
            "arrow-down",
            "chevron-left",
            "chevron-up",
            "chevrons-left",
            "chevrons-right",
            "chevrons-up",
            "chevrons-down",
            "menu",
            "more-horizontal",
            "more-vertical",
            "home",
            "external-link",
            "check",
            "check-circle",
            "check-square",
            "minus",
            "minus-circle",
            "plus-circle",
            "edit",
            "copy",
            "cut",
            "clipboard",
            "download",
            "upload",
            "refresh",
            "link",
            "unlink",
            "share",
            "send",
            "printer",
            "archive",
            "eye",
            "eye-off",
            "lock",
            "unlock",
            "filter",
            "sort-asc",
            "sort-desc",
            "warning",
            "alert-circle",
            "help-circle",
            "bell",
            "bookmark",
            "flag",
            "heart",
            "star",
            "folder",
            "file",
            "file-plus",
            "file-text",
            "text",
            "image",
            "camera",
            "database",
            "table",
            "list",
            "grid",
            "chart-bar",
            "chart-line",
            "code",
            "terminal",
            "cloud",
            "upload-cloud",
            "download-cloud",
            "user",
            "users",
            "user-plus",
            "mail",
            "phone",
            "globe",
            "map-pin",
            "calendar",
            "clock",
            "pause",
            "stop",
            "skip-back",
            "skip-forward",
            "volume-2",
            "volume-x",
            "video",
            "login",
            "logout",
            "sign-in",
            "sign-out",
            "door-in",
            "door-out",
            "door-open",
            "door-closed",
            "key",
            "key-round",
            "shield",
            "shield-check",
            "shield-alert",
            "shield-x",
            "fingerprint",
            "badge-check",
            "id-card",
            "user-check",
            "user-x",
            "user-minus",
            "user-round",
            "contact",
            "accessibility",
            "password",
            "at-sign",
            "scan-face",
            "circle",
            "circle-dot",
            "square",
            "move",
            "maximize",
            "minimize",
            "expand",
            "shrink",
            "fullscreen",
            "panel-left",
            "panel-right",
            "panel-top",
            "panel-bottom",
            "sidebar-left",
            "sidebar-right",
            "layout",
            "columns",
            "rows",
            "align-left",
            "align-center",
            "align-right",
            "align-justify",
            "rotate-cw",
            "rotate-ccw",
            "repeat",
            "folder-plus",
            "folder-minus",
            "folder-x",
            "folder-search",
            "folder-check",
            "folder-lock",
            "file-minus",
            "file-x",
            "file-check",
            "file-code",
            "file-image",
            "file-video",
            "file-audio",
            "file-archive",
            "file-lock",
            "file-search",
            "file-copy",
            "files",
            "hard-drive",
            "server",
            "cpu",
            "monitor",
            "laptop",
            "smartphone",
            "tablet",
            "wifi",
            "bluetooth",
            "message-circle",
            "message-square",
            "messages-square",
            "message-plus",
            "message-x",
            "inbox",
            "outbox",
            "reply",
            "reply-all",
            "forward-mail",
            "paperclip",
            "attachment",
            "rss",
            "megaphone",
            "microphone",
            "microphone-off",
            "headset",
            "radio",
            "sms",
            "cart",
            "shopping-bag",
            "credit-card",
            "receipt",
            "wallet",
            "dollar-sign",
            "percent",
            "tags",
            "gift",
            "truck",
            "building",
            "briefcase",
            "target",
            "trophy",
            "toggle-right"
          ],
          "description": "Icon shown for this state. An empty value hides the icon.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "alertIcon",
          "label": "Alert icon",
          "type": "icon",
          "category": "Icons",
          "source": "props",
          "defaultValue": "warning",
          "options": [
            "",
            "add",
            "chevron-down",
            "chevron-right",
            "close",
            "delete",
            "folder-open",
            "info",
            "layers",
            "lightbulb",
            "palette",
            "page",
            "play",
            "redo",
            "save",
            "search",
            "settings",
            "style",
            "undo",
            "arrow-left",
            "arrow-right",
            "arrow-up",
            "arrow-down",
            "chevron-left",
            "chevron-up",
            "chevrons-left",
            "chevrons-right",
            "chevrons-up",
            "chevrons-down",
            "menu",
            "more-horizontal",
            "more-vertical",
            "home",
            "external-link",
            "check",
            "check-circle",
            "check-square",
            "minus",
            "minus-circle",
            "plus-circle",
            "edit",
            "copy",
            "cut",
            "clipboard",
            "download",
            "upload",
            "refresh",
            "link",
            "unlink",
            "share",
            "send",
            "printer",
            "archive",
            "eye",
            "eye-off",
            "lock",
            "unlock",
            "filter",
            "sort-asc",
            "sort-desc",
            "warning",
            "alert-circle",
            "help-circle",
            "bell",
            "bookmark",
            "flag",
            "heart",
            "star",
            "folder",
            "file",
            "file-plus",
            "file-text",
            "text",
            "image",
            "camera",
            "database",
            "table",
            "list",
            "grid",
            "chart-bar",
            "chart-line",
            "code",
            "terminal",
            "cloud",
            "upload-cloud",
            "download-cloud",
            "user",
            "users",
            "user-plus",
            "mail",
            "phone",
            "globe",
            "map-pin",
            "calendar",
            "clock",
            "pause",
            "stop",
            "skip-back",
            "skip-forward",
            "volume-2",
            "volume-x",
            "video",
            "login",
            "logout",
            "sign-in",
            "sign-out",
            "door-in",
            "door-out",
            "door-open",
            "door-closed",
            "key",
            "key-round",
            "shield",
            "shield-check",
            "shield-alert",
            "shield-x",
            "fingerprint",
            "badge-check",
            "id-card",
            "user-check",
            "user-x",
            "user-minus",
            "user-round",
            "contact",
            "accessibility",
            "password",
            "at-sign",
            "scan-face",
            "circle",
            "circle-dot",
            "square",
            "move",
            "maximize",
            "minimize",
            "expand",
            "shrink",
            "fullscreen",
            "panel-left",
            "panel-right",
            "panel-top",
            "panel-bottom",
            "sidebar-left",
            "sidebar-right",
            "layout",
            "columns",
            "rows",
            "align-left",
            "align-center",
            "align-right",
            "align-justify",
            "rotate-cw",
            "rotate-ccw",
            "repeat",
            "folder-plus",
            "folder-minus",
            "folder-x",
            "folder-search",
            "folder-check",
            "folder-lock",
            "file-minus",
            "file-x",
            "file-check",
            "file-code",
            "file-image",
            "file-video",
            "file-audio",
            "file-archive",
            "file-lock",
            "file-search",
            "file-copy",
            "files",
            "hard-drive",
            "server",
            "cpu",
            "monitor",
            "laptop",
            "smartphone",
            "tablet",
            "wifi",
            "bluetooth",
            "message-circle",
            "message-square",
            "messages-square",
            "message-plus",
            "message-x",
            "inbox",
            "outbox",
            "reply",
            "reply-all",
            "forward-mail",
            "paperclip",
            "attachment",
            "rss",
            "megaphone",
            "microphone",
            "microphone-off",
            "headset",
            "radio",
            "sms",
            "cart",
            "shopping-bag",
            "credit-card",
            "receipt",
            "wallet",
            "dollar-sign",
            "percent",
            "tags",
            "gift",
            "truck",
            "building",
            "briefcase",
            "target",
            "trophy",
            "toggle-right"
          ],
          "description": "Icon shown for this state. An empty value hides the icon.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "dangerIcon",
          "label": "Danger icon",
          "type": "icon",
          "category": "Icons",
          "source": "props",
          "defaultValue": "alert-circle",
          "options": [
            "",
            "add",
            "chevron-down",
            "chevron-right",
            "close",
            "delete",
            "folder-open",
            "info",
            "layers",
            "lightbulb",
            "palette",
            "page",
            "play",
            "redo",
            "save",
            "search",
            "settings",
            "style",
            "undo",
            "arrow-left",
            "arrow-right",
            "arrow-up",
            "arrow-down",
            "chevron-left",
            "chevron-up",
            "chevrons-left",
            "chevrons-right",
            "chevrons-up",
            "chevrons-down",
            "menu",
            "more-horizontal",
            "more-vertical",
            "home",
            "external-link",
            "check",
            "check-circle",
            "check-square",
            "minus",
            "minus-circle",
            "plus-circle",
            "edit",
            "copy",
            "cut",
            "clipboard",
            "download",
            "upload",
            "refresh",
            "link",
            "unlink",
            "share",
            "send",
            "printer",
            "archive",
            "eye",
            "eye-off",
            "lock",
            "unlock",
            "filter",
            "sort-asc",
            "sort-desc",
            "warning",
            "alert-circle",
            "help-circle",
            "bell",
            "bookmark",
            "flag",
            "heart",
            "star",
            "folder",
            "file",
            "file-plus",
            "file-text",
            "text",
            "image",
            "camera",
            "database",
            "table",
            "list",
            "grid",
            "chart-bar",
            "chart-line",
            "code",
            "terminal",
            "cloud",
            "upload-cloud",
            "download-cloud",
            "user",
            "users",
            "user-plus",
            "mail",
            "phone",
            "globe",
            "map-pin",
            "calendar",
            "clock",
            "pause",
            "stop",
            "skip-back",
            "skip-forward",
            "volume-2",
            "volume-x",
            "video",
            "login",
            "logout",
            "sign-in",
            "sign-out",
            "door-in",
            "door-out",
            "door-open",
            "door-closed",
            "key",
            "key-round",
            "shield",
            "shield-check",
            "shield-alert",
            "shield-x",
            "fingerprint",
            "badge-check",
            "id-card",
            "user-check",
            "user-x",
            "user-minus",
            "user-round",
            "contact",
            "accessibility",
            "password",
            "at-sign",
            "scan-face",
            "circle",
            "circle-dot",
            "square",
            "move",
            "maximize",
            "minimize",
            "expand",
            "shrink",
            "fullscreen",
            "panel-left",
            "panel-right",
            "panel-top",
            "panel-bottom",
            "sidebar-left",
            "sidebar-right",
            "layout",
            "columns",
            "rows",
            "align-left",
            "align-center",
            "align-right",
            "align-justify",
            "rotate-cw",
            "rotate-ccw",
            "repeat",
            "folder-plus",
            "folder-minus",
            "folder-x",
            "folder-search",
            "folder-check",
            "folder-lock",
            "file-minus",
            "file-x",
            "file-check",
            "file-code",
            "file-image",
            "file-video",
            "file-audio",
            "file-archive",
            "file-lock",
            "file-search",
            "file-copy",
            "files",
            "hard-drive",
            "server",
            "cpu",
            "monitor",
            "laptop",
            "smartphone",
            "tablet",
            "wifi",
            "bluetooth",
            "message-circle",
            "message-square",
            "messages-square",
            "message-plus",
            "message-x",
            "inbox",
            "outbox",
            "reply",
            "reply-all",
            "forward-mail",
            "paperclip",
            "attachment",
            "rss",
            "megaphone",
            "microphone",
            "microphone-off",
            "headset",
            "radio",
            "sms",
            "cart",
            "shopping-bag",
            "credit-card",
            "receipt",
            "wallet",
            "dollar-sign",
            "percent",
            "tags",
            "gift",
            "truck",
            "building",
            "briefcase",
            "target",
            "trophy",
            "toggle-right"
          ],
          "description": "Icon shown for this state. An empty value hides the icon.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        },
        {
          "name": "notifierIcon",
          "label": "Notifier icon",
          "type": "icon",
          "category": "Icons",
          "source": "props",
          "defaultValue": "info",
          "options": [
            "",
            "add",
            "chevron-down",
            "chevron-right",
            "close",
            "delete",
            "folder-open",
            "info",
            "layers",
            "lightbulb",
            "palette",
            "page",
            "play",
            "redo",
            "save",
            "search",
            "settings",
            "style",
            "undo",
            "arrow-left",
            "arrow-right",
            "arrow-up",
            "arrow-down",
            "chevron-left",
            "chevron-up",
            "chevrons-left",
            "chevrons-right",
            "chevrons-up",
            "chevrons-down",
            "menu",
            "more-horizontal",
            "more-vertical",
            "home",
            "external-link",
            "check",
            "check-circle",
            "check-square",
            "minus",
            "minus-circle",
            "plus-circle",
            "edit",
            "copy",
            "cut",
            "clipboard",
            "download",
            "upload",
            "refresh",
            "link",
            "unlink",
            "share",
            "send",
            "printer",
            "archive",
            "eye",
            "eye-off",
            "lock",
            "unlock",
            "filter",
            "sort-asc",
            "sort-desc",
            "warning",
            "alert-circle",
            "help-circle",
            "bell",
            "bookmark",
            "flag",
            "heart",
            "star",
            "folder",
            "file",
            "file-plus",
            "file-text",
            "text",
            "image",
            "camera",
            "database",
            "table",
            "list",
            "grid",
            "chart-bar",
            "chart-line",
            "code",
            "terminal",
            "cloud",
            "upload-cloud",
            "download-cloud",
            "user",
            "users",
            "user-plus",
            "mail",
            "phone",
            "globe",
            "map-pin",
            "calendar",
            "clock",
            "pause",
            "stop",
            "skip-back",
            "skip-forward",
            "volume-2",
            "volume-x",
            "video",
            "login",
            "logout",
            "sign-in",
            "sign-out",
            "door-in",
            "door-out",
            "door-open",
            "door-closed",
            "key",
            "key-round",
            "shield",
            "shield-check",
            "shield-alert",
            "shield-x",
            "fingerprint",
            "badge-check",
            "id-card",
            "user-check",
            "user-x",
            "user-minus",
            "user-round",
            "contact",
            "accessibility",
            "password",
            "at-sign",
            "scan-face",
            "circle",
            "circle-dot",
            "square",
            "move",
            "maximize",
            "minimize",
            "expand",
            "shrink",
            "fullscreen",
            "panel-left",
            "panel-right",
            "panel-top",
            "panel-bottom",
            "sidebar-left",
            "sidebar-right",
            "layout",
            "columns",
            "rows",
            "align-left",
            "align-center",
            "align-right",
            "align-justify",
            "rotate-cw",
            "rotate-ccw",
            "repeat",
            "folder-plus",
            "folder-minus",
            "folder-x",
            "folder-search",
            "folder-check",
            "folder-lock",
            "file-minus",
            "file-x",
            "file-check",
            "file-code",
            "file-image",
            "file-video",
            "file-audio",
            "file-archive",
            "file-lock",
            "file-search",
            "file-copy",
            "files",
            "hard-drive",
            "server",
            "cpu",
            "monitor",
            "laptop",
            "smartphone",
            "tablet",
            "wifi",
            "bluetooth",
            "message-circle",
            "message-square",
            "messages-square",
            "message-plus",
            "message-x",
            "inbox",
            "outbox",
            "reply",
            "reply-all",
            "forward-mail",
            "paperclip",
            "attachment",
            "rss",
            "megaphone",
            "microphone",
            "microphone-off",
            "headset",
            "radio",
            "sms",
            "cart",
            "shopping-bag",
            "credit-card",
            "receipt",
            "wallet",
            "dollar-sign",
            "percent",
            "tags",
            "gift",
            "truck",
            "building",
            "briefcase",
            "target",
            "trophy",
            "toggle-right"
          ],
          "description": "Icon shown for this state. An empty value hides the icon.",
          "conditionalReadOnly": false,
          "derivedDefault": false
        }
      ],
      "events": [
        {
          "name": "OnShow",
          "category": "Toast",
          "eventDetailType": "WebToastEventDetail",
          "eventDetailProperties": [
            "message",
            "state"
          ]
        },
        {
          "name": "OnClose",
          "category": "Toast",
          "eventDetailType": "WebToastEventDetail",
          "eventDetailProperties": [
            "message",
            "state"
          ]
        }
      ]
    }
  ],
  "declarations": [
    {
      "name": "normalizeLabelTextWrap",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function normalizeLabelTextWrap(value: unknown): WebLabelTextWrap;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "projectLabelTextWrap",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function projectLabelTextWrap(value: WebLabelTextWrap): {\n    whiteSpace: 'nowrap' | 'pre-wrap';\n    overflowWrap: 'normal' | 'anywhere';\n    wordBreak: 'normal' | 'break-all';\n};",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "Sucess",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const Sucess: 'Sucess';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "Alert",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const Alert: 'Alert';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "Danger",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const Danger: 'Danger';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "Notifier",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const Notifier: 'Notifier';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebToastState",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebToastState = typeof Sucess | typeof Alert | typeof Danger | typeof Notifier;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebToastPosition",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebToastPosition = 'top-left' | 'top-center' | 'top-right' | 'middle-left' | 'middle-center' | 'middle-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebToastEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebToastEventDetail {\n    readonly message: string;\n    readonly state: WebToastState;\n}",
      "members": [
        {
          "name": "message",
          "kind": "property",
          "type": "string",
          "signature": "readonly message: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "state",
          "kind": "property",
          "type": "WebToastState",
          "signature": "readonly state: WebToastState;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebToast",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent"
      ],
      "source": "export class WebToast extends WebComponent {\n    duration: number;\n    position: WebToastPosition;\n    sucessIcon: WebButtonIcon | '';\n    alertIcon: WebButtonIcon | '';\n    dangerIcon: WebButtonIcon | '';\n    notifierIcon: WebButtonIcon | '';\n    Success(message: string): void;\n    Alert(message: string): void;\n    Danger(message: string): void;\n    Notifier(message: string): void;\n    Clear(): void;\n    set onShow(handler: WebComponentEventHandler<this> | null);\n    set onClose(handler: WebComponentEventHandler<this> | null);\n}",
      "publicSource": "export class WebToast extends WebComponent {\n    duration: number;\n    position: WebToastPosition;\n    sucessIcon: WebButtonIcon | '';\n    alertIcon: WebButtonIcon | '';\n    dangerIcon: WebButtonIcon | '';\n    notifierIcon: WebButtonIcon | '';\n    Success(message: string): void;\n    Alert(message: string): void;\n    Danger(message: string): void;\n    Notifier(message: string): void;\n    Clear(): void;\n    set onShow(handler: WebComponentEventHandler<this> | null);\n    set onClose(handler: WebComponentEventHandler<this> | null);\n}",
      "members": [
        {
          "name": "duration",
          "kind": "property",
          "type": "number",
          "signature": "duration: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "position",
          "kind": "property",
          "type": "WebToastPosition",
          "signature": "position: WebToastPosition;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "sucessIcon",
          "kind": "property",
          "type": "WebButtonIcon | ''",
          "signature": "sucessIcon: WebButtonIcon | '';",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "alertIcon",
          "kind": "property",
          "type": "WebButtonIcon | ''",
          "signature": "alertIcon: WebButtonIcon | '';",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "dangerIcon",
          "kind": "property",
          "type": "WebButtonIcon | ''",
          "signature": "dangerIcon: WebButtonIcon | '';",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "notifierIcon",
          "kind": "property",
          "type": "WebButtonIcon | ''",
          "signature": "notifierIcon: WebButtonIcon | '';",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Success",
          "kind": "method",
          "type": "void",
          "signature": "Success(message: string): void;",
          "parameters": [
            {
              "name": "message",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Alert",
          "kind": "method",
          "type": "void",
          "signature": "Alert(message: string): void;",
          "parameters": [
            {
              "name": "message",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Danger",
          "kind": "method",
          "type": "void",
          "signature": "Danger(message: string): void;",
          "parameters": [
            {
              "name": "message",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Notifier",
          "kind": "method",
          "type": "void",
          "signature": "Notifier(message: string): void;",
          "parameters": [
            {
              "name": "message",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Clear",
          "kind": "method",
          "type": "void",
          "signature": "Clear(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onShow",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onShow(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onClose",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onClose(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "LucideIconName",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type LucideIconName = 'a-arrow-down' | 'a-arrow-up' | 'a-large-small' | 'accessibility' | 'activity' | 'ad' | 'air-vent' | 'airplay' | 'alarm-clock-check' | 'alarm-clock-minus' | 'alarm-clock-off' | 'alarm-clock-plus' | 'alarm-clock' | 'alarm-smoke' | 'align-center-horizontal' | 'align-center-vertical' | 'align-end-horizontal' | 'align-end-vertical' | 'align-horizontal-distribute-center' | 'align-horizontal-distribute-end' | 'align-horizontal-distribute-start' | 'align-horizontal-justify-center' | 'align-horizontal-justify-end' | 'align-horizontal-justify-start' | 'align-horizontal-space-around' | 'align-horizontal-space-between' | 'align-start-horizontal' | 'align-start-vertical' | 'align-vertical-distribute-center' | 'align-vertical-distribute-end' | 'align-vertical-distribute-start' | 'align-vertical-justify-center' | 'align-vertical-justify-end' | 'align-vertical-justify-start' | 'align-vertical-space-around' | 'align-vertical-space-between' | 'ambulance' | 'ampersand' | 'ampersands' | 'amphora' | 'anchor' | 'angle' | 'antenna' | 'anvil' | 'aperture' | 'app-window-mac' | 'app-window' | 'apple' | 'archive-restore' | 'archive-x' | 'archive' | 'armchair' | 'armenian-dram' | 'arrow-big-down-dash' | 'arrow-big-down' | 'arrow-big-left-dash' | 'arrow-big-left' | 'arrow-big-right-dash' | 'arrow-big-right' | 'arrow-big-up-dash' | 'arrow-big-up' | 'arrow-down-0-1' | 'arrow-down-1-0' | 'arrow-down-a-z' | 'arrow-down-from-line' | 'arrow-down-left' | 'arrow-down-narrow-wide' | 'arrow-down-right' | 'arrow-down-to-dot' | 'arrow-down-to-line' | 'arrow-down-up' | 'arrow-down-wide-narrow' | 'arrow-down-z-a' | 'arrow-down' | 'arrow-left-from-line' | 'arrow-left-right' | 'arrow-left-to-line' | 'arrow-left' | 'arrow-right-from-line' | 'arrow-right-left' | 'arrow-right-to-line' | 'arrow-right' | 'arrow-up-0-1' | 'arrow-up-1-0' | 'arrow-up-a-z' | 'arrow-up-down' | 'arrow-up-from-dot' | 'arrow-up-from-line' | 'arrow-up-left' | 'arrow-up-narrow-wide' | 'arrow-up-right' | 'arrow-up-to-line' | 'arrow-up-wide-narrow' | 'arrow-up-z-a' | 'arrow-up' | 'arrows-up-from-line' | 'asterisk' | 'astroid' | 'at-sign' | 'atom' | 'audio-lines-off' | 'audio-lines-x' | 'audio-lines' | 'audio-waveform' | 'avocado' | 'award' | 'axe' | 'axis-3d' | 'baby' | 'backpack' | 'bacon' | 'badge-alert' | 'badge-cent' | 'badge-check' | 'badge-dollar-sign' | 'badge-euro' | 'badge-indian-rupee' | 'badge-info' | 'badge-japanese-yen' | 'badge-minus' | 'badge-percent' | 'badge-plus' | 'badge-pound-sterling' | 'badge-question-mark' | 'badge-russian-ruble' | 'badge-swiss-franc' | 'badge-turkish-lira' | 'badge-x' | 'badge' | 'baggage-claim' | 'balloon' | 'ban' | 'banana' | 'bandage' | 'bangladeshi-taka' | 'banknote-arrow-down' | 'banknote-arrow-up' | 'banknote-check' | 'banknote-x' | 'banknote' | 'barcode' | 'barrel' | 'baseline' | 'bath' | 'battery-charging' | 'battery-full' | 'battery-low' | 'battery-medium' | 'battery-plus' | 'battery-warning' | 'battery' | 'beaker' | 'bean-off' | 'bean' | 'bed-double' | 'bed-single' | 'bed' | 'beef-off' | 'beef' | 'beer-off' | 'beer' | 'belarusian-ruble' | 'bell-check' | 'bell-dot' | 'bell-electric' | 'bell-minus' | 'bell-off' | 'bell-plus' | 'bell-ring' | 'bell' | 'between-horizontal-end' | 'between-horizontal-start' | 'between-vertical-end' | 'between-vertical-start' | 'biceps-flexed' | 'bike' | 'binary' | 'binoculars' | 'biohazard' | 'bird' | 'birdhouse' | 'bitcoin' | 'blend' | 'blender' | 'blinds' | 'blocks' | 'bluetooth-connected' | 'bluetooth-off' | 'bluetooth-searching' | 'bluetooth' | 'bold' | 'bolt' | 'bomb' | 'bone-fracture' | 'bone' | 'book-a' | 'book-alert' | 'book-audio' | 'book-bookmark' | 'book-check' | 'book-copy' | 'book-dashed' | 'book-down' | 'book-headphones' | 'book-heart' | 'book-image' | 'book-key' | 'book-lock' | 'book-minus' | 'book-open-check' | 'book-open-text' | 'book-open' | 'book-plus' | 'book-search' | 'book-text' | 'book-type' | 'book-up-2' | 'book-up' | 'book-user' | 'book-x' | 'book' | 'bookmark-check' | 'bookmark-minus' | 'bookmark-off' | 'bookmark-plus' | 'bookmark-x' | 'bookmark' | 'boom-box' | 'bot-message-square' | 'bot-off' | 'bot' | 'bottle-wine' | 'bow-arrow' | 'box' | 'boxes' | 'braces' | 'brackets' | 'brain-circuit' | 'brain-cog' | 'brain-off' | 'brain' | 'brick-wall-fire' | 'brick-wall-shield' | 'brick-wall' | 'bridge' | 'briefcase-business' | 'briefcase-conveyor-belt' | 'briefcase-medical' | 'briefcase-plus' | 'briefcase' | 'bring-to-front' | 'broccoli' | 'broom-sparkles' | 'broom' | 'brush-cleaning' | 'brush' | 'bubbles' | 'bug-off' | 'bug-play' | 'bug' | 'building-complex-plus' | 'building-complex' | 'building' | 'bus-front' | 'bus' | 'cable-car' | 'cable' | 'cake-slice' | 'cake' | 'calculator' | 'calendar-1' | 'calendar-arrow-down' | 'calendar-arrow-up' | 'calendar-check-2' | 'calendar-check' | 'calendar-chevrons-left' | 'calendar-chevrons-right' | 'calendar-clock' | 'calendar-cog' | 'calendar-days' | 'calendar-fold' | 'calendar-heart' | 'calendar-minus-2' | 'calendar-minus' | 'calendar-off' | 'calendar-plus-2' | 'calendar-plus' | 'calendar-range' | 'calendar-search' | 'calendar-sync' | 'calendar-x-2' | 'calendar-x' | 'calendar' | 'calendars' | 'camera-off' | 'camera' | 'can-soda' | 'can' | 'candy-cane' | 'candy-off' | 'candy' | 'cannabis-off' | 'cannabis' | 'captions-off' | 'captions' | 'car-battery' | 'car-front' | 'car-taxi-front' | 'car' | 'caravan' | 'card-sim' | 'carrot' | 'carton-off' | 'carton' | 'case-lower' | 'case-sensitive' | 'case-upper' | 'cassette-tape' | 'cast' | 'castle' | 'cat' | 'cctv-off' | 'cctv' | 'certificate' | 'chart-area' | 'chart-bar-big' | 'chart-bar-decreasing' | 'chart-bar-increasing' | 'chart-bar-stacked' | 'chart-bar' | 'chart-candlestick' | 'chart-column-big' | 'chart-column-decreasing' | 'chart-column-increasing' | 'chart-column-stacked' | 'chart-column' | 'chart-gantt' | 'chart-line' | 'chart-network' | 'chart-no-axes-column-decreasing' | 'chart-no-axes-column-increasing' | 'chart-no-axes-column' | 'chart-no-axes-combined' | 'chart-no-axes-gantt' | 'chart-pie' | 'chart-scatter' | 'chart-spline' | 'check-check' | 'check-line' | 'check' | 'chef-hat' | 'cherry' | 'chess-bishop' | 'chess-king' | 'chess-knight' | 'chess-pawn' | 'chess-queen' | 'chess-rook' | 'chevron-down' | 'chevron-first' | 'chevron-last' | 'chevron-left' | 'chevron-right' | 'chevron-up' | 'chevrons-down-up' | 'chevrons-down' | 'chevrons-left-right-ellipsis' | 'chevrons-left-right' | 'chevrons-left' | 'chevrons-right-left' | 'chevrons-right' | 'chevrons-up-down' | 'chevrons-up' | 'church' | 'cigarette-off' | 'cigarette' | 'circle-alert' | 'circle-arrow-down' | 'circle-arrow-left' | 'circle-arrow-out-down-left' | 'circle-arrow-out-down-right' | 'circle-arrow-out-up-left' | 'circle-arrow-out-up-right' | 'circle-arrow-right' | 'circle-arrow-up' | 'circle-check-big' | 'circle-check' | 'circle-chevron-down' | 'circle-chevron-left' | 'circle-chevron-right' | 'circle-chevron-up' | 'circle-chevrons-down' | 'circle-chevrons-left' | 'circle-chevrons-right' | 'circle-chevrons-up' | 'circle-dashed-check' | 'circle-dashed' | 'circle-divide' | 'circle-dollar-sign' | 'circle-dot-dashed' | 'circle-dot' | 'circle-ellipsis' | 'circle-equal' | 'circle-euro' | 'circle-fading-arrow-up' | 'circle-fading-play' | 'circle-fading-plus' | 'circle-gauge' | 'circle-minus' | 'circle-off' | 'circle-parking-off' | 'circle-parking' | 'circle-pause' | 'circle-percent' | 'circle-pile' | 'circle-play' | 'circle-plus' | 'circle-pound-sterling' | 'circle-power' | 'circle-question-mark' | 'circle-slash-2' | 'circle-slash' | 'circle-small' | 'circle-star' | 'circle-stop' | 'circle-user-round' | 'circle-user' | 'circle-x' | 'circle' | 'circuit-board' | 'citrus' | 'clapperboard' | 'clef-alto' | 'clef-bass' | 'clef-treble' | 'clipboard-check' | 'clipboard-clock' | 'clipboard-copy' | 'clipboard-list' | 'clipboard-minus' | 'clipboard-paste' | 'clipboard-pen-line' | 'clipboard-pen' | 'clipboard-plus' | 'clipboard-type' | 'clipboard-x' | 'clipboard' | 'clock-1' | 'clock-10' | 'clock-11' | 'clock-12' | 'clock-2' | 'clock-3' | 'clock-4' | 'clock-5' | 'clock-6' | 'clock-7' | 'clock-8' | 'clock-9' | 'clock-alert' | 'clock-arrow-down' | 'clock-arrow-left' | 'clock-arrow-right' | 'clock-arrow-up' | 'clock-check' | 'clock-fading' | 'clock-plus' | 'clock' | 'closed-caption' | 'cloud-alert' | 'cloud-backup' | 'cloud-check' | 'cloud-cog' | 'cloud-download' | 'cloud-drizzle' | 'cloud-fog' | 'cloud-hail' | 'cloud-lightning' | 'cloud-moon-rain' | 'cloud-moon' | 'cloud-off' | 'cloud-rain-wind' | 'cloud-rain' | 'cloud-snow' | 'cloud-sun-rain' | 'cloud-sun' | 'cloud-sync' | 'cloud-upload' | 'cloud' | 'cloudy' | 'clover' | 'club' | 'code-xml' | 'code' | 'coffee' | 'cog' | 'coins' | 'columns-2' | 'columns-3-cog' | 'columns-3' | 'columns-4' | 'combine' | 'command' | 'compass' | 'component' | 'computer' | 'concierge-bell' | 'cone' | 'construction' | 'contact-round' | 'contact' | 'container' | 'contrast' | 'cookie' | 'cooking-pot' | 'copy-check' | 'copy-minus' | 'copy-plus' | 'copy-slash' | 'copy-x' | 'copy' | 'copyleft' | 'copyright' | 'corner-down-left' | 'corner-down-right' | 'corner-left-down' | 'corner-left-up' | 'corner-right-down' | 'corner-right-up' | 'corner-up-left' | 'corner-up-right' | 'cpu-ai' | 'cpu' | 'creative-commons' | 'credit-card-check' | 'credit-card-minus' | 'credit-card-plus' | 'credit-card-reader' | 'credit-card-x' | 'credit-card' | 'croissant' | 'crop' | 'cross' | 'crosshair' | 'crown' | 'cuboid' | 'cup-soda' | 'cupcake' | 'currency' | 'cylinder' | 'dam' | 'database-arrow-down' | 'database-arrow-up' | 'database-backup' | 'database-check' | 'database-minus' | 'database-plus' | 'database-search' | 'database-x' | 'database-zap' | 'database' | 'decimals-arrow-left' | 'decimals-arrow-right' | 'delete' | 'dessert' | 'diameter' | 'diamond-minus' | 'diamond-percent' | 'diamond-plus' | 'diamond' | 'dice-1' | 'dice-2' | 'dice-3' | 'dice-4' | 'dice-5' | 'dice-6' | 'dices' | 'diff' | 'disc-2' | 'disc-3' | 'disc-album' | 'disc' | 'divide' | 'dna-off' | 'dna' | 'dock' | 'dog' | 'dollar-sign' | 'dome' | 'donut' | 'door-closed-cog' | 'door-closed-locked' | 'door-closed-package' | 'door-closed' | 'door-open' | 'door-stairwell' | 'dot' | 'download' | 'drafting-compass' | 'drama' | 'drill' | 'drone' | 'droplet-off' | 'droplet' | 'droplets' | 'drum' | 'drumstick' | 'dumbbell' | 'ear-off' | 'ear' | 'earth-lock' | 'earth' | 'eclipse' | 'egg-fried' | 'egg-off' | 'egg' | 'eighth-note' | 'eighth-notes' | 'eject' | 'ellipse' | 'ellipsis-vertical' | 'ellipsis' | 'engine' | 'equal-approximately-not' | 'equal-approximately' | 'equal-not' | 'equal' | 'eraser' | 'ethernet-port' | 'euro' | 'ev-charger' | 'expand' | 'external-link' | 'eye-closed' | 'eye-dashed' | 'eye-off' | 'eye' | 'face-angry' | 'face-expressionless' | 'face-grinning' | 'face-neutral' | 'face-slightly-frowning' | 'face-slightly-smiling-plus' | 'face-slightly-smiling' | 'factory' | 'fan' | 'fast-forward' | 'faucet' | 'feather' | 'fence' | 'ferris-wheel' | 'file-archive' | 'file-axis-3d' | 'file-badge' | 'file-box' | 'file-braces-corner' | 'file-braces' | 'file-chart-column-increasing' | 'file-chart-column' | 'file-chart-line' | 'file-chart-pie' | 'file-check-corner' | 'file-check' | 'file-clock' | 'file-code-corner' | 'file-code' | 'file-cog' | 'file-diff' | 'file-digit' | 'file-down' | 'file-exclamation-point' | 'file-headphone' | 'file-heart' | 'file-image' | 'file-input' | 'file-key' | 'file-lock' | 'file-minus-corner' | 'file-minus' | 'file-music' | 'file-output' | 'file-pen-line' | 'file-pen' | 'file-play' | 'file-plus-corner' | 'file-plus' | 'file-question-mark' | 'file-scan' | 'file-search-corner' | 'file-search' | 'file-signal' | 'file-sliders' | 'file-spreadsheet' | 'file-stack' | 'file-symlink' | 'file-terminal' | 'file-text' | 'file-type-corner' | 'file-type' | 'file-up' | 'file-user' | 'file-video-camera' | 'file-volume' | 'file-x-corner' | 'file-x' | 'file' | 'files' | 'film' | 'fingerprint-pattern' | 'fire-extinguisher' | 'fish-off' | 'fish-symbol' | 'fish' | 'fishing-hook' | 'fishing-rod' | 'flag-off' | 'flag-triangle-left' | 'flag-triangle-right' | 'flag' | 'flame-kindling' | 'flame' | 'flashlight-off' | 'flashlight' | 'flask-conical-off' | 'flask-conical' | 'flask-round' | 'flower-2' | 'flower' | 'focus' | 'fold-horizontal' | 'fold-vertical' | 'folder-archive' | 'folder-bookmark' | 'folder-check' | 'folder-clock' | 'folder-closed' | 'folder-code' | 'folder-cog' | 'folder-dot' | 'folder-down' | 'folder-git-2' | 'folder-git' | 'folder-heart' | 'folder-input' | 'folder-kanban' | 'folder-key' | 'folder-lock' | 'folder-minus' | 'folder-open-dot' | 'folder-open' | 'folder-output' | 'folder-pen' | 'folder-plus' | 'folder-root' | 'folder-search-2' | 'folder-search' | 'folder-symlink' | 'folder-sync' | 'folder-tree' | 'folder-up' | 'folder-user' | 'folder-users' | 'folder-x' | 'folder' | 'folders' | 'footprints' | 'forklift' | 'form' | 'forward' | 'frame' | 'fuel' | 'fullscreen' | 'funnel-plus' | 'funnel-x' | 'funnel' | 'galaxy' | 'gallery-horizontal-end' | 'gallery-horizontal' | 'gallery-thumbnails' | 'gallery-vertical-end' | 'gallery-vertical' | 'gamepad-2' | 'gamepad-directional' | 'gamepad' | 'gap-horizontal' | 'gap-vertical' | 'gauge' | 'gavel' | 'gem' | 'georgian-lari' | 'germ-off' | 'germ' | 'ghost' | 'gift' | 'git-branch-minus' | 'git-branch-plus' | 'git-branch' | 'git-commit-horizontal' | 'git-commit-vertical' | 'git-compare-arrows' | 'git-compare' | 'git-fork' | 'git-graph' | 'git-merge-conflict' | 'git-merge' | 'git-pull-request-arrow' | 'git-pull-request-closed' | 'git-pull-request-create-arrow' | 'git-pull-request-create' | 'git-pull-request-draft' | 'git-pull-request' | 'glass-water' | 'glasses' | 'globe-check' | 'globe-code' | 'globe-lock' | 'globe-off' | 'globe-x' | 'globe' | 'goal' | 'gpu' | 'graduation-cap' | 'grape' | 'graph-hub' | 'graph-star' | 'grid-2x2-check' | 'grid-2x2-plus' | 'grid-2x2-x' | 'grid-2x2' | 'grid-3x2' | 'grid-3x3' | 'grip-horizontal' | 'grip-vertical' | 'grip' | 'groceries' | 'group' | 'guitar-electric' | 'guitar' | 'half-note' | 'ham' | 'hamburger' | 'hammer' | 'hand-coins' | 'hand-fist' | 'hand-grab' | 'hand-heart' | 'hand-helping' | 'hand-metal' | 'hand-platter' | 'hand' | 'handbag' | 'handle-bottom-right' | 'handshake' | 'hard-drive-download' | 'hard-drive-upload' | 'hard-drive' | 'hard-hat' | 'hash' | 'hat-glasses' | 'haze' | 'hd' | 'hdmi-port' | 'heading-1' | 'heading-2' | 'heading-3' | 'heading-4' | 'heading-5' | 'heading-6' | 'heading' | 'headphone-off' | 'headphones' | 'headset' | 'heart-crack' | 'heart-handshake' | 'heart-minus' | 'heart-off' | 'heart-plus' | 'heart-pulse' | 'heart-x' | 'heart' | 'heater' | 'helicopter' | 'hexagon' | 'highlighter' | 'hiking-stick' | 'hop-off' | 'hop' | 'hospital' | 'hotel' | 'hourglass-cog' | 'hourglass' | 'house-cog' | 'house-heart' | 'house-plug' | 'house-plus' | 'house-wifi' | 'house' | 'houses' | 'ice-cream-bowl' | 'ice-cream-cone' | 'id-card-lanyard' | 'id-card' | 'image-down' | 'image-minus' | 'image-off' | 'image-play' | 'image-plus' | 'image-up' | 'image-upscale' | 'image' | 'images' | 'import' | 'inbox' | 'indian-rupee' | 'infinity' | 'info' | 'inspection-panel' | 'italic' | 'iteration-ccw' | 'iteration-cw' | 'iv-bag' | 'japanese-yen' | 'joystick' | 'kanban' | 'kayak' | 'kazakh-tenge' | 'key-round' | 'key-square' | 'key' | 'keyboard-music' | 'keyboard-off' | 'keyboard' | 'lambda' | 'lamp-ceiling' | 'lamp-desk' | 'lamp-floor' | 'lamp-wall-down' | 'lamp-wall-up' | 'lamp' | 'land-plot' | 'landmark' | 'languages' | 'laptop-minimal-check' | 'laptop-minimal' | 'laptop' | 'lasso-select' | 'lasso' | 'layer-arrow-down' | 'layer-arrow-up' | 'layers-2' | 'layers-arrow-down' | 'layers-arrow-up' | 'layers-minus' | 'layers-plus' | 'layers' | 'layout-arrow-down' | 'layout-arrow-right' | 'layout-dashboard' | 'layout-freeform' | 'layout-grid-circles' | 'layout-grid' | 'layout-list' | 'layout-panel-left' | 'layout-panel-top' | 'layout-template' | 'leaf' | 'leafy-green' | 'lectern' | 'lens-concave' | 'lens-convex' | 'lens' | 'letter-spacing' | 'letters' | 'library-big' | 'library' | 'life-buoy' | 'ligature' | 'lightbulb-off' | 'lightbulb' | 'lighthouse' | 'line-dot-bottom-vertical' | 'line-dot-left-horizontal' | 'line-dot-right-horizontal' | 'line-dot-top-vertical' | 'line-height' | 'line-squiggle' | 'line-style' | 'link-2-off' | 'link-2' | 'link' | 'list-check' | 'list-checks' | 'list-chevrons-down-up' | 'list-chevrons-up-down' | 'list-clock' | 'list-collapse' | 'list-end' | 'list-filter-plus' | 'list-filter' | 'list-indent-decrease' | 'list-indent-increase' | 'list-minus' | 'list-music' | 'list-ordered' | 'list-plus' | 'list-restart' | 'list-sort-ascending' | 'list-sort-descending' | 'list-start' | 'list-todo' | 'list-tree' | 'list-video' | 'list-x' | 'list' | 'loader-circle' | 'loader-pinwheel' | 'loader' | 'locate-fixed' | 'locate-off' | 'locate' | 'lock-keyhole-open' | 'lock-keyhole' | 'lock-open' | 'lock' | 'log-in' | 'log-out' | 'logs' | 'lollipop' | 'luggage' | 'magnet' | 'mail-badge' | 'mail-check' | 'mail-clock' | 'mail-dot' | 'mail-minus' | 'mail-open' | 'mail-pen' | 'mail-plus' | 'mail-question-mark' | 'mail-search' | 'mail-warning' | 'mail-x' | 'mail' | 'mailbox' | 'mails' | 'map-minus' | 'map-pin-check-inside' | 'map-pin-check' | 'map-pin-house' | 'map-pin-minus-inside' | 'map-pin-minus' | 'map-pin-off' | 'map-pin-pen' | 'map-pin-plus-inside' | 'map-pin-plus' | 'map-pin-search' | 'map-pin-x-inside' | 'map-pin-x' | 'map-pin' | 'map-pinned' | 'map-plus' | 'map' | 'mars-stroke' | 'mars' | 'martini' | 'maximize-2' | 'maximize' | 'medal' | 'megaphone-off' | 'megaphone' | 'memory-stick' | 'menu' | 'merge' | 'message-circle-check' | 'message-circle-code' | 'message-circle-dashed-check' | 'message-circle-dashed' | 'message-circle-heart' | 'message-circle-more' | 'message-circle-off' | 'message-circle-plus' | 'message-circle-question-mark' | 'message-circle-reply' | 'message-circle-text' | 'message-circle-warning' | 'message-circle-x' | 'message-circle' | 'message-square-check' | 'message-square-code' | 'message-square-dashed' | 'message-square-diff' | 'message-square-dot' | 'message-square-heart' | 'message-square-lock' | 'message-square-more' | 'message-square-off' | 'message-square-plus' | 'message-square-quote' | 'message-square-reply' | 'message-square-share' | 'message-square-text' | 'message-square-warning' | 'message-square-x' | 'message-square' | 'messages-circle' | 'messages-square' | 'metronome' | 'mic-audio-lines' | 'mic-off' | 'mic-signal' | 'mic-vocal' | 'mic' | 'microchip' | 'microscope' | 'microwave' | 'midi-port' | 'milestone' | 'milk-off' | 'milk' | 'minimize-2' | 'minimize' | 'minus' | 'mirror-rectangular' | 'mirror-round' | 'monitor-check' | 'monitor-cloud' | 'monitor-cog' | 'monitor-dot' | 'monitor-down' | 'monitor-off' | 'monitor-pause' | 'monitor-pc' | 'monitor-play' | 'monitor-smartphone' | 'monitor-speaker' | 'monitor-stop' | 'monitor-up' | 'monitor-x' | 'monitor' | 'moon-star' | 'moon' | 'mop-sparkles' | 'mop' | 'mosque' | 'motorbike' | 'mountain-snow' | 'mountain' | 'mouse-left' | 'mouse-off' | 'mouse-pointer-2-off' | 'mouse-pointer-2' | 'mouse-pointer-ban' | 'mouse-pointer-click' | 'mouse-pointer' | 'mouse-right' | 'mouse' | 'mouth-off' | 'mouth' | 'move-3d' | 'move-diagonal-2' | 'move-diagonal' | 'move-down-left' | 'move-down-right' | 'move-down' | 'move-horizontal' | 'move-left' | 'move-right' | 'move-up-left' | 'move-up-right' | 'move-up' | 'move-vertical' | 'move' | 'navigation-2-off' | 'navigation-2' | 'navigation-off' | 'navigation' | 'nepali-rupee' | 'network' | 'newspaper' | 'nfc' | 'non-binary' | 'notebook-dot' | 'notebook-pen' | 'notebook-tabs' | 'notebook-text' | 'notebook' | 'notepad-text-dashed' | 'notepad-text' | 'nut-off' | 'nut' | 'octagon-alert' | 'octagon-minus' | 'octagon-pause' | 'octagon-x' | 'octagon' | 'omega' | 'option' | 'orbit' | 'origami' | 'package-2' | 'package-check' | 'package-minus' | 'package-open' | 'package-plus' | 'package-search' | 'package-x' | 'package' | 'paint-bucket' | 'paint-roller' | 'paintbrush-vertical' | 'paintbrush' | 'palette' | 'panda' | 'panel-bottom-close' | 'panel-bottom-dashed' | 'panel-bottom-open' | 'panel-bottom' | 'panel-left-close' | 'panel-left-dashed' | 'panel-left-open' | 'panel-left-right-dashed' | 'panel-left' | 'panel-right-close' | 'panel-right-dashed' | 'panel-right-open' | 'panel-right' | 'panel-top-bottom-dashed' | 'panel-top-close' | 'panel-top-dashed' | 'panel-top-open' | 'panel-top' | 'panels-left-bottom' | 'panels-right-bottom' | 'panels-top-left' | 'paper-bag' | 'paperclip' | 'parasol' | 'parentheses' | 'park' | 'parking-meter' | 'party-popper' | 'pause' | 'paw-print' | 'pc-case' | 'pen-line' | 'pen-off' | 'pen-tool' | 'pen' | 'pencil-line' | 'pencil-off' | 'pencil-ruler' | 'pencil-sparkles' | 'pencil' | 'pentagon' | 'percent' | 'perfume-bottle' | 'person-standing' | 'phi' | 'philippine-peso' | 'phone-call' | 'phone-forwarded' | 'phone-incoming' | 'phone-log' | 'phone-missed' | 'phone-off' | 'phone-outgoing' | 'phone' | 'pi' | 'piano' | 'pickaxe' | 'picture-in-picture-2' | 'picture-in-picture' | 'piggy-bank' | 'pilcrow-left' | 'pilcrow-right' | 'pilcrow' | 'pill-bottle' | 'pill' | 'pin-off' | 'pin' | 'pipette' | 'pizza' | 'plane-landing' | 'plane-takeoff' | 'plane' | 'plant-pot' | 'play-off' | 'play' | 'playing-card' | 'playing-cards-fan' | 'playing-cards' | 'plug-2' | 'plug-zap' | 'plug' | 'plus' | 'pocket-knife' | 'podium' | 'pointer-off' | 'pointer' | 'popcorn' | 'popsicle' | 'pound-sterling' | 'power-off' | 'power' | 'presentation' | 'printer-3d' | 'printer-check' | 'printer-x' | 'printer' | 'projector' | 'proportions' | 'puzzle' | 'pyramid' | 'qr-code' | 'quote' | 'rabbit' | 'radar' | 'radiation' | 'radical' | 'radio-off' | 'radio-receiver' | 'radio-tower' | 'radio' | 'radius' | 'rainbow' | 'rat' | 'ratio' | 'receipt-cent' | 'receipt-euro' | 'receipt-indian-rupee' | 'receipt-japanese-yen' | 'receipt-pound-sterling' | 'receipt-russian-ruble' | 'receipt-swiss-franc' | 'receipt-text' | 'receipt-turkish-lira' | 'receipt' | 'rectangle-circle' | 'rectangle-ellipsis' | 'rectangle-goggles' | 'rectangle-horizontal' | 'rectangle-vertical' | 'recycle' | 'redo-2' | 'redo-dot' | 'redo' | 'refresh-ccw-dot' | 'refresh-ccw' | 'refresh-cw-off' | 'refresh-cw' | 'refrigerator' | 'regex' | 'remove-formatting' | 'repeat-1' | 'repeat-2' | 'repeat-off' | 'repeat' | 'replace-all' | 'replace' | 'reply-all' | 'reply' | 'rewind' | 'ribbon' | 'road' | 'robot-arm' | 'robot-vacuum' | 'rocket' | 'rocking-chair' | 'roller-coaster' | 'rose' | 'rotate-3d' | 'rotate-ccw-clock' | 'rotate-ccw-key' | 'rotate-ccw-square' | 'rotate-ccw' | 'rotate-cw-clock' | 'rotate-cw-fading-clock' | 'rotate-cw-square' | 'rotate-cw' | 'route-off' | 'route' | 'router' | 'rows-2' | 'rows-3' | 'rows-4' | 'rss' | 'rugby-ball' | 'ruler-dimension-line' | 'ruler' | 'russian-ruble' | 'sailboat' | 'salad' | 'sandwich' | 'satellite-dish' | 'satellite' | 'saudi-riyal' | 'save-all' | 'save-check' | 'save-off' | 'save-pen' | 'save-plus' | 'save' | 'scale-3d' | 'scale' | 'scaling' | 'scan-barcode' | 'scan-box' | 'scan-eye' | 'scan-face' | 'scan-heart' | 'scan-line' | 'scan-qr-code' | 'scan-search' | 'scan-square' | 'scan-text' | 'scan' | 'school' | 'scissors-line-dashed' | 'scissors' | 'scooter' | 'scratch-blocks' | 'screen-share-off' | 'screen-share' | 'screw' | 'scroll-text' | 'scroll' | 'search-alert' | 'search-check' | 'search-code' | 'search-slash' | 'search-x' | 'search' | 'section' | 'send-horizontal' | 'send-to-back' | 'send' | 'separator-horizontal' | 'separator-vertical' | 'server-cog' | 'server-crash' | 'server-nas' | 'server-off' | 'server-plus' | 'server' | 'settings-2' | 'settings' | 'shapes' | 'share-2' | 'share' | 'sheet' | 'shell' | 'shelving-unit' | 'shield-alert' | 'shield-ban' | 'shield-check' | 'shield-cog-corner' | 'shield-cog' | 'shield-ellipsis' | 'shield-half' | 'shield-house' | 'shield-keyhole' | 'shield-lock' | 'shield-minus' | 'shield-off' | 'shield-plus' | 'shield-question-mark' | 'shield-user' | 'shield-x' | 'shield' | 'ship-cargo' | 'ship-wheel' | 'ship' | 'shirt' | 'shopping-bag' | 'shopping-basket' | 'shopping-cart-minus' | 'shopping-cart-plus' | 'shopping-cart' | 'shovel' | 'shower-head' | 'shredder' | 'shrimp-off' | 'shrimp' | 'shrink' | 'shrub' | 'shuffle' | 'sigma' | 'signal-high' | 'signal-low' | 'signal-medium' | 'signal-zero' | 'signal' | 'signature' | 'signpost-big' | 'signpost' | 'siren' | 'sixteenth-notes' | 'skip-back' | 'skip-forward' | 'skull' | 'slash' | 'slice' | 'sliders-horizontal' | 'sliders-vertical' | 'smartphone-charging' | 'smartphone-nfc' | 'smartphone-user-round' | 'smartphone' | 'snail' | 'snowflake' | 'soap-dispenser-droplet' | 'sofa' | 'solar-panel' | 'soup' | 'space' | 'spade' | 'sparkle' | 'sparkles' | 'speaker' | 'speech' | 'spell-check-2' | 'spell-check' | 'spline-pointer' | 'spline' | 'split' | 'spool' | 'sport-shoe' | 'spotlight' | 'spray-can' | 'sprout' | 'square-activity' | 'square-arrow-down-left' | 'square-arrow-down-right' | 'square-arrow-down' | 'square-arrow-left' | 'square-arrow-out-down-left' | 'square-arrow-out-down-right' | 'square-arrow-out-up-left' | 'square-arrow-out-up-right' | 'square-arrow-right-enter' | 'square-arrow-right-exit' | 'square-arrow-right' | 'square-arrow-up-left' | 'square-arrow-up-right' | 'square-arrow-up' | 'square-asterisk' | 'square-bookmark' | 'square-bottom-dashed-scissors' | 'square-centerline-dashed-horizontal' | 'square-centerline-dashed-vertical' | 'square-chart-gantt' | 'square-check-big' | 'square-check' | 'square-chevron-down' | 'square-chevron-left' | 'square-chevron-right' | 'square-chevron-up' | 'square-code' | 'square-dashed-bottom-code' | 'square-dashed-bottom' | 'square-dashed-kanban' | 'square-dashed-mouse-pointer' | 'square-dashed-plus' | 'square-dashed-text' | 'square-dashed-top-solid' | 'square-dashed-x-corner' | 'square-dashed-x' | 'square-dashed' | 'square-dimensions' | 'square-divide' | 'square-dot' | 'square-equal' | 'square-exclamation-point' | 'square-function' | 'square-kanban' | 'square-library' | 'square-m' | 'square-menu' | 'square-minus' | 'square-mouse-pointer' | 'square-off' | 'square-parking-off' | 'square-parking' | 'square-pause' | 'square-pen' | 'square-percent' | 'square-pi' | 'square-pilcrow' | 'square-play' | 'square-plus' | 'square-power' | 'square-radical' | 'square-round-corner' | 'square-scissors' | 'square-sigma' | 'square-slash' | 'square-sparkles' | 'square-split-horizontal' | 'square-split-vertical' | 'square-square' | 'square-stack' | 'square-star' | 'square-stop' | 'square-terminal' | 'square-text' | 'square-user-round' | 'square-user' | 'square-x' | 'square' | 'squares-exclude' | 'squares-intersect' | 'squares-subtract' | 'squares-unite' | 'squircle-dashed' | 'squircle' | 'squirrel' | 'stamp' | 'star-check' | 'star-half' | 'star-minus' | 'star-off' | 'star-plus' | 'star-x' | 'star' | 'step-back' | 'step-forward' | 'stethoscope' | 'sticker' | 'sticky-note-check' | 'sticky-note-minus' | 'sticky-note-off' | 'sticky-note-plus' | 'sticky-note-x' | 'sticky-note' | 'sticky-notes' | 'stone' | 'store' | 'stretch-horizontal' | 'stretch-vertical' | 'strikethrough' | 'subscript' | 'summary' | 'sun-dim' | 'sun-medium' | 'sun-moon' | 'sun-snow' | 'sun' | 'sunrise' | 'sunset' | 'superscript' | 'swatch-book' | 'swiss-franc' | 'switch-camera' | 'sword' | 'swords' | 'syringe' | 'table-2' | 'table-cells-merge' | 'table-cells-split' | 'table-columns-split' | 'table-of-contents' | 'table-properties' | 'table-rows-split' | 'table' | 'tablet-smartphone' | 'tablet' | 'tablets' | 'tag-plus' | 'tag-x' | 'tag' | 'tags' | 'tally-1' | 'tally-2' | 'tally-3' | 'tally-4' | 'tally-5' | 'tangent' | 'target' | 'telescope' | 'tent-tree' | 'tent' | 'terminal' | 'test-tube-diagonal' | 'test-tube' | 'test-tubes' | 'text-align-center' | 'text-align-end' | 'text-align-justify-center' | 'text-align-justify-end' | 'text-align-justify-start' | 'text-align-justify' | 'text-align-start' | 'text-cursor-input' | 'text-cursor' | 'text-initial' | 'text-quote' | 'text-search' | 'text-wrap' | 'theater' | 'thermometer-snowflake' | 'thermometer-sun' | 'thermometer' | 'thumbs-down' | 'thumbs-up' | 'tic-tac-toe' | 'ticket-check' | 'ticket-minus' | 'ticket-percent' | 'ticket-plus' | 'ticket-slash' | 'ticket-x' | 'ticket' | 'tickets-plane' | 'tickets' | 'timeline' | 'timer-off' | 'timer-reset' | 'timer' | 'toggle-left' | 'toggle-right' | 'toilet' | 'tombstone' | 'tool-case' | 'toolbox' | 'toothbrush-sparkles' | 'toothbrush' | 'tornado' | 'torus' | 'touchpad-off' | 'touchpad' | 'towel-rack' | 'tower-control' | 'toy-brick' | 'tractor' | 'traffic-cone' | 'trailer' | 'train-front-tunnel' | 'train-front' | 'train-track' | 'tram-front' | 'transgender' | 'trash-off' | 'trash' | 'tree-deciduous' | 'tree-palm' | 'tree-pine' | 'trees' | 'trending-down' | 'trending-up-down' | 'trending-up' | 'triangle-alert' | 'triangle-dashed' | 'triangle-right' | 'triangle' | 'triangles-centerline-dashed-horizontal' | 'triangles-centerline-dashed-vertical' | 'trophy' | 'truck-electric' | 'truck' | 'tube-lotion' | 'turkish-lira' | 'turntable' | 'turtle' | 'tv-minimal-play' | 'tv-minimal' | 'tv' | 'type-outline' | 'type' | 'umbrella-off' | 'umbrella' | 'underline' | 'undo-2' | 'undo-dot' | 'undo' | 'unfold-horizontal' | 'unfold-vertical' | 'ungroup' | 'university' | 'unlink-2' | 'unlink' | 'unplug' | 'upload' | 'usb-c-port' | 'usb' | 'user-check' | 'user-cog' | 'user-group' | 'user-key' | 'user-lock' | 'user-minus' | 'user-pen' | 'user-plus' | 'user-round-arrow-left' | 'user-round-check' | 'user-round-cog' | 'user-round-group' | 'user-round-key' | 'user-round-minus' | 'user-round-pen' | 'user-round-plus' | 'user-round-search' | 'user-round-star' | 'user-round-x' | 'user-round' | 'user-search' | 'user-shield' | 'user-star' | 'user-x' | 'user' | 'users-collaboration' | 'users-round-collaboration' | 'users-round' | 'users' | 'utensils-crossed' | 'utensils' | 'utility-pole' | 'van' | 'variable' | 'vault' | 'vector-polygon' | 'vector-square' | 'vegan' | 'venetian-mask' | 'venus-and-mars' | 'venus' | 'vibrate-off' | 'vibrate' | 'video-off' | 'video' | 'videotape' | 'view' | 'virus-off' | 'virus' | 'voicemail' | 'volleyball' | 'volume-1' | 'volume-2' | 'volume-off' | 'volume-x' | 'volume' | 'vote' | 'wallet-cards' | 'wallet-minimal' | 'wallet' | 'wallpaper' | 'wand-sparkles' | 'wand' | 'warehouse' | 'washing-machine' | 'watch' | 'waves-arrow-down' | 'waves-arrow-up' | 'waves-horizontal' | 'waves-ladder' | 'waves-vertical' | 'waypoints' | 'webcam-off' | 'webcam' | 'webhook-off' | 'webhook' | 'weight-tilde' | 'weight' | 'wheat-off' | 'wheat' | 'whistle' | 'whole-word' | 'wifi-cog' | 'wifi-high' | 'wifi-lock' | 'wifi-low' | 'wifi-off' | 'wifi-pen' | 'wifi-sync' | 'wifi-zero' | 'wifi' | 'wind-arrow-down' | 'wind-arrow-up' | 'wind' | 'wine-off' | 'wine' | 'workflow' | 'worm' | 'wrench-off' | 'wrench' | 'x-line-top' | 'x' | 'zap-off' | 'zap' | 'zodiac-aquarius' | 'zodiac-aries' | 'zodiac-cancer' | 'zodiac-capricorn' | 'zodiac-gemini' | 'zodiac-leo' | 'zodiac-libra' | 'zodiac-ophiuchus' | 'zodiac-pisces' | 'zodiac-sagittarius' | 'zodiac-scorpio' | 'zodiac-taurus' | 'zodiac-virgo' | 'zoom-in' | 'zoom-out';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebIconMode",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebIconMode = 'icon' | 'button';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebIcon",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent<HTMLButtonElement>"
      ],
      "source": "export class WebIcon extends WebComponent<HTMLButtonElement> {\n    constructor(element: HTMLElement);\n    icon: LucideIconName;\n    mode: WebIconMode;\n    accessibleLabel: string;\n    strokeWidth: number;\n    click(): void;\n    set onClick(handler: WebComponentEventHandler<this> | null);\n}",
      "publicSource": "export class WebIcon extends WebComponent<HTMLButtonElement> {\n    constructor(element: HTMLElement);\n    icon: LucideIconName;\n    mode: WebIconMode;\n    accessibleLabel: string;\n    strokeWidth: number;\n    click(): void;\n    set onClick(handler: WebComponentEventHandler<this> | null);\n}",
      "members": [
        {
          "name": "icon",
          "kind": "property",
          "type": "LucideIconName",
          "signature": "icon: LucideIconName;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "mode",
          "kind": "property",
          "type": "WebIconMode",
          "signature": "mode: WebIconMode;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "accessibleLabel",
          "kind": "property",
          "type": "string",
          "signature": "accessibleLabel: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "strokeWidth",
          "kind": "property",
          "type": "number",
          "signature": "strokeWidth: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "click",
          "kind": "method",
          "type": "void",
          "signature": "click(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onClick",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onClick(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebTimerConfiguration",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebNonvisualComponentOptions"
      ],
      "source": "export interface WebTimerConfiguration extends WebNonvisualComponentOptions {\n    readonly time?: number;\n    readonly loop?: boolean;\n    readonly enabled?: boolean;\n}",
      "members": [
        {
          "name": "time",
          "kind": "property",
          "type": "number",
          "signature": "readonly time?: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "loop",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly loop?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "enabled",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly enabled?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebTimerEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebTimerEventDetail {\n    readonly tick: number;\n}",
      "members": [
        {
          "name": "tick",
          "kind": "property",
          "type": "number",
          "signature": "readonly tick: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebTimer",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebNonvisualComponent"
      ],
      "source": "/** Browser timer owned by one page or reusable placement. Time is in milliseconds. */\nexport class WebTimer extends WebNonvisualComponent {\n    #private;\n    constructor(configuration?: WebTimerConfiguration);\n    get time(): number;\n    /** Changing the interval while running schedules a fresh full interval. */\n    set time(value: number);\n    get loop(): boolean;\n    set loop(value: boolean);\n    get enabled(): boolean;\n    set enabled(value: boolean);\n    get tickCount(): number;\n    /** Starts a new run; calling Start while running has no effect. */\n    Start(): void;\n    Stop(): void;\n    Restart(): void;\n    set onTimer(handler: WebComponentEventHandler<this> | null);\n    set onStart(handler: WebComponentEventHandler<this> | null);\n    set onStop(handler: WebComponentEventHandler<this> | null);\n    dispose(): void;\n}",
      "publicSource": "/** Browser timer owned by one page or reusable placement. Time is in milliseconds. */\nexport class WebTimer extends WebNonvisualComponent {\n    constructor(configuration?: WebTimerConfiguration);\n    get time(): number;\n    /** Changing the interval while running schedules a fresh full interval. */\n    set time(value: number);\n    get loop(): boolean;\n    set loop(value: boolean);\n    get enabled(): boolean;\n    set enabled(value: boolean);\n    get tickCount(): number;\n    /** Starts a new run; calling Start while running has no effect. */\n    Start(): void;\n    Stop(): void;\n    Restart(): void;\n    set onTimer(handler: WebComponentEventHandler<this> | null);\n    set onStart(handler: WebComponentEventHandler<this> | null);\n    set onStop(handler: WebComponentEventHandler<this> | null);\n    dispose(): void;\n}",
      "members": [
        {
          "name": "time",
          "kind": "get",
          "type": "number",
          "signature": "get time(): number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "loop",
          "kind": "get",
          "type": "boolean",
          "signature": "get loop(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "enabled",
          "kind": "get",
          "type": "boolean",
          "signature": "get enabled(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "tickCount",
          "kind": "get",
          "type": "number",
          "signature": "get tickCount(): number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Start",
          "kind": "method",
          "type": "void",
          "signature": "Start(): void;",
          "parameters": [],
          "description": "Starts a new run; calling Start while running has no effect.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Stop",
          "kind": "method",
          "type": "void",
          "signature": "Stop(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Restart",
          "kind": "method",
          "type": "void",
          "signature": "Restart(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onTimer",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onTimer(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onStart",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onStart(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onStop",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onStop(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPaymentsConfiguration",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebNonvisualComponentOptions"
      ],
      "source": "export interface WebPaymentsConfiguration extends WebNonvisualComponentOptions {\n    readonly gatewaySlug?: string;\n    readonly mode?: 'payment' | 'subscription';\n    readonly enabled?: boolean;\n    readonly pollInterval?: number;\n    readonly pollTimeout?: number;\n    readonly autoResume?: boolean;\n    readonly autoWatch?: boolean;\n    readonly persistAttempts?: boolean;\n    /** Runtime-only durable adapter; never serialized into the Project Model. */\n    readonly storage?: WebPaymentsStorageAdapter;\n}",
      "members": [
        {
          "name": "gatewaySlug",
          "kind": "property",
          "type": "string",
          "signature": "readonly gatewaySlug?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "mode",
          "kind": "property",
          "type": "'payment' | 'subscription'",
          "signature": "readonly mode?: 'payment' | 'subscription';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "enabled",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly enabled?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "pollInterval",
          "kind": "property",
          "type": "number",
          "signature": "readonly pollInterval?: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "pollTimeout",
          "kind": "property",
          "type": "number",
          "signature": "readonly pollTimeout?: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "autoResume",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly autoResume?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "autoWatch",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly autoWatch?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "persistAttempts",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly persistAttempts?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "storage",
          "kind": "property",
          "type": "WebPaymentsStorageAdapter",
          "signature": "readonly storage?: WebPaymentsStorageAdapter;",
          "parameters": [],
          "description": "Runtime-only durable adapter; never serialized into the Project Model.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPaymentsStorageAdapter",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebPaymentsStorageAdapter {\n    getItem(key: string): string | null;\n    setItem(key: string, value: string): void;\n    removeItem(key: string): void;\n    withLock?<T>(name: string, action: () => Promise<T>, signal?: AbortSignal): Promise<T>;\n}",
      "members": [
        {
          "name": "getItem",
          "kind": "method",
          "type": "string | null",
          "signature": "getItem(key: string): string | null;",
          "parameters": [
            {
              "name": "key",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "setItem",
          "kind": "method",
          "type": "void",
          "signature": "setItem(key: string, value: string): void;",
          "parameters": [
            {
              "name": "key",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "value",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "removeItem",
          "kind": "method",
          "type": "void",
          "signature": "removeItem(key: string): void;",
          "parameters": [
            {
              "name": "key",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "withLock",
          "kind": "method",
          "type": "Promise<T>",
          "signature": "withLock?<T>(name: string, action: () => Promise<T>, signal?: AbortSignal): Promise<T>;",
          "parameters": [
            {
              "name": "name",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "action",
              "type": "() => Promise<T>",
              "optional": false,
              "rest": false
            },
            {
              "name": "signal",
              "type": "AbortSignal",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPaymentsCheckpoint",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "/** Application-owned recovery data. Save before POST and again before navigation. */\nexport interface WebPaymentsCheckpoint {\n    readonly version: 1;\n    readonly baseUrl: string;\n    readonly gatewaySlug: string;\n    readonly userId: string;\n    readonly sourceKey: string;\n    readonly mode: 'payment' | 'subscription';\n    readonly idempotencyKey: string;\n    readonly operationId?: string;\n}",
      "members": [
        {
          "name": "version",
          "kind": "property",
          "type": "1",
          "signature": "readonly version: 1;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "baseUrl",
          "kind": "property",
          "type": "string",
          "signature": "readonly baseUrl: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "gatewaySlug",
          "kind": "property",
          "type": "string",
          "signature": "readonly gatewaySlug: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "userId",
          "kind": "property",
          "type": "string",
          "signature": "readonly userId: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "sourceKey",
          "kind": "property",
          "type": "string",
          "signature": "readonly sourceKey: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "mode",
          "kind": "property",
          "type": "'payment' | 'subscription'",
          "signature": "readonly mode: 'payment' | 'subscription';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "idempotencyKey",
          "kind": "property",
          "type": "string",
          "signature": "readonly idempotencyKey: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "operationId",
          "kind": "property",
          "type": "string",
          "signature": "readonly operationId?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPaymentsObservationOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebPaymentsObservationOptions {\n    readonly signal?: AbortSignal;\n    readonly interval?: number;\n    readonly timeout?: number;\n}",
      "members": [
        {
          "name": "signal",
          "kind": "property",
          "type": "AbortSignal",
          "signature": "readonly signal?: AbortSignal;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "interval",
          "kind": "property",
          "type": "number",
          "signature": "readonly interval?: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "timeout",
          "kind": "property",
          "type": "number",
          "signature": "readonly timeout?: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPaymentsCheckoutOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebPaymentsObservationOptions"
      ],
      "source": "export interface WebPaymentsCheckoutOptions extends WebPaymentsObservationOptions {\n    /** Defaults to true. False prepares an open checkout for custom authored UI. */\n    readonly openCheckout?: boolean;\n}",
      "members": [
        {
          "name": "openCheckout",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly openCheckout?: boolean;",
          "parameters": [],
          "description": "Defaults to true. False prepares an open checkout for custom authored UI.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPaymentsResumeOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebPaymentsObservationOptions"
      ],
      "source": "export interface WebPaymentsResumeOptions extends WebPaymentsObservationOptions {\n    readonly mode?: 'payment' | 'subscription';\n    /** Defaults to the component's autoWatch setting. Never opens checkout. */\n    readonly watch?: boolean;\n}",
      "members": [
        {
          "name": "mode",
          "kind": "property",
          "type": "'payment' | 'subscription'",
          "signature": "readonly mode?: 'payment' | 'subscription';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "watch",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly watch?: boolean;",
          "parameters": [],
          "description": "Defaults to the component's autoWatch setting. Never opens checkout.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPaymentsConfirmationOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebPaymentsObservationOptions"
      ],
      "source": "export interface WebPaymentsConfirmationOptions extends WebPaymentsObservationOptions {\n    readonly operationId?: string;\n    /** Financial confirmation is enough by default; source synchronization is separate. */\n    readonly waitForSynchronization?: boolean;\n}",
      "members": [
        {
          "name": "operationId",
          "kind": "property",
          "type": "string",
          "signature": "readonly operationId?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "waitForSynchronization",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly waitForSynchronization?: boolean;",
          "parameters": [],
          "description": "Financial confirmation is enough by default; source synchronization is separate.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPaymentsState",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebPaymentsState = 'idle' | 'restoring' | 'preparing' | 'creating' | 'waiting' | 'opening' | 'watching' | 'refreshing' | 'loading-history' | 'canceling' | 'ready' | 'confirmed' | 'canceled' | 'uncertain' | 'failed' | 'error';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebPaymentsStateEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebPaymentsStateEventDetail {\n    readonly previous: WebPaymentsState;\n    readonly state: WebPaymentsState;\n}",
      "members": [
        {
          "name": "previous",
          "kind": "property",
          "type": "WebPaymentsState",
          "signature": "readonly previous: WebPaymentsState;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "state",
          "kind": "property",
          "type": "WebPaymentsState",
          "signature": "readonly state: WebPaymentsState;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPaymentsHistoryEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebPaymentsHistoryEventDetail {\n    readonly items: readonly import(\"@webrad/restgo-sdk\").RestGoPaymentOperation[];\n    readonly nextCursor: string;\n    readonly hasMore: boolean;\n}",
      "members": [
        {
          "name": "items",
          "kind": "property",
          "type": "readonly import(\"@webrad/restgo-sdk\").RestGoPaymentOperation[]",
          "signature": "readonly items: readonly import(\"@webrad/restgo-sdk\").RestGoPaymentOperation[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "nextCursor",
          "kind": "property",
          "type": "string",
          "signature": "readonly nextCursor: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "hasMore",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly hasMore: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPaymentsResumeEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebPaymentsResumeEventDetail {\n    readonly checkpoint: WebPaymentsCheckpoint;\n    readonly operation: import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null;\n    readonly automatic: boolean;\n}",
      "members": [
        {
          "name": "checkpoint",
          "kind": "property",
          "type": "WebPaymentsCheckpoint",
          "signature": "readonly checkpoint: WebPaymentsCheckpoint;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "operation",
          "kind": "property",
          "type": "import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null",
          "signature": "readonly operation: import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "automatic",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly automatic: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPaymentsAction",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebPaymentsAction = 'pay' | 'subscribe' | 'checkout' | 'resume' | 'refresh' | 'history' | 'load-more' | 'confirm' | 'create' | 'get' | 'list' | 'cancel' | 'wait' | 'watch';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebPaymentsOperationEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebPaymentsOperationEventDetail {\n    readonly previous: import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null;\n    readonly operation: import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null;\n}",
      "members": [
        {
          "name": "previous",
          "kind": "property",
          "type": "import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null",
          "signature": "readonly previous: import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "operation",
          "kind": "property",
          "type": "import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null",
          "signature": "readonly operation: import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPaymentsCheckoutEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebPaymentsCheckoutEventDetail {\n    readonly operation: import(\"@webrad/restgo-sdk\").RestGoPaymentOperation;\n}",
      "members": [
        {
          "name": "operation",
          "kind": "property",
          "type": "import(\"@webrad/restgo-sdk\").RestGoPaymentOperation",
          "signature": "readonly operation: import(\"@webrad/restgo-sdk\").RestGoPaymentOperation;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPaymentsSynchronizationEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebPaymentsSynchronizationEventDetail {\n    readonly operation: import(\"@webrad/restgo-sdk\").RestGoPaymentOperation;\n    readonly pending: boolean;\n    readonly error: string | null;\n}",
      "members": [
        {
          "name": "operation",
          "kind": "property",
          "type": "import(\"@webrad/restgo-sdk\").RestGoPaymentOperation",
          "signature": "readonly operation: import(\"@webrad/restgo-sdk\").RestGoPaymentOperation;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "pending",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly pending: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "error",
          "kind": "property",
          "type": "string | null",
          "signature": "readonly error: string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPaymentsErrorEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebPaymentsErrorEventDetail {\n    readonly action: WebPaymentsAction;\n    readonly operationId: string | null;\n    readonly error: Error;\n}",
      "members": [
        {
          "name": "action",
          "kind": "property",
          "type": "WebPaymentsAction",
          "signature": "readonly action: WebPaymentsAction;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "operationId",
          "kind": "property",
          "type": "string | null",
          "signature": "readonly operationId: string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "error",
          "kind": "property",
          "type": "Error",
          "signature": "readonly error: Error;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPaymentsRequestEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebPaymentsRequestEventDetail {\n    readonly action: WebPaymentsAction;\n    readonly operationId: string | null;\n    readonly error: Error | null;\n}",
      "members": [
        {
          "name": "action",
          "kind": "property",
          "type": "WebPaymentsAction",
          "signature": "readonly action: WebPaymentsAction;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "operationId",
          "kind": "property",
          "type": "string | null",
          "signature": "readonly operationId: string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "error",
          "kind": "property",
          "type": "Error | null",
          "signature": "readonly error: Error | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPaymentsErrorKind",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebPaymentsErrorKind = 'invalid-argument' | 'not-configured' | 'auth-required' | 'context-changed' | 'disabled' | 'disposed' | 'busy' | 'attempt-required' | 'attempt-conflict' | 'checkout-uncertain' | 'checkout-unavailable' | 'timeout' | 'storage-unavailable' | 'storage-corrupt' | 'payment-failed' | 'synchronization-failed' | 'aborted';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebPaymentsError",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "Error"
      ],
      "source": "/** Local orchestration errors; HTTP failures retain their original RestGoError. */\nexport class WebPaymentsError extends Error {\n    readonly kind: WebPaymentsErrorKind;\n    constructor(kind: WebPaymentsErrorKind, message: string);\n}",
      "publicSource": "/** Local orchestration errors; HTTP failures retain their original RestGoError. */\nexport class WebPaymentsError extends Error {\n    readonly kind: WebPaymentsErrorKind;\n    constructor(kind: WebPaymentsErrorKind, message: string);\n}",
      "members": [
        {
          "name": "kind",
          "kind": "property",
          "type": "WebPaymentsErrorKind",
          "signature": "readonly kind: WebPaymentsErrorKind;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPayments",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebNonvisualComponent"
      ],
      "source": "/** Customer payment coordinator, owned by one page or reusable placement. */\nexport class WebPayments extends WebNonvisualComponent {\n    #private;\n    constructor(configuration?: WebPaymentsConfiguration);\n    get gatewaySlug(): string;\n    set gatewaySlug(value: string);\n    get mode(): import(\"@webrad/restgo-sdk\").RestGoPaymentMode;\n    /** Changes only the default for a future prepared attempt. */\n    set mode(value: import(\"@webrad/restgo-sdk\").RestGoPaymentMode);\n    get enabled(): boolean;\n    set enabled(value: boolean);\n    get pollInterval(): number;\n    set pollInterval(value: number);\n    get pollTimeout(): number;\n    set pollTimeout(value: number);\n    get busy(): boolean;\n    get autoResume(): boolean;\n    set autoResume(value: boolean);\n    get autoWatch(): boolean;\n    set autoWatch(value: boolean);\n    get persistAttempts(): boolean;\n    set persistAttempts(value: boolean);\n    get state(): WebPaymentsState;\n    get status(): string | null;\n    get checkoutState(): string | null;\n    get synchronizationPending(): boolean;\n    get synchronizationError(): string | null;\n    get canOpenCheckout(): boolean;\n    get canCancelSubscription(): boolean;\n    get history(): readonly import(\"@webrad/restgo-sdk\").RestGoPaymentOperation[];\n    get nextCursor(): string;\n    get hasMore(): boolean;\n    get watching(): boolean;\n    get operation(): import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null;\n    get checkoutUrl(): string | null;\n    get error(): Error | null;\n    get attempt(): import(\"@webrad/restgo-sdk\").RestGoCheckoutInput | null;\n    /** Prepare/recover the purchase, persist its key, wait for checkout and open it. */\n    Pay(sourceKey: string, options?: WebPaymentsCheckoutOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;\n    /** Subscribe through the hosted checkout with the same automatic recovery flow. */\n    Subscribe(sourceKey: string, options?: WebPaymentsCheckoutOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;\n    /** Use the mode selected in the Inspector. Opens checkout by default. */\n    Checkout(sourceKey: string, options?: WebPaymentsCheckoutOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;\n    /** Recover a purchase or the last saved attempt; never redirects back to checkout. */\n    Resume(sourceKey?: string, options?: WebPaymentsResumeOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null>;\n    /** Refresh the selected/saved operation without creating a charge. */\n    Refresh(options?: import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null>;\n    /** Load customer history and expose its cursor without changing selection. */\n    LoadHistory(options?: import(\"@webrad/restgo-sdk\").RestGoPaymentListOptions): Promise<readonly import(\"@webrad/restgo-sdk\").RestGoPaymentOperation[]>;\n    /** Append the next page, deduplicating operations. Last page is a harmless no-op. */\n    LoadMore(options?: import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions): Promise<readonly import(\"@webrad/restgo-sdk\").RestGoPaymentOperation[]>;\n    /** Await payment success or subscription activation, optionally including source synchronization. */\n    WaitForConfirmation(options?: WebPaymentsConfirmationOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;\n    /** Advanced preparation without HTTP. Default persistence saves its recovery checkpoint. */\n    PrepareCheckout(sourceKey: string, mode?: import(\"@webrad/restgo-sdk\").RestGoPaymentMode): WebPaymentsCheckpoint;\n    CreateCheckout(options?: import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;\n    GetOperation(id: string, options?: import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;\n    ListOperations(options?: import(\"@webrad/restgo-sdk\").RestGoPaymentListOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperationList>;\n    CancelSubscription(options?: import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;\n    CancelSubscription(id: string, options?: import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;\n    WaitForCheckout(id?: string, options?: WebPaymentsObservationOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;\n    /** Starts one bounded loop. Background failures are delivered through OnError. */\n    StartWatching(id?: string, options?: WebPaymentsObservationOptions): void;\n    /** Local observation cancellation only; never cancels the backend transaction. */\n    StopWatching(): void;\n    OpenCheckout(): void;\n    ExportCheckpoint(): WebPaymentsCheckpoint;\n    /** Validates recovery data against this API, gateway and customer. Performs no HTTP. */\n    RestoreCheckpoint(value: unknown): WebPaymentsCheckpoint;\n    /** Save recovery data first. This only clears local state and never cancels a charge. */\n    Clear(): void;\n    set onCheckoutCreated(handler: WebComponentEventHandler<this> | null);\n    set onCheckoutReady(handler: WebComponentEventHandler<this> | null);\n    set onOperationChange(handler: WebComponentEventHandler<this> | null);\n    set onSynchronizationChange(handler: WebComponentEventHandler<this> | null);\n    set onError(handler: WebComponentEventHandler<this> | null);\n    set onRequestComplete(handler: WebComponentEventHandler<this> | null);\n    set onPaymentSucceeded(handler: WebComponentEventHandler<this> | null);\n    set onSubscriptionActivated(handler: WebComponentEventHandler<this> | null);\n    set onSubscriptionCanceled(handler: WebComponentEventHandler<this> | null);\n    set onCheckoutOpened(handler: WebComponentEventHandler<this> | null);\n    set onHistoryChange(handler: WebComponentEventHandler<this> | null);\n    set onStateChange(handler: WebComponentEventHandler<this> | null);\n    set onRestored(handler: WebComponentEventHandler<this> | null);\n    dispose(): void;\n}",
      "publicSource": "/** Customer payment coordinator, owned by one page or reusable placement. */\nexport class WebPayments extends WebNonvisualComponent {\n    constructor(configuration?: WebPaymentsConfiguration);\n    get gatewaySlug(): string;\n    set gatewaySlug(value: string);\n    get mode(): import(\"@webrad/restgo-sdk\").RestGoPaymentMode;\n    /** Changes only the default for a future prepared attempt. */\n    set mode(value: import(\"@webrad/restgo-sdk\").RestGoPaymentMode);\n    get enabled(): boolean;\n    set enabled(value: boolean);\n    get pollInterval(): number;\n    set pollInterval(value: number);\n    get pollTimeout(): number;\n    set pollTimeout(value: number);\n    get busy(): boolean;\n    get autoResume(): boolean;\n    set autoResume(value: boolean);\n    get autoWatch(): boolean;\n    set autoWatch(value: boolean);\n    get persistAttempts(): boolean;\n    set persistAttempts(value: boolean);\n    get state(): WebPaymentsState;\n    get status(): string | null;\n    get checkoutState(): string | null;\n    get synchronizationPending(): boolean;\n    get synchronizationError(): string | null;\n    get canOpenCheckout(): boolean;\n    get canCancelSubscription(): boolean;\n    get history(): readonly import(\"@webrad/restgo-sdk\").RestGoPaymentOperation[];\n    get nextCursor(): string;\n    get hasMore(): boolean;\n    get watching(): boolean;\n    get operation(): import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null;\n    get checkoutUrl(): string | null;\n    get error(): Error | null;\n    get attempt(): import(\"@webrad/restgo-sdk\").RestGoCheckoutInput | null;\n    /** Prepare/recover the purchase, persist its key, wait for checkout and open it. */\n    Pay(sourceKey: string, options?: WebPaymentsCheckoutOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;\n    /** Subscribe through the hosted checkout with the same automatic recovery flow. */\n    Subscribe(sourceKey: string, options?: WebPaymentsCheckoutOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;\n    /** Use the mode selected in the Inspector. Opens checkout by default. */\n    Checkout(sourceKey: string, options?: WebPaymentsCheckoutOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;\n    /** Recover a purchase or the last saved attempt; never redirects back to checkout. */\n    Resume(sourceKey?: string, options?: WebPaymentsResumeOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null>;\n    /** Refresh the selected/saved operation without creating a charge. */\n    Refresh(options?: import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null>;\n    /** Load customer history and expose its cursor without changing selection. */\n    LoadHistory(options?: import(\"@webrad/restgo-sdk\").RestGoPaymentListOptions): Promise<readonly import(\"@webrad/restgo-sdk\").RestGoPaymentOperation[]>;\n    /** Append the next page, deduplicating operations. Last page is a harmless no-op. */\n    LoadMore(options?: import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions): Promise<readonly import(\"@webrad/restgo-sdk\").RestGoPaymentOperation[]>;\n    /** Await payment success or subscription activation, optionally including source synchronization. */\n    WaitForConfirmation(options?: WebPaymentsConfirmationOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;\n    /** Advanced preparation without HTTP. Default persistence saves its recovery checkpoint. */\n    PrepareCheckout(sourceKey: string, mode?: import(\"@webrad/restgo-sdk\").RestGoPaymentMode): WebPaymentsCheckpoint;\n    CreateCheckout(options?: import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;\n    GetOperation(id: string, options?: import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;\n    ListOperations(options?: import(\"@webrad/restgo-sdk\").RestGoPaymentListOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperationList>;\n    CancelSubscription(options?: import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;\n    CancelSubscription(id: string, options?: import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;\n    WaitForCheckout(id?: string, options?: WebPaymentsObservationOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;\n    /** Starts one bounded loop. Background failures are delivered through OnError. */\n    StartWatching(id?: string, options?: WebPaymentsObservationOptions): void;\n    /** Local observation cancellation only; never cancels the backend transaction. */\n    StopWatching(): void;\n    OpenCheckout(): void;\n    ExportCheckpoint(): WebPaymentsCheckpoint;\n    /** Validates recovery data against this API, gateway and customer. Performs no HTTP. */\n    RestoreCheckpoint(value: unknown): WebPaymentsCheckpoint;\n    /** Save recovery data first. This only clears local state and never cancels a charge. */\n    Clear(): void;\n    set onCheckoutCreated(handler: WebComponentEventHandler<this> | null);\n    set onCheckoutReady(handler: WebComponentEventHandler<this> | null);\n    set onOperationChange(handler: WebComponentEventHandler<this> | null);\n    set onSynchronizationChange(handler: WebComponentEventHandler<this> | null);\n    set onError(handler: WebComponentEventHandler<this> | null);\n    set onRequestComplete(handler: WebComponentEventHandler<this> | null);\n    set onPaymentSucceeded(handler: WebComponentEventHandler<this> | null);\n    set onSubscriptionActivated(handler: WebComponentEventHandler<this> | null);\n    set onSubscriptionCanceled(handler: WebComponentEventHandler<this> | null);\n    set onCheckoutOpened(handler: WebComponentEventHandler<this> | null);\n    set onHistoryChange(handler: WebComponentEventHandler<this> | null);\n    set onStateChange(handler: WebComponentEventHandler<this> | null);\n    set onRestored(handler: WebComponentEventHandler<this> | null);\n    dispose(): void;\n}",
      "members": [
        {
          "name": "gatewaySlug",
          "kind": "get",
          "type": "string",
          "signature": "get gatewaySlug(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "mode",
          "kind": "get",
          "type": "import(\"@webrad/restgo-sdk\").RestGoPaymentMode",
          "signature": "get mode(): import(\"@webrad/restgo-sdk\").RestGoPaymentMode;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "enabled",
          "kind": "get",
          "type": "boolean",
          "signature": "get enabled(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "pollInterval",
          "kind": "get",
          "type": "number",
          "signature": "get pollInterval(): number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "pollTimeout",
          "kind": "get",
          "type": "number",
          "signature": "get pollTimeout(): number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "busy",
          "kind": "get",
          "type": "boolean",
          "signature": "get busy(): boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "autoResume",
          "kind": "get",
          "type": "boolean",
          "signature": "get autoResume(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "autoWatch",
          "kind": "get",
          "type": "boolean",
          "signature": "get autoWatch(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "persistAttempts",
          "kind": "get",
          "type": "boolean",
          "signature": "get persistAttempts(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "state",
          "kind": "get",
          "type": "WebPaymentsState",
          "signature": "get state(): WebPaymentsState;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "status",
          "kind": "get",
          "type": "string | null",
          "signature": "get status(): string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "checkoutState",
          "kind": "get",
          "type": "string | null",
          "signature": "get checkoutState(): string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "synchronizationPending",
          "kind": "get",
          "type": "boolean",
          "signature": "get synchronizationPending(): boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "synchronizationError",
          "kind": "get",
          "type": "string | null",
          "signature": "get synchronizationError(): string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "canOpenCheckout",
          "kind": "get",
          "type": "boolean",
          "signature": "get canOpenCheckout(): boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "canCancelSubscription",
          "kind": "get",
          "type": "boolean",
          "signature": "get canCancelSubscription(): boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "history",
          "kind": "get",
          "type": "readonly import(\"@webrad/restgo-sdk\").RestGoPaymentOperation[]",
          "signature": "get history(): readonly import(\"@webrad/restgo-sdk\").RestGoPaymentOperation[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "nextCursor",
          "kind": "get",
          "type": "string",
          "signature": "get nextCursor(): string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "hasMore",
          "kind": "get",
          "type": "boolean",
          "signature": "get hasMore(): boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "watching",
          "kind": "get",
          "type": "boolean",
          "signature": "get watching(): boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "operation",
          "kind": "get",
          "type": "import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null",
          "signature": "get operation(): import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "checkoutUrl",
          "kind": "get",
          "type": "string | null",
          "signature": "get checkoutUrl(): string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "error",
          "kind": "get",
          "type": "Error | null",
          "signature": "get error(): Error | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "attempt",
          "kind": "get",
          "type": "import(\"@webrad/restgo-sdk\").RestGoCheckoutInput | null",
          "signature": "get attempt(): import(\"@webrad/restgo-sdk\").RestGoCheckoutInput | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Pay",
          "kind": "method",
          "type": "Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>",
          "signature": "Pay(sourceKey: string, options?: WebPaymentsCheckoutOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;",
          "parameters": [
            {
              "name": "sourceKey",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "WebPaymentsCheckoutOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "Prepare/recover the purchase, persist its key, wait for checkout and open it.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Subscribe",
          "kind": "method",
          "type": "Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>",
          "signature": "Subscribe(sourceKey: string, options?: WebPaymentsCheckoutOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;",
          "parameters": [
            {
              "name": "sourceKey",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "WebPaymentsCheckoutOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "Subscribe through the hosted checkout with the same automatic recovery flow.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Checkout",
          "kind": "method",
          "type": "Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>",
          "signature": "Checkout(sourceKey: string, options?: WebPaymentsCheckoutOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;",
          "parameters": [
            {
              "name": "sourceKey",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "WebPaymentsCheckoutOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "Use the mode selected in the Inspector. Opens checkout by default.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Resume",
          "kind": "method",
          "type": "Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null>",
          "signature": "Resume(sourceKey?: string, options?: WebPaymentsResumeOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null>;",
          "parameters": [
            {
              "name": "sourceKey",
              "type": "string",
              "optional": true,
              "rest": false
            },
            {
              "name": "options",
              "type": "WebPaymentsResumeOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "Recover a purchase or the last saved attempt; never redirects back to checkout.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Refresh",
          "kind": "method",
          "type": "Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null>",
          "signature": "Refresh(options?: import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation | null>;",
          "parameters": [
            {
              "name": "options",
              "type": "import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "Refresh the selected/saved operation without creating a charge.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "LoadHistory",
          "kind": "method",
          "type": "Promise<readonly import(\"@webrad/restgo-sdk\").RestGoPaymentOperation[]>",
          "signature": "LoadHistory(options?: import(\"@webrad/restgo-sdk\").RestGoPaymentListOptions): Promise<readonly import(\"@webrad/restgo-sdk\").RestGoPaymentOperation[]>;",
          "parameters": [
            {
              "name": "options",
              "type": "import(\"@webrad/restgo-sdk\").RestGoPaymentListOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "Load customer history and expose its cursor without changing selection.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "LoadMore",
          "kind": "method",
          "type": "Promise<readonly import(\"@webrad/restgo-sdk\").RestGoPaymentOperation[]>",
          "signature": "LoadMore(options?: import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions): Promise<readonly import(\"@webrad/restgo-sdk\").RestGoPaymentOperation[]>;",
          "parameters": [
            {
              "name": "options",
              "type": "import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "Append the next page, deduplicating operations. Last page is a harmless no-op.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "WaitForConfirmation",
          "kind": "method",
          "type": "Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>",
          "signature": "WaitForConfirmation(options?: WebPaymentsConfirmationOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;",
          "parameters": [
            {
              "name": "options",
              "type": "WebPaymentsConfirmationOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "Await payment success or subscription activation, optionally including source synchronization.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "PrepareCheckout",
          "kind": "method",
          "type": "WebPaymentsCheckpoint",
          "signature": "PrepareCheckout(sourceKey: string, mode?: import(\"@webrad/restgo-sdk\").RestGoPaymentMode): WebPaymentsCheckpoint;",
          "parameters": [
            {
              "name": "sourceKey",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "mode",
              "type": "import(\"@webrad/restgo-sdk\").RestGoPaymentMode",
              "optional": true,
              "rest": false
            }
          ],
          "description": "Advanced preparation without HTTP. Default persistence saves its recovery checkpoint.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "CreateCheckout",
          "kind": "method",
          "type": "Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>",
          "signature": "CreateCheckout(options?: import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;",
          "parameters": [
            {
              "name": "options",
              "type": "import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "GetOperation",
          "kind": "method",
          "type": "Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>",
          "signature": "GetOperation(id: string, options?: import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "ListOperations",
          "kind": "method",
          "type": "Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperationList>",
          "signature": "ListOperations(options?: import(\"@webrad/restgo-sdk\").RestGoPaymentListOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperationList>;",
          "parameters": [
            {
              "name": "options",
              "type": "import(\"@webrad/restgo-sdk\").RestGoPaymentListOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "CancelSubscription",
          "kind": "method",
          "type": "Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>",
          "signature": "CancelSubscription(options?: import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;",
          "parameters": [
            {
              "name": "options",
              "type": "import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "CancelSubscription",
          "kind": "method",
          "type": "Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>",
          "signature": "CancelSubscription(id: string, options?: import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "import(\"@webrad/restgo-sdk\").RestGoPaymentRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "WaitForCheckout",
          "kind": "method",
          "type": "Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>",
          "signature": "WaitForCheckout(id?: string, options?: WebPaymentsObservationOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoPaymentOperation>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": true,
              "rest": false
            },
            {
              "name": "options",
              "type": "WebPaymentsObservationOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "StartWatching",
          "kind": "method",
          "type": "void",
          "signature": "StartWatching(id?: string, options?: WebPaymentsObservationOptions): void;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": true,
              "rest": false
            },
            {
              "name": "options",
              "type": "WebPaymentsObservationOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "Starts one bounded loop. Background failures are delivered through OnError.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "StopWatching",
          "kind": "method",
          "type": "void",
          "signature": "StopWatching(): void;",
          "parameters": [],
          "description": "Local observation cancellation only; never cancels the backend transaction.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "OpenCheckout",
          "kind": "method",
          "type": "void",
          "signature": "OpenCheckout(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "ExportCheckpoint",
          "kind": "method",
          "type": "WebPaymentsCheckpoint",
          "signature": "ExportCheckpoint(): WebPaymentsCheckpoint;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "RestoreCheckpoint",
          "kind": "method",
          "type": "WebPaymentsCheckpoint",
          "signature": "RestoreCheckpoint(value: unknown): WebPaymentsCheckpoint;",
          "parameters": [
            {
              "name": "value",
              "type": "unknown",
              "optional": false,
              "rest": false
            }
          ],
          "description": "Validates recovery data against this API, gateway and customer. Performs no HTTP.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Clear",
          "kind": "method",
          "type": "void",
          "signature": "Clear(): void;",
          "parameters": [],
          "description": "Save recovery data first. This only clears local state and never cancels a charge.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onCheckoutCreated",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onCheckoutCreated(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onCheckoutReady",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onCheckoutReady(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onOperationChange",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onOperationChange(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onSynchronizationChange",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onSynchronizationChange(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onError",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onError(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onRequestComplete",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onRequestComplete(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onPaymentSucceeded",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onPaymentSucceeded(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onSubscriptionActivated",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onSubscriptionActivated(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onSubscriptionCanceled",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onSubscriptionCanceled(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onCheckoutOpened",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onCheckoutOpened(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onHistoryChange",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onHistoryChange(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onStateChange",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onStateChange(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onRestored",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onRestored(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebHtml",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent<HTMLIFrameElement>"
      ],
      "source": "/** Isolated markup or a standalone external iframe, with the original HTML preserved. */\nexport class WebHtml extends WebComponent<HTMLIFrameElement> {\n    constructor(element: HTMLElement);\n    /** A fixed ratio derives height from width; none restores the saved height rules. */\n    get aspectRatio(): WebAspectRatio;\n    set aspectRatio(value: WebAspectRatio);\n    /** A fragment or complete HTML document, preserved exactly as authored. */\n    get html(): string;\n    set html(value: string);\n    /** Accessible name for the embedded document. */\n    get title(): string;\n    set title(value: string);\n    get enabled(): boolean;\n    set enabled(value: boolean);\n    clear(): void;\n    set onLoad(handler: WebComponentEventHandler<this> | null);\n}",
      "publicSource": "/** Isolated markup or a standalone external iframe, with the original HTML preserved. */\nexport class WebHtml extends WebComponent<HTMLIFrameElement> {\n    constructor(element: HTMLElement);\n    /** A fixed ratio derives height from width; none restores the saved height rules. */\n    get aspectRatio(): WebAspectRatio;\n    set aspectRatio(value: WebAspectRatio);\n    /** A fragment or complete HTML document, preserved exactly as authored. */\n    get html(): string;\n    set html(value: string);\n    /** Accessible name for the embedded document. */\n    get title(): string;\n    set title(value: string);\n    get enabled(): boolean;\n    set enabled(value: boolean);\n    clear(): void;\n    set onLoad(handler: WebComponentEventHandler<this> | null);\n}",
      "members": [
        {
          "name": "aspectRatio",
          "kind": "get",
          "type": "WebAspectRatio",
          "signature": "get aspectRatio(): WebAspectRatio;",
          "parameters": [],
          "description": "A fixed ratio derives height from width; none restores the saved height rules.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "html",
          "kind": "get",
          "type": "string",
          "signature": "get html(): string;",
          "parameters": [],
          "description": "A fragment or complete HTML document, preserved exactly as authored.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "title",
          "kind": "get",
          "type": "string",
          "signature": "get title(): string;",
          "parameters": [],
          "description": "Accessible name for the embedded document.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "enabled",
          "kind": "get",
          "type": "boolean",
          "signature": "get enabled(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "clear",
          "kind": "method",
          "type": "void",
          "signature": "clear(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onLoad",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onLoad(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebDateMode",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebDateMode = 'date' | 'datetime';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebDateFormat",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebDateFormat = 'dd/MM/yyyy' | 'MM/dd/yyyy' | 'yyyy-MM-dd';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "isWebDateValue",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Empty values clear a field. Nonempty values use local ISO calendar fields. */\nexport function isWebDateValue(value: unknown): value is string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "configureWebDate",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Shared model projection for Designer and generated browser applications. */\nexport function configureWebDate(component: WebDate, props: Readonly<Record<string, unknown>>, name: string): void;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebDate",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent<HTMLElement>"
      ],
      "source": "/** Masked local date/date-time input. Values never imply a UTC time zone. */\nexport class WebDate extends WebComponent<HTMLElement> {\n    #private;\n    constructor(element: HTMLElement);\n    get mode(): WebDateMode;\n    set mode(value: WebDateMode);\n    get dateFormat(): WebDateFormat;\n    set dateFormat(value: WebDateFormat);\n    get showSeconds(): boolean;\n    set showSeconds(value: boolean);\n    get mask(): string;\n    /** Canonical YYYY-MM-DD or YYYY-MM-DDTHH:mm[:ss]; empty while incomplete/invalid. */\n    get value(): string;\n    set value(value: string);\n    /** Display text, including an incomplete or invalid draft. */\n    get text(): string;\n    set text(value: string);\n    /** A fresh Date at the start of the local day; null for an empty/incomplete/impossible date. */\n    get date(): Date | null;\n    set date(value: Date | null);\n    /** A fresh local Date including time; date mode returns the start of the local day. */\n    get datetime(): Date | null;\n    set datetime(value: Date | null);\n    get min(): string;\n    set min(value: string);\n    get max(): string;\n    set max(value: string);\n    get required(): boolean;\n    set required(value: boolean);\n    get readOnly(): boolean;\n    set readOnly(value: boolean);\n    get placeholder(): string;\n    set placeholder(value: string);\n    get accessibleLabel(): string;\n    set accessibleLabel(value: string);\n    get showCalendar(): boolean;\n    set showCalendar(value: boolean);\n    get visible(): boolean;\n    set visible(value: boolean);\n    get enabled(): boolean;\n    set enabled(value: boolean);\n    get tabIndex(): number;\n    set tabIndex(value: number);\n    focus(options?: FocusOptions): void;\n    get valid(): boolean;\n    get validationMessage(): string;\n    checkValidity(): boolean;\n    reportValidity(): boolean;\n    clear(): void;\n    setNow(): void;\n    /** Opens the calendar aligned to the field, with a minimum popup width of 260px. */\n    showPicker(): boolean;\n    set onChange(handler: WebComponentEventHandler<this> | null);\n    set onInput(handler: WebComponentEventHandler<this> | null);\n    dispose(): void;\n}",
      "publicSource": "/** Masked local date/date-time input. Values never imply a UTC time zone. */\nexport class WebDate extends WebComponent<HTMLElement> {\n    constructor(element: HTMLElement);\n    get mode(): WebDateMode;\n    set mode(value: WebDateMode);\n    get dateFormat(): WebDateFormat;\n    set dateFormat(value: WebDateFormat);\n    get showSeconds(): boolean;\n    set showSeconds(value: boolean);\n    get mask(): string;\n    /** Canonical YYYY-MM-DD or YYYY-MM-DDTHH:mm[:ss]; empty while incomplete/invalid. */\n    get value(): string;\n    set value(value: string);\n    /** Display text, including an incomplete or invalid draft. */\n    get text(): string;\n    set text(value: string);\n    /** A fresh Date at the start of the local day; null for an empty/incomplete/impossible date. */\n    get date(): Date | null;\n    set date(value: Date | null);\n    /** A fresh local Date including time; date mode returns the start of the local day. */\n    get datetime(): Date | null;\n    set datetime(value: Date | null);\n    get min(): string;\n    set min(value: string);\n    get max(): string;\n    set max(value: string);\n    get required(): boolean;\n    set required(value: boolean);\n    get readOnly(): boolean;\n    set readOnly(value: boolean);\n    get placeholder(): string;\n    set placeholder(value: string);\n    get accessibleLabel(): string;\n    set accessibleLabel(value: string);\n    get showCalendar(): boolean;\n    set showCalendar(value: boolean);\n    get visible(): boolean;\n    set visible(value: boolean);\n    get enabled(): boolean;\n    set enabled(value: boolean);\n    get tabIndex(): number;\n    set tabIndex(value: number);\n    focus(options?: FocusOptions): void;\n    get valid(): boolean;\n    get validationMessage(): string;\n    checkValidity(): boolean;\n    reportValidity(): boolean;\n    clear(): void;\n    setNow(): void;\n    /** Opens the calendar aligned to the field, with a minimum popup width of 260px. */\n    showPicker(): boolean;\n    set onChange(handler: WebComponentEventHandler<this> | null);\n    set onInput(handler: WebComponentEventHandler<this> | null);\n    dispose(): void;\n}",
      "members": [
        {
          "name": "mode",
          "kind": "get",
          "type": "WebDateMode",
          "signature": "get mode(): WebDateMode;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "dateFormat",
          "kind": "get",
          "type": "WebDateFormat",
          "signature": "get dateFormat(): WebDateFormat;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "showSeconds",
          "kind": "get",
          "type": "boolean",
          "signature": "get showSeconds(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "mask",
          "kind": "get",
          "type": "string",
          "signature": "get mask(): string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "value",
          "kind": "get",
          "type": "string",
          "signature": "get value(): string;",
          "parameters": [],
          "description": "Canonical YYYY-MM-DD or YYYY-MM-DDTHH:mm[:ss]; empty while incomplete/invalid.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "text",
          "kind": "get",
          "type": "string",
          "signature": "get text(): string;",
          "parameters": [],
          "description": "Display text, including an incomplete or invalid draft.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "date",
          "kind": "get",
          "type": "Date | null",
          "signature": "get date(): Date | null;",
          "parameters": [],
          "description": "A fresh Date at the start of the local day; null for an empty/incomplete/impossible date.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "datetime",
          "kind": "get",
          "type": "Date | null",
          "signature": "get datetime(): Date | null;",
          "parameters": [],
          "description": "A fresh local Date including time; date mode returns the start of the local day.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "min",
          "kind": "get",
          "type": "string",
          "signature": "get min(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "max",
          "kind": "get",
          "type": "string",
          "signature": "get max(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "required",
          "kind": "get",
          "type": "boolean",
          "signature": "get required(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "readOnly",
          "kind": "get",
          "type": "boolean",
          "signature": "get readOnly(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "placeholder",
          "kind": "get",
          "type": "string",
          "signature": "get placeholder(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "accessibleLabel",
          "kind": "get",
          "type": "string",
          "signature": "get accessibleLabel(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "showCalendar",
          "kind": "get",
          "type": "boolean",
          "signature": "get showCalendar(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "visible",
          "kind": "get",
          "type": "boolean",
          "signature": "get visible(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "enabled",
          "kind": "get",
          "type": "boolean",
          "signature": "get enabled(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "tabIndex",
          "kind": "get",
          "type": "number",
          "signature": "get tabIndex(): number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "focus",
          "kind": "method",
          "type": "void",
          "signature": "focus(options?: FocusOptions): void;",
          "parameters": [
            {
              "name": "options",
              "type": "FocusOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "valid",
          "kind": "get",
          "type": "boolean",
          "signature": "get valid(): boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "validationMessage",
          "kind": "get",
          "type": "string",
          "signature": "get validationMessage(): string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "checkValidity",
          "kind": "method",
          "type": "boolean",
          "signature": "checkValidity(): boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "reportValidity",
          "kind": "method",
          "type": "boolean",
          "signature": "reportValidity(): boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "clear",
          "kind": "method",
          "type": "void",
          "signature": "clear(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "setNow",
          "kind": "method",
          "type": "void",
          "signature": "setNow(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "showPicker",
          "kind": "method",
          "type": "boolean",
          "signature": "showPicker(): boolean;",
          "parameters": [],
          "description": "Opens the calendar aligned to the field, with a minimum popup width of 260px.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onChange",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onChange(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onInput",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onInput(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebEditMaskCase",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "/** Serializable character rules shared by the Inspector and browser runtime. */\nexport type WebEditMaskCase = 'none' | 'upper' | 'lower';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebEditMaskToken",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebEditMaskToken {\n    /** A JavaScript Unicode regular expression matching one complete character. */\n    readonly pattern: string;\n    readonly transform?: WebEditMaskCase;\n}",
      "members": [
        {
          "name": "pattern",
          "kind": "property",
          "type": "string",
          "signature": "readonly pattern: string;",
          "parameters": [],
          "description": "A JavaScript Unicode regular expression matching one complete character.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "transform",
          "kind": "property",
          "type": "WebEditMaskCase",
          "signature": "readonly transform?: WebEditMaskCase;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebEditMaskTokens",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebEditMaskTokens = Readonly<Record<string, string | WebEditMaskToken>>;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "DEFAULT_EDIT_MASK_TOKENS",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const DEFAULT_EDIT_MASK_TOKENS: WebEditMaskTokens;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "EditMaskResult",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface EditMaskResult {\n    readonly text: string;\n    readonly raw: string;\n    readonly complete: boolean;\n    /** UTF-16 offsets of editable characters in the formatted value. */\n    readonly positions: readonly {\n        readonly start: number;\n        readonly end: number;\n    }[];\n    /** Formatted caret offsets indexed by source UTF-16 offset. */\n    readonly carets: readonly number[];\n}",
      "members": [
        {
          "name": "text",
          "kind": "property",
          "type": "string",
          "signature": "readonly text: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "raw",
          "kind": "property",
          "type": "string",
          "signature": "readonly raw: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "complete",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly complete: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "positions",
          "kind": "property",
          "type": "readonly {\n        readonly start: number;\n        readonly end: number;\n    }[]",
          "signature": "readonly positions: readonly {\n    readonly start: number;\n    readonly end: number;\n}[];",
          "parameters": [],
          "description": "UTF-16 offsets of editable characters in the formatted value.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "carets",
          "kind": "property",
          "type": "readonly number[]",
          "signature": "readonly carets: readonly number[];",
          "parameters": [],
          "description": "Formatted caret offsets indexed by source UTF-16 offset.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "CompiledEditMask",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface CompiledEditMask {\n    format(value: string, letterCase?: WebEditMaskCase, raw?: boolean): EditMaskResult;\n}",
      "members": [
        {
          "name": "format",
          "kind": "method",
          "type": "EditMaskResult",
          "signature": "format(value: string, letterCase?: WebEditMaskCase, raw?: boolean): EditMaskResult;",
          "parameters": [
            {
              "name": "value",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "letterCase",
              "type": "WebEditMaskCase",
              "optional": true,
              "rest": false
            },
            {
              "name": "raw",
              "type": "boolean",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "parseWebEditMaskTokens",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function parseWebEditMaskTokens(value: unknown): WebEditMaskTokens;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "compileEditMask",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Bounded pattern grammar: literals, escapes, [optional groups], {min,max} and | alternatives. */\nexport function compileEditMask(pattern: string, tokens?: WebEditMaskTokens): CompiledEditMask;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "isWebEditMaskPattern",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function isWebEditMaskPattern(value: unknown): value is string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "isWebEditMaskTokens",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function isWebEditMaskTokens(value: unknown): value is WebEditMaskTokens;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebInputType",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebInputType = 'text' | 'password' | 'email' | 'number' | 'search' | 'tel' | 'url';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebEditIcon",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "/** An empty string removes the icon. */\nexport type WebEditIcon = WebButtonIcon | '';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebEdit",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent<HTMLElement>"
      ],
      "source": "/** A text field with an optional, dynamically configurable character mask. */\nexport class WebEdit extends WebComponent<HTMLElement> {\n    #private;\n    constructor(element: HTMLElement);\n    get value(): string;\n    set value(value: string);\n    /** Accepted characters without mask literals. Assign this when input is known to be raw. */\n    get rawValue(): string;\n    set rawValue(value: string);\n    get maskEnabled(): boolean;\n    set maskEnabled(value: boolean);\n    /** 0 digit, a Unicode letter, * alphanumeric, # any character; escape literals with \\\\. */\n    get mask(): string;\n    set mask(value: string);\n    /** Custom tokens override built-ins. Each pattern matches one whole Unicode character. */\n    get maskTokens(): WebEditMaskTokens;\n    set maskTokens(value: WebEditMaskTokens);\n    get maskCase(): WebEditMaskCase;\n    set maskCase(value: WebEditMaskCase);\n    /** True when an active mask has all its required positions filled. Empty is incomplete. */\n    get maskComplete(): boolean;\n    /** Empty for a valid pattern. Invalid patterns leave the text editable without masking. */\n    get maskError(): string;\n    get placeholder(): string;\n    set placeholder(value: string);\n    get readOnly(): boolean;\n    set readOnly(value: boolean);\n    get inputType(): WebInputType;\n    set inputType(value: WebInputType);\n    /** Visible, accessible field label. An empty string hides it. */\n    get label(): string;\n    set label(value: string);\n    /** Icon shown inside the field. An empty string removes it. */\n    get icon(): WebEditIcon;\n    set icon(value: WebEditIcon);\n    /** Accessible name of the clickable icon; empty uses the icon and field names. */\n    get iconAccessibleLabel(): string;\n    set iconAccessibleLabel(value: string);\n    get enabled(): boolean;\n    set enabled(value: boolean);\n    get tabIndex(): number;\n    set tabIndex(value: number);\n    focus(options?: FocusOptions): void;\n    clear(): void;\n    set onChange(handler: WebComponentEventHandler<this> | null);\n    set onInput(handler: WebComponentEventHandler<this> | null);\n    /** Binds the icon action, enabling its native button and hover feedback. */\n    set onIconClick(handler: ((sender: this, event: MouseEvent) => void | Promise<void>) | null);\n    bindEvent(eventName: string, handler: WebComponentEventHandler<this> | null): () => void;\n    dispose(): void;\n}",
      "publicSource": "/** A text field with an optional, dynamically configurable character mask. */\nexport class WebEdit extends WebComponent<HTMLElement> {\n    constructor(element: HTMLElement);\n    get value(): string;\n    set value(value: string);\n    /** Accepted characters without mask literals. Assign this when input is known to be raw. */\n    get rawValue(): string;\n    set rawValue(value: string);\n    get maskEnabled(): boolean;\n    set maskEnabled(value: boolean);\n    /** 0 digit, a Unicode letter, * alphanumeric, # any character; escape literals with \\\\. */\n    get mask(): string;\n    set mask(value: string);\n    /** Custom tokens override built-ins. Each pattern matches one whole Unicode character. */\n    get maskTokens(): WebEditMaskTokens;\n    set maskTokens(value: WebEditMaskTokens);\n    get maskCase(): WebEditMaskCase;\n    set maskCase(value: WebEditMaskCase);\n    /** True when an active mask has all its required positions filled. Empty is incomplete. */\n    get maskComplete(): boolean;\n    /** Empty for a valid pattern. Invalid patterns leave the text editable without masking. */\n    get maskError(): string;\n    get placeholder(): string;\n    set placeholder(value: string);\n    get readOnly(): boolean;\n    set readOnly(value: boolean);\n    get inputType(): WebInputType;\n    set inputType(value: WebInputType);\n    /** Visible, accessible field label. An empty string hides it. */\n    get label(): string;\n    set label(value: string);\n    /** Icon shown inside the field. An empty string removes it. */\n    get icon(): WebEditIcon;\n    set icon(value: WebEditIcon);\n    /** Accessible name of the clickable icon; empty uses the icon and field names. */\n    get iconAccessibleLabel(): string;\n    set iconAccessibleLabel(value: string);\n    get enabled(): boolean;\n    set enabled(value: boolean);\n    get tabIndex(): number;\n    set tabIndex(value: number);\n    focus(options?: FocusOptions): void;\n    clear(): void;\n    set onChange(handler: WebComponentEventHandler<this> | null);\n    set onInput(handler: WebComponentEventHandler<this> | null);\n    /** Binds the icon action, enabling its native button and hover feedback. */\n    set onIconClick(handler: ((sender: this, event: MouseEvent) => void | Promise<void>) | null);\n    bindEvent(eventName: string, handler: WebComponentEventHandler<this> | null): () => void;\n    dispose(): void;\n}",
      "members": [
        {
          "name": "value",
          "kind": "get",
          "type": "string",
          "signature": "get value(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "rawValue",
          "kind": "get",
          "type": "string",
          "signature": "get rawValue(): string;",
          "parameters": [],
          "description": "Accepted characters without mask literals. Assign this when input is known to be raw.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "maskEnabled",
          "kind": "get",
          "type": "boolean",
          "signature": "get maskEnabled(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "mask",
          "kind": "get",
          "type": "string",
          "signature": "get mask(): string;",
          "parameters": [],
          "description": "0 digit, a Unicode letter, * alphanumeric, # any character; escape literals with \\\\.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "maskTokens",
          "kind": "get",
          "type": "WebEditMaskTokens",
          "signature": "get maskTokens(): WebEditMaskTokens;",
          "parameters": [],
          "description": "Custom tokens override built-ins. Each pattern matches one whole Unicode character.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "maskCase",
          "kind": "get",
          "type": "WebEditMaskCase",
          "signature": "get maskCase(): WebEditMaskCase;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "maskComplete",
          "kind": "get",
          "type": "boolean",
          "signature": "get maskComplete(): boolean;",
          "parameters": [],
          "description": "True when an active mask has all its required positions filled. Empty is incomplete.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "maskError",
          "kind": "get",
          "type": "string",
          "signature": "get maskError(): string;",
          "parameters": [],
          "description": "Empty for a valid pattern. Invalid patterns leave the text editable without masking.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "placeholder",
          "kind": "get",
          "type": "string",
          "signature": "get placeholder(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "readOnly",
          "kind": "get",
          "type": "boolean",
          "signature": "get readOnly(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "inputType",
          "kind": "get",
          "type": "WebInputType",
          "signature": "get inputType(): WebInputType;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "label",
          "kind": "get",
          "type": "string",
          "signature": "get label(): string;",
          "parameters": [],
          "description": "Visible, accessible field label. An empty string hides it.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "icon",
          "kind": "get",
          "type": "WebEditIcon",
          "signature": "get icon(): WebEditIcon;",
          "parameters": [],
          "description": "Icon shown inside the field. An empty string removes it.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "iconAccessibleLabel",
          "kind": "get",
          "type": "string",
          "signature": "get iconAccessibleLabel(): string;",
          "parameters": [],
          "description": "Accessible name of the clickable icon; empty uses the icon and field names.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "enabled",
          "kind": "get",
          "type": "boolean",
          "signature": "get enabled(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "tabIndex",
          "kind": "get",
          "type": "number",
          "signature": "get tabIndex(): number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "focus",
          "kind": "method",
          "type": "void",
          "signature": "focus(options?: FocusOptions): void;",
          "parameters": [
            {
              "name": "options",
              "type": "FocusOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "clear",
          "kind": "method",
          "type": "void",
          "signature": "clear(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onChange",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onChange(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onInput",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onInput(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onIconClick",
          "kind": "set",
          "type": "((sender: this, event: MouseEvent) => void | Promise<void>) | null",
          "signature": "set onIconClick(handler: ((sender: this, event: MouseEvent) => void | Promise<void>) | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "((sender: this, event: MouseEvent) => void | Promise<void>) | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "Binds the icon action, enabling its native button and hover feedback.",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "bindEvent",
          "kind": "method",
          "type": "() => void",
          "signature": "bindEvent(eventName: string, handler: WebComponentEventHandler<this> | null): () => void;",
          "parameters": [
            {
              "name": "eventName",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "configureWebEdit",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Project-model projection used by Designer, Preview and exported applications. */\nexport function configureWebEdit(component: WebEdit, props: Readonly<Record<string, unknown>>): void;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "THEME_MODES",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const THEME_MODES: readonly [\n    \"light\",\n    \"dark\",\n    \"system\"\n];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "ThemeMode",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type ThemeMode = (typeof THEME_MODES)[number];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "ResolvedThemeMode",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type ResolvedThemeMode = 'light' | 'dark';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "THEME_COLOR_NAMES",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const THEME_COLOR_NAMES: readonly [\n    \"background\",\n    \"background-end\",\n    \"surface\",\n    \"surface-end\",\n    \"surface-muted\",\n    \"input\",\n    \"input-end\",\n    \"control-thumb\",\n    \"text\",\n    \"text-muted\",\n    \"heading\",\n    \"border\",\n    \"border-accent\",\n    \"primary\",\n    \"primary-hover\",\n    \"primary-active\",\n    \"on-primary\",\n    \"accent\",\n    \"accent-hover\",\n    \"accent-active\",\n    \"on-accent\",\n    \"focus\",\n    \"disabled-surface\",\n    \"disabled-text\",\n    \"success\",\n    \"warning\",\n    \"danger\",\n    \"overlay\",\n    \"scrollbar-track\",\n    \"scrollbar-thumb\",\n    \"scrollbar-thumb-hover\",\n    \"scrollbar-thumb-active\",\n    \"media-background\",\n    \"media-background-end\",\n    \"on-media\"\n];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "ThemeColorName",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type ThemeColorName = (typeof THEME_COLOR_NAMES)[number];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "customThemeColorId",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Stable identities for user-defined colors managed in Themes. */\nexport function customThemeColorId(value: unknown): string | undefined;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "customThemeColorReference",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function customThemeColorReference(id: string): string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "themeColorId",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function themeColorId(value: unknown): ThemeColorName | undefined;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "themeColorReference",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function themeColorReference(name: ThemeColorName): string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "ThemeRuntimeConfiguration",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface ThemeRuntimeConfiguration {\n    readonly initialMode: ThemeMode;\n    readonly rememberChoice: boolean;\n    /** Unique per project, including when multiple applications share an origin. */\n    readonly storageKey: string;\n}",
      "members": [
        {
          "name": "initialMode",
          "kind": "property",
          "type": "ThemeMode",
          "signature": "readonly initialMode: ThemeMode;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "rememberChoice",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly rememberChoice: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "storageKey",
          "kind": "property",
          "type": "string",
          "signature": "readonly storageKey: string;",
          "parameters": [],
          "description": "Unique per project, including when multiple applications share an origin.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "ThemeChangeDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface ThemeChangeDetail {\n    readonly mode: ThemeMode;\n    readonly resolvedMode: ResolvedThemeMode;\n    readonly previousMode: ThemeMode;\n    readonly previousResolvedMode: ResolvedThemeMode;\n}",
      "members": [
        {
          "name": "mode",
          "kind": "property",
          "type": "ThemeMode",
          "signature": "readonly mode: ThemeMode;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "resolvedMode",
          "kind": "property",
          "type": "ResolvedThemeMode",
          "signature": "readonly resolvedMode: ResolvedThemeMode;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "previousMode",
          "kind": "property",
          "type": "ThemeMode",
          "signature": "readonly previousMode: ThemeMode;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "previousResolvedMode",
          "kind": "property",
          "type": "ResolvedThemeMode",
          "signature": "readonly previousResolvedMode: ResolvedThemeMode;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "ThemeChangeHandler",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type ThemeChangeHandler = (sender: WebTheme, event: CustomEvent<ThemeChangeDetail>) => void;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "initializeTheme",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Self-contained so this exact initializer can also run in the HTML head before CSS. */\nexport function initializeTheme(configuration: ThemeRuntimeConfiguration): void;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebTheme",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [],
      "source": "/** Browser-only application service. It owns no component instances or page state. */\nexport class WebTheme {\n    #private;\n    onChange: ThemeChangeHandler | null;\n    get mode(): ThemeMode;\n    set mode(value: ThemeMode);\n    get resolvedMode(): ResolvedThemeMode;\n    configure(configuration: ThemeRuntimeConfiguration): void;\n    toggle(): void;\n    subscribe(handler: ThemeChangeHandler): () => void;\n    /** Forget the remembered choice and return to the project's initial mode. */\n    reset(): void;\n    dispose(): void;\n}",
      "publicSource": "/** Browser-only application service. It owns no component instances or page state. */\nexport class WebTheme {\n    onChange: ThemeChangeHandler | null;\n    get mode(): ThemeMode;\n    set mode(value: ThemeMode);\n    get resolvedMode(): ResolvedThemeMode;\n    configure(configuration: ThemeRuntimeConfiguration): void;\n    toggle(): void;\n    subscribe(handler: ThemeChangeHandler): () => void;\n    /** Forget the remembered choice and return to the project's initial mode. */\n    reset(): void;\n    dispose(): void;\n}",
      "members": [
        {
          "name": "onChange",
          "kind": "property",
          "type": "ThemeChangeHandler | null",
          "signature": "onChange: ThemeChangeHandler | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "mode",
          "kind": "get",
          "type": "ThemeMode",
          "signature": "get mode(): ThemeMode;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "resolvedMode",
          "kind": "get",
          "type": "ResolvedThemeMode",
          "signature": "get resolvedMode(): ResolvedThemeMode;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "configure",
          "kind": "method",
          "type": "void",
          "signature": "configure(configuration: ThemeRuntimeConfiguration): void;",
          "parameters": [
            {
              "name": "configuration",
              "type": "ThemeRuntimeConfiguration",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "toggle",
          "kind": "method",
          "type": "void",
          "signature": "toggle(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "subscribe",
          "kind": "method",
          "type": "() => void",
          "signature": "subscribe(handler: ThemeChangeHandler): () => void;",
          "parameters": [
            {
              "name": "handler",
              "type": "ThemeChangeHandler",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "reset",
          "kind": "method",
          "type": "void",
          "signature": "reset(): void;",
          "parameters": [],
          "description": "Forget the remembered choice and return to the project's initial mode.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "Theme",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const Theme: WebTheme;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "themeBootstrapSource",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function themeBootstrapSource(configuration: ThemeRuntimeConfiguration): string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebMenuItem",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebMenuItem {\n    readonly id: string;\n    readonly label: string;\n    readonly kind?: 'item' | 'heading' | 'separator';\n    readonly icon?: LucideIconName | '';\n    readonly badge?: string;\n    readonly description?: string;\n    /** Stable project page ID, resolved by the application's router. */\n    readonly page?: string;\n    readonly href?: string;\n    readonly target?: '_self' | '_blank';\n    readonly visible?: boolean;\n    readonly disabled?: boolean;\n    readonly expanded?: boolean;\n    readonly children?: readonly WebMenuItem[];\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "readonly id: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "label",
          "kind": "property",
          "type": "string",
          "signature": "readonly label: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "kind",
          "kind": "property",
          "type": "'item' | 'heading' | 'separator'",
          "signature": "readonly kind?: 'item' | 'heading' | 'separator';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "icon",
          "kind": "property",
          "type": "LucideIconName | ''",
          "signature": "readonly icon?: LucideIconName | '';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "badge",
          "kind": "property",
          "type": "string",
          "signature": "readonly badge?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "description",
          "kind": "property",
          "type": "string",
          "signature": "readonly description?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "page",
          "kind": "property",
          "type": "string",
          "signature": "readonly page?: string;",
          "parameters": [],
          "description": "Stable project page ID, resolved by the application's router.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "href",
          "kind": "property",
          "type": "string",
          "signature": "readonly href?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "target",
          "kind": "property",
          "type": "'_self' | '_blank'",
          "signature": "readonly target?: '_self' | '_blank';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "visible",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly visible?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "disabled",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly disabled?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "expanded",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly expanded?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "children",
          "kind": "property",
          "type": "readonly WebMenuItem[]",
          "signature": "readonly children?: readonly WebMenuItem[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebMenuBrand",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebMenuBrand {\n    readonly visible: boolean;\n    readonly caption: string;\n    readonly subtitle: string;\n    readonly logo: string;\n    readonly logoSize: number;\n    readonly page: string;\n    readonly href: string;\n}",
      "members": [
        {
          "name": "visible",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly visible: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "caption",
          "kind": "property",
          "type": "string",
          "signature": "readonly caption: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "subtitle",
          "kind": "property",
          "type": "string",
          "signature": "readonly subtitle: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "logo",
          "kind": "property",
          "type": "string",
          "signature": "readonly logo: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "logoSize",
          "kind": "property",
          "type": "number",
          "signature": "readonly logoSize: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "page",
          "kind": "property",
          "type": "string",
          "signature": "readonly page: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "href",
          "kind": "property",
          "type": "string",
          "signature": "readonly href: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebMenuUser",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebMenuUser {\n    readonly visible: boolean;\n    /** Resolve the profile from the project's RestGO session; omitted means manual. */\n    readonly bindToCurrentUser?: boolean;\n    /** Open the built-in RestGO account editor from the user settings icon. */\n    readonly settings?: boolean;\n    /** Language of the built-in account editor; omitted means English. */\n    readonly settingsLanguage?: 'en' | 'pt-BR';\n    /** Public page that handles the email-confirmation token; blank uses RestGO defaults. */\n    readonly emailConfirmationUrl?: string;\n    /** Public page that handles the password-reset token; blank uses RestGO defaults. */\n    readonly passwordResetUrl?: string;\n    readonly name: string;\n    readonly description: string;\n    readonly avatar: string;\n    readonly status: 'none' | 'online' | 'away' | 'busy';\n}",
      "members": [
        {
          "name": "visible",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly visible: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "bindToCurrentUser",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly bindToCurrentUser?: boolean;",
          "parameters": [],
          "description": "Resolve the profile from the project's RestGO session; omitted means manual.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "settings",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly settings?: boolean;",
          "parameters": [],
          "description": "Open the built-in RestGO account editor from the user settings icon.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "settingsLanguage",
          "kind": "property",
          "type": "'en' | 'pt-BR'",
          "signature": "readonly settingsLanguage?: 'en' | 'pt-BR';",
          "parameters": [],
          "description": "Language of the built-in account editor; omitted means English.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "emailConfirmationUrl",
          "kind": "property",
          "type": "string",
          "signature": "readonly emailConfirmationUrl?: string;",
          "parameters": [],
          "description": "Public page that handles the email-confirmation token; blank uses RestGO defaults.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "passwordResetUrl",
          "kind": "property",
          "type": "string",
          "signature": "readonly passwordResetUrl?: string;",
          "parameters": [],
          "description": "Public page that handles the password-reset token; blank uses RestGO defaults.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "description",
          "kind": "property",
          "type": "string",
          "signature": "readonly description: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "avatar",
          "kind": "property",
          "type": "string",
          "signature": "readonly avatar: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "status",
          "kind": "property",
          "type": "'none' | 'online' | 'away' | 'busy'",
          "signature": "readonly status: 'none' | 'online' | 'away' | 'busy';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebMenuAppearance",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebMenuAppearance {\n    readonly background: string;\n    readonly foreground: string;\n    readonly muted: string;\n    readonly border: string;\n    readonly hoverBackground: string;\n    readonly activeBackground: string;\n    readonly activeForeground: string;\n    readonly accent: string;\n    readonly badgeBackground: string;\n    readonly badgeForeground: string;\n    readonly itemHeight: number;\n    readonly itemRadius: number;\n    readonly itemGap: number;\n    readonly iconSize: number;\n    readonly fontSize: number;\n    readonly padding: number;\n    readonly indent: number;\n    readonly collapsedWidth: number;\n}",
      "members": [
        {
          "name": "background",
          "kind": "property",
          "type": "string",
          "signature": "readonly background: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "foreground",
          "kind": "property",
          "type": "string",
          "signature": "readonly foreground: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "muted",
          "kind": "property",
          "type": "string",
          "signature": "readonly muted: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "border",
          "kind": "property",
          "type": "string",
          "signature": "readonly border: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "hoverBackground",
          "kind": "property",
          "type": "string",
          "signature": "readonly hoverBackground: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "activeBackground",
          "kind": "property",
          "type": "string",
          "signature": "readonly activeBackground: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "activeForeground",
          "kind": "property",
          "type": "string",
          "signature": "readonly activeForeground: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "accent",
          "kind": "property",
          "type": "string",
          "signature": "readonly accent: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "badgeBackground",
          "kind": "property",
          "type": "string",
          "signature": "readonly badgeBackground: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "badgeForeground",
          "kind": "property",
          "type": "string",
          "signature": "readonly badgeForeground: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "itemHeight",
          "kind": "property",
          "type": "number",
          "signature": "readonly itemHeight: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "itemRadius",
          "kind": "property",
          "type": "number",
          "signature": "readonly itemRadius: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "itemGap",
          "kind": "property",
          "type": "number",
          "signature": "readonly itemGap: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "iconSize",
          "kind": "property",
          "type": "number",
          "signature": "readonly iconSize: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fontSize",
          "kind": "property",
          "type": "number",
          "signature": "readonly fontSize: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "padding",
          "kind": "property",
          "type": "number",
          "signature": "readonly padding: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "indent",
          "kind": "property",
          "type": "number",
          "signature": "readonly indent: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "collapsedWidth",
          "kind": "property",
          "type": "number",
          "signature": "readonly collapsedWidth: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebMenuConfiguration",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebMenuConfiguration {\n    readonly schemaVersion: 1;\n    readonly orientation: 'vertical' | 'horizontal';\n    readonly accessibleLabel: string;\n    readonly collapsible: boolean;\n    readonly collapsed: boolean;\n    readonly accordion: boolean;\n    readonly searchable: boolean;\n    readonly themeToggle: boolean;\n    /** Filter while typing, or emit OnSearch when the user presses Enter. */\n    readonly searchMode: 'filter' | 'event';\n    readonly searchPlaceholder: string;\n    readonly emptyText: string;\n    readonly footerText: string;\n    readonly selectedItemId: string;\n    /** Browser viewport width in CSS pixels, independent of the sidebar width. */\n    readonly mobileBreakpoint: number;\n    /** Side of the hamburger icon in the mobile navigation bar. */\n    readonly mobileIconPosition: 'left' | 'right';\n    readonly drawerWidth: number;\n    readonly drawerSide: 'left' | 'right';\n    readonly closeOnSelect: boolean;\n    readonly brand: WebMenuBrand;\n    readonly user: WebMenuUser;\n    readonly appearance: WebMenuAppearance;\n    readonly items: readonly WebMenuItem[];\n}",
      "members": [
        {
          "name": "schemaVersion",
          "kind": "property",
          "type": "1",
          "signature": "readonly schemaVersion: 1;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "orientation",
          "kind": "property",
          "type": "'vertical' | 'horizontal'",
          "signature": "readonly orientation: 'vertical' | 'horizontal';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "accessibleLabel",
          "kind": "property",
          "type": "string",
          "signature": "readonly accessibleLabel: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "collapsible",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly collapsible: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "collapsed",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly collapsed: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "accordion",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly accordion: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "searchable",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly searchable: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "themeToggle",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly themeToggle: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "searchMode",
          "kind": "property",
          "type": "'filter' | 'event'",
          "signature": "readonly searchMode: 'filter' | 'event';",
          "parameters": [],
          "description": "Filter while typing, or emit OnSearch when the user presses Enter.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "searchPlaceholder",
          "kind": "property",
          "type": "string",
          "signature": "readonly searchPlaceholder: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "emptyText",
          "kind": "property",
          "type": "string",
          "signature": "readonly emptyText: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "footerText",
          "kind": "property",
          "type": "string",
          "signature": "readonly footerText: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "selectedItemId",
          "kind": "property",
          "type": "string",
          "signature": "readonly selectedItemId: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "mobileBreakpoint",
          "kind": "property",
          "type": "number",
          "signature": "readonly mobileBreakpoint: number;",
          "parameters": [],
          "description": "Browser viewport width in CSS pixels, independent of the sidebar width.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "mobileIconPosition",
          "kind": "property",
          "type": "'left' | 'right'",
          "signature": "readonly mobileIconPosition: 'left' | 'right';",
          "parameters": [],
          "description": "Side of the hamburger icon in the mobile navigation bar.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "drawerWidth",
          "kind": "property",
          "type": "number",
          "signature": "readonly drawerWidth: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "drawerSide",
          "kind": "property",
          "type": "'left' | 'right'",
          "signature": "readonly drawerSide: 'left' | 'right';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "closeOnSelect",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly closeOnSelect: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "brand",
          "kind": "property",
          "type": "WebMenuBrand",
          "signature": "readonly brand: WebMenuBrand;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "user",
          "kind": "property",
          "type": "WebMenuUser",
          "signature": "readonly user: WebMenuUser;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "appearance",
          "kind": "property",
          "type": "WebMenuAppearance",
          "signature": "readonly appearance: WebMenuAppearance;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "items",
          "kind": "property",
          "type": "readonly WebMenuItem[]",
          "signature": "readonly items: readonly WebMenuItem[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebMenuSearchEvent",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebMenuSearchEvent {\n    readonly text: string;\n}",
      "members": [
        {
          "name": "text",
          "kind": "property",
          "type": "string",
          "signature": "readonly text: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebMenuItemEvent",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebMenuItemEvent {\n    readonly item: WebMenuItem;\n    readonly itemId: string;\n    readonly path: readonly string[];\n}",
      "members": [
        {
          "name": "item",
          "kind": "property",
          "type": "WebMenuItem",
          "signature": "readonly item: WebMenuItem;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "itemId",
          "kind": "property",
          "type": "string",
          "signature": "readonly itemId: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "path",
          "kind": "property",
          "type": "readonly string[]",
          "signature": "readonly path: readonly string[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebMenuStateEvent",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebMenuStateEvent {\n    readonly collapsed: boolean;\n    readonly open: boolean;\n}",
      "members": [
        {
          "name": "collapsed",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly collapsed: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "open",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly open: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebMenuItemToggleEvent",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebMenuItemEvent"
      ],
      "source": "export interface WebMenuItemToggleEvent extends WebMenuItemEvent {\n    readonly expanded: boolean;\n}",
      "members": [
        {
          "name": "expanded",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly expanded: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WEB_MENU_THEMES",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const WEB_MENU_THEMES: Readonly<Record<'light' | 'dark', WebMenuAppearance>>;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "createDefaultWebMenuConfiguration",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function createDefaultWebMenuConfiguration(): WebMenuConfiguration;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "createProjectWebMenuAppearance",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** A saved appearance can follow project themes while fixed presets stay available. */\nexport function createProjectWebMenuAppearance(appearance?: WebMenuAppearance): WebMenuAppearance;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "isWebMenuLink",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Accepts relative, HTTP(S), mail and telephone links; rejects executable schemes. */\nexport function isWebMenuLink(value: string, image?: boolean): boolean;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "parseWebMenuConfiguration",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Strict browser-safe parser used by serialization, the Inspector and runtime. */\nexport function parseWebMenuConfiguration(value: unknown): WebMenuConfiguration;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "webMenuItemPath",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function webMenuItemPath(items: readonly WebMenuItem[], id: string, path?: readonly string[]): readonly WebMenuItem[];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebMenuOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebMenuOptions {\n    /** Static projections still use the identical DOM and appearance. */\n    readonly interactive?: boolean;\n    readonly viewportWidth?: number;\n    /** Allows embedded previews to change their local theme without changing the application. */\n    readonly onThemeToggle?: () => void;\n}",
      "members": [
        {
          "name": "interactive",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly interactive?: boolean;",
          "parameters": [],
          "description": "Static projections still use the identical DOM and appearance.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "viewportWidth",
          "kind": "property",
          "type": "number",
          "signature": "readonly viewportWidth?: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "onThemeToggle",
          "kind": "property",
          "type": "() => void",
          "signature": "readonly onThemeToggle?: () => void;",
          "parameters": [],
          "description": "Allows embedded previews to change their local theme without changing the application.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebMenu",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent<HTMLElement>"
      ],
      "source": "/** Responsive navigation with per-instance state, disclosure submenus and a modal mobile drawer. */\nexport class WebMenu extends WebComponent<HTMLElement> {\n    #private;\n    /** Apply the saved placement before the authored subclass constructor runs. */\n    static createDefinition(element: HTMLElement, factory: (element: HTMLElement) => WebMenu, initialize: (menu: WebMenu) => void): WebMenu;\n    /** Resolve the concrete authored Menu already mounted for this element. */\n    static fromElement<T extends WebMenu>(element: HTMLElement, menuClass: new (element: HTMLElement) => T): T;\n    /** Shared handlers precede the containing page's ordinary event bindings. */\n    protected bindDefinitionEvent(eventName: string, handlerName: string): void;\n    emit(eventName: string, detail?: unknown): boolean;\n    get floatingZIndex(): number;\n    get margin(): number;\n    get marginTop(): number;\n    set marginTop(value: number);\n    get marginRight(): number;\n    set marginRight(value: number);\n    get marginBottom(): number;\n    set marginBottom(value: number);\n    get marginLeft(): number;\n    set marginLeft(value: number);\n    set margin(value: number);\n    get placement(): 'floating';\n    get floatingHorizontalAnchor(): 'left' | 'center' | 'right';\n    set floatingHorizontalAnchor(value: 'left' | 'center' | 'right');\n    get floatingVerticalAnchor(): 'top' | 'center' | 'bottom';\n    set floatingVerticalAnchor(value: 'top' | 'center' | 'bottom');\n    constructor(element: HTMLElement, options?: WebMenuOptions);\n    get configuration(): WebMenuConfiguration;\n    get enabled(): boolean;\n    set enabled(value: boolean);\n    set configuration(value: WebMenuConfiguration);\n    get items(): readonly WebMenuItem[];\n    set items(value: readonly WebMenuItem[]);\n    get orientation(): WebMenuConfiguration['orientation'];\n    set orientation(value: WebMenuConfiguration['orientation']);\n    get brand(): WebMenuConfiguration['brand'];\n    set brand(value: WebMenuConfiguration['brand']);\n    get user(): WebMenuConfiguration['user'];\n    set user(value: WebMenuConfiguration['user']);\n    get appearance(): WebMenuConfiguration['appearance'];\n    set appearance(value: WebMenuConfiguration['appearance']);\n    get selectedItemId(): string;\n    set selectedItemId(value: string);\n    get collapsed(): boolean;\n    set collapsed(value: boolean);\n    get isOpen(): boolean;\n    get isMobile(): boolean;\n    get searchMode(): WebMenuConfiguration['searchMode'];\n    get themeToggle(): boolean;\n    set themeToggle(value: boolean);\n    set searchMode(value: WebMenuConfiguration['searchMode']);\n    get searchText(): string;\n    set searchText(value: string);\n    findItem(id: string): WebMenuItem | undefined;\n    updateItem(id: string, changes: Partial<Omit<WebMenuItem, 'id'>>): void;\n    expandItem(id: string): void;\n    collapseItem(id: string): void;\n    toggleItem(id: string): void;\n    focusItem(id: string): void;\n    activateItem(id: string): void;\n    open(): void;\n    close(): void;\n    toggle(): void;\n    /** Open the account editor when the saved Menu user settings option is enabled. */\n    openUserSettings(): void;\n    closeUserSettings(): void;\n    dispose(): void;\n}",
      "publicSource": "/** Responsive navigation with per-instance state, disclosure submenus and a modal mobile drawer. */\nexport class WebMenu extends WebComponent<HTMLElement> {\n    /** Apply the saved placement before the authored subclass constructor runs. */\n    static createDefinition(element: HTMLElement, factory: (element: HTMLElement) => WebMenu, initialize: (menu: WebMenu) => void): WebMenu;\n    /** Resolve the concrete authored Menu already mounted for this element. */\n    static fromElement<T extends WebMenu>(element: HTMLElement, menuClass: new (element: HTMLElement) => T): T;\n    emit(eventName: string, detail?: unknown): boolean;\n    get floatingZIndex(): number;\n    get margin(): number;\n    get marginTop(): number;\n    set marginTop(value: number);\n    get marginRight(): number;\n    set marginRight(value: number);\n    get marginBottom(): number;\n    set marginBottom(value: number);\n    get marginLeft(): number;\n    set marginLeft(value: number);\n    set margin(value: number);\n    get placement(): 'floating';\n    get floatingHorizontalAnchor(): 'left' | 'center' | 'right';\n    set floatingHorizontalAnchor(value: 'left' | 'center' | 'right');\n    get floatingVerticalAnchor(): 'top' | 'center' | 'bottom';\n    set floatingVerticalAnchor(value: 'top' | 'center' | 'bottom');\n    constructor(element: HTMLElement, options?: WebMenuOptions);\n    get configuration(): WebMenuConfiguration;\n    get enabled(): boolean;\n    set enabled(value: boolean);\n    set configuration(value: WebMenuConfiguration);\n    get items(): readonly WebMenuItem[];\n    set items(value: readonly WebMenuItem[]);\n    get orientation(): WebMenuConfiguration['orientation'];\n    set orientation(value: WebMenuConfiguration['orientation']);\n    get brand(): WebMenuConfiguration['brand'];\n    set brand(value: WebMenuConfiguration['brand']);\n    get user(): WebMenuConfiguration['user'];\n    set user(value: WebMenuConfiguration['user']);\n    get appearance(): WebMenuConfiguration['appearance'];\n    set appearance(value: WebMenuConfiguration['appearance']);\n    get selectedItemId(): string;\n    set selectedItemId(value: string);\n    get collapsed(): boolean;\n    set collapsed(value: boolean);\n    get isOpen(): boolean;\n    get isMobile(): boolean;\n    get searchMode(): WebMenuConfiguration['searchMode'];\n    get themeToggle(): boolean;\n    set themeToggle(value: boolean);\n    set searchMode(value: WebMenuConfiguration['searchMode']);\n    get searchText(): string;\n    set searchText(value: string);\n    findItem(id: string): WebMenuItem | undefined;\n    updateItem(id: string, changes: Partial<Omit<WebMenuItem, 'id'>>): void;\n    expandItem(id: string): void;\n    collapseItem(id: string): void;\n    toggleItem(id: string): void;\n    focusItem(id: string): void;\n    activateItem(id: string): void;\n    open(): void;\n    close(): void;\n    toggle(): void;\n    /** Open the account editor when the saved Menu user settings option is enabled. */\n    openUserSettings(): void;\n    closeUserSettings(): void;\n    dispose(): void;\n}",
      "members": [
        {
          "name": "createDefinition",
          "kind": "method",
          "type": "WebMenu",
          "signature": "static createDefinition(element: HTMLElement, factory: (element: HTMLElement) => WebMenu, initialize: (menu: WebMenu) => void): WebMenu;",
          "parameters": [
            {
              "name": "element",
              "type": "HTMLElement",
              "optional": false,
              "rest": false
            },
            {
              "name": "factory",
              "type": "(element: HTMLElement) => WebMenu",
              "optional": false,
              "rest": false
            },
            {
              "name": "initialize",
              "type": "(menu: WebMenu) => void",
              "optional": false,
              "rest": false
            }
          ],
          "description": "Apply the saved placement before the authored subclass constructor runs.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": true
        },
        {
          "name": "fromElement",
          "kind": "method",
          "type": "T",
          "signature": "static fromElement<T extends WebMenu>(element: HTMLElement, menuClass: new (element: HTMLElement) => T): T;",
          "parameters": [
            {
              "name": "element",
              "type": "HTMLElement",
              "optional": false,
              "rest": false
            },
            {
              "name": "menuClass",
              "type": "new (element: HTMLElement) => T",
              "optional": false,
              "rest": false
            }
          ],
          "description": "Resolve the concrete authored Menu already mounted for this element.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": true
        },
        {
          "name": "emit",
          "kind": "method",
          "type": "boolean",
          "signature": "emit(eventName: string, detail?: unknown): boolean;",
          "parameters": [
            {
              "name": "eventName",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "detail",
              "type": "unknown",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "floatingZIndex",
          "kind": "get",
          "type": "number",
          "signature": "get floatingZIndex(): number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "margin",
          "kind": "get",
          "type": "number",
          "signature": "get margin(): number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "marginTop",
          "kind": "get",
          "type": "number",
          "signature": "get marginTop(): number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "marginRight",
          "kind": "get",
          "type": "number",
          "signature": "get marginRight(): number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "marginBottom",
          "kind": "get",
          "type": "number",
          "signature": "get marginBottom(): number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "marginLeft",
          "kind": "get",
          "type": "number",
          "signature": "get marginLeft(): number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "placement",
          "kind": "get",
          "type": "'floating'",
          "signature": "get placement(): 'floating';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "floatingHorizontalAnchor",
          "kind": "get",
          "type": "'left' | 'center' | 'right'",
          "signature": "get floatingHorizontalAnchor(): 'left' | 'center' | 'right';",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "floatingVerticalAnchor",
          "kind": "get",
          "type": "'top' | 'center' | 'bottom'",
          "signature": "get floatingVerticalAnchor(): 'top' | 'center' | 'bottom';",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "configuration",
          "kind": "get",
          "type": "WebMenuConfiguration",
          "signature": "get configuration(): WebMenuConfiguration;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "enabled",
          "kind": "get",
          "type": "boolean",
          "signature": "get enabled(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "items",
          "kind": "get",
          "type": "readonly WebMenuItem[]",
          "signature": "get items(): readonly WebMenuItem[];",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "orientation",
          "kind": "get",
          "type": "WebMenuConfiguration['orientation']",
          "signature": "get orientation(): WebMenuConfiguration['orientation'];",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "brand",
          "kind": "get",
          "type": "WebMenuConfiguration['brand']",
          "signature": "get brand(): WebMenuConfiguration['brand'];",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "user",
          "kind": "get",
          "type": "WebMenuConfiguration['user']",
          "signature": "get user(): WebMenuConfiguration['user'];",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "appearance",
          "kind": "get",
          "type": "WebMenuConfiguration['appearance']",
          "signature": "get appearance(): WebMenuConfiguration['appearance'];",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "selectedItemId",
          "kind": "get",
          "type": "string",
          "signature": "get selectedItemId(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "collapsed",
          "kind": "get",
          "type": "boolean",
          "signature": "get collapsed(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "isOpen",
          "kind": "get",
          "type": "boolean",
          "signature": "get isOpen(): boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "isMobile",
          "kind": "get",
          "type": "boolean",
          "signature": "get isMobile(): boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "searchMode",
          "kind": "get",
          "type": "WebMenuConfiguration['searchMode']",
          "signature": "get searchMode(): WebMenuConfiguration['searchMode'];",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "themeToggle",
          "kind": "get",
          "type": "boolean",
          "signature": "get themeToggle(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "searchText",
          "kind": "get",
          "type": "string",
          "signature": "get searchText(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "findItem",
          "kind": "method",
          "type": "WebMenuItem | undefined",
          "signature": "findItem(id: string): WebMenuItem | undefined;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "updateItem",
          "kind": "method",
          "type": "void",
          "signature": "updateItem(id: string, changes: Partial<Omit<WebMenuItem, 'id'>>): void;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "changes",
              "type": "Partial<Omit<WebMenuItem, 'id'>>",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "expandItem",
          "kind": "method",
          "type": "void",
          "signature": "expandItem(id: string): void;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "collapseItem",
          "kind": "method",
          "type": "void",
          "signature": "collapseItem(id: string): void;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "toggleItem",
          "kind": "method",
          "type": "void",
          "signature": "toggleItem(id: string): void;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "focusItem",
          "kind": "method",
          "type": "void",
          "signature": "focusItem(id: string): void;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "activateItem",
          "kind": "method",
          "type": "void",
          "signature": "activateItem(id: string): void;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "open",
          "kind": "method",
          "type": "void",
          "signature": "open(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "close",
          "kind": "method",
          "type": "void",
          "signature": "close(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "toggle",
          "kind": "method",
          "type": "void",
          "signature": "toggle(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "openUserSettings",
          "kind": "method",
          "type": "void",
          "signature": "openUserSettings(): void;",
          "parameters": [],
          "description": "Open the account editor when the saved Menu user settings option is enabled.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "closeUserSettings",
          "kind": "method",
          "type": "void",
          "signature": "closeUserSettings(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WEB_LOGIN_STYLE_SLOTS",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const WEB_LOGIN_STYLE_SLOTS: readonly [\n    {\n        readonly name: \"panel\";\n        readonly label: \"Panel\";\n        readonly componentType: \"WebPanel\";\n    },\n    {\n        readonly name: \"popup\";\n        readonly label: \"Popup\";\n        readonly componentType: \"WebPopup\";\n    },\n    {\n        readonly name: \"title\";\n        readonly label: \"Title\";\n        readonly componentType: \"WebLabel\";\n    },\n    {\n        readonly name: \"subtitle\";\n        readonly label: \"Subtitle\";\n        readonly componentType: \"WebLabel\";\n    },\n    {\n        readonly name: \"fullNameLabel\";\n        readonly label: \"Full name label\";\n        readonly componentType: \"WebLabel\";\n    },\n    {\n        readonly name: \"fullName\";\n        readonly label: \"Full name input\";\n        readonly componentType: \"WebEdit\";\n    },\n    {\n        readonly name: \"emailLabel\";\n        readonly label: \"Email label\";\n        readonly componentType: \"WebLabel\";\n    },\n    {\n        readonly name: \"email\";\n        readonly label: \"Email input\";\n        readonly componentType: \"WebEdit\";\n    },\n    {\n        readonly name: \"passwordLabel\";\n        readonly label: \"Password label\";\n        readonly componentType: \"WebLabel\";\n    },\n    {\n        readonly name: \"password\";\n        readonly label: \"Password input\";\n        readonly componentType: \"WebEdit\";\n    },\n    {\n        readonly name: \"passwordConfirmationLabel\";\n        readonly label: \"Password confirmation label\";\n        readonly componentType: \"WebLabel\";\n    },\n    {\n        readonly name: \"passwordConfirmation\";\n        readonly label: \"Password confirmation input\";\n        readonly componentType: \"WebEdit\";\n    },\n    {\n        readonly name: \"remember\";\n        readonly label: \"Remember me\";\n        readonly componentType: \"WebCheckBox\";\n    },\n    {\n        readonly name: \"submit\";\n        readonly label: \"Submit button\";\n        readonly componentType: \"WebButton\";\n    },\n    {\n        readonly name: \"passwordToggle\";\n        readonly label: \"Show password button\";\n        readonly componentType: \"WebButton\";\n        readonly defaultStyle: \"none\";\n    },\n    {\n        readonly name: \"registerLink\";\n        readonly label: \"Registration link\";\n        readonly componentType: \"WebButton\";\n        readonly defaultStyle: \"none\";\n    },\n    {\n        readonly name: \"loginLink\";\n        readonly label: \"Return to login link\";\n        readonly componentType: \"WebButton\";\n        readonly defaultStyle: \"none\";\n    },\n    {\n        readonly name: \"recoveryLink\";\n        readonly label: \"Recovery link\";\n        readonly componentType: \"WebButton\";\n        readonly defaultStyle: \"none\";\n    },\n    {\n        readonly name: \"close\";\n        readonly label: \"Close button\";\n        readonly componentType: \"WebButton\";\n        readonly defaultStyle: \"none\";\n    },\n    {\n        readonly name: \"feedback\";\n        readonly label: \"Success / status message\";\n        readonly componentType: \"WebLabel\";\n    },\n    {\n        readonly name: \"errorFeedback\";\n        readonly label: \"Error message\";\n        readonly componentType: \"WebLabel\";\n        readonly defaultStyle: \"none\";\n    }\n];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebLoginStyleSlot",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebLoginStyleSlot = (typeof WEB_LOGIN_STYLE_SLOTS)[number]['name'];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebLoginStyleBindings",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "/** Omitted entries follow the compatible default style; null explicitly selects None. */\nexport type WebLoginStyleBindings = Readonly<Partial<Record<WebLoginStyleSlot, string | null>>>;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebLoginView",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebLoginView = 'login' | 'register' | 'recovery' | 'reset';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebLoginPresentation",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebLoginPresentation = 'panel' | 'popup';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebLoginField",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebLoginField {\n    readonly label: string;\n    readonly placeholder: string;\n}",
      "members": [
        {
          "name": "label",
          "kind": "property",
          "type": "string",
          "signature": "readonly label: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "placeholder",
          "kind": "property",
          "type": "string",
          "signature": "readonly placeholder: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebLoginAppearance",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebLoginAppearance {\n    readonly fontFamily: string;\n    readonly fontSize: number;\n    readonly background: string;\n    readonly backgroundEnd?: string;\n    readonly foreground: string;\n    readonly heading?: string;\n    readonly muted: string;\n    readonly border: string;\n    readonly borderEnd?: string;\n    readonly inputBackground: string;\n    readonly inputBackgroundEnd?: string;\n    readonly primary: string;\n    readonly primaryEnd?: string;\n    readonly focus?: string;\n    readonly onPrimary: string;\n    readonly error: string;\n    readonly borderRadius: number;\n    readonly padding: number;\n    readonly gap: number;\n    readonly maxWidth: number;\n    readonly fieldHeight: number;\n}",
      "members": [
        {
          "name": "fontFamily",
          "kind": "property",
          "type": "string",
          "signature": "readonly fontFamily: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fontSize",
          "kind": "property",
          "type": "number",
          "signature": "readonly fontSize: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "background",
          "kind": "property",
          "type": "string",
          "signature": "readonly background: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "backgroundEnd",
          "kind": "property",
          "type": "string",
          "signature": "readonly backgroundEnd?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "foreground",
          "kind": "property",
          "type": "string",
          "signature": "readonly foreground: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "heading",
          "kind": "property",
          "type": "string",
          "signature": "readonly heading?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "muted",
          "kind": "property",
          "type": "string",
          "signature": "readonly muted: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "border",
          "kind": "property",
          "type": "string",
          "signature": "readonly border: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "borderEnd",
          "kind": "property",
          "type": "string",
          "signature": "readonly borderEnd?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "inputBackground",
          "kind": "property",
          "type": "string",
          "signature": "readonly inputBackground: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "inputBackgroundEnd",
          "kind": "property",
          "type": "string",
          "signature": "readonly inputBackgroundEnd?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "primary",
          "kind": "property",
          "type": "string",
          "signature": "readonly primary: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "primaryEnd",
          "kind": "property",
          "type": "string",
          "signature": "readonly primaryEnd?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "focus",
          "kind": "property",
          "type": "string",
          "signature": "readonly focus?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "onPrimary",
          "kind": "property",
          "type": "string",
          "signature": "readonly onPrimary: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "error",
          "kind": "property",
          "type": "string",
          "signature": "readonly error: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "borderRadius",
          "kind": "property",
          "type": "number",
          "signature": "readonly borderRadius: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "padding",
          "kind": "property",
          "type": "number",
          "signature": "readonly padding: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "gap",
          "kind": "property",
          "type": "number",
          "signature": "readonly gap: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "maxWidth",
          "kind": "property",
          "type": "number",
          "signature": "readonly maxWidth: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fieldHeight",
          "kind": "property",
          "type": "number",
          "signature": "readonly fieldHeight: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebLoginTexts",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebLoginTexts {\n    readonly loginTitle: string;\n    readonly loginSubtitle: string;\n    readonly registerTitle: string;\n    readonly registerSubtitle: string;\n    readonly loginButton: string;\n    readonly registerButton: string;\n    readonly switchToRegister: string;\n    readonly switchToLogin: string;\n    readonly remember: string;\n    readonly showPassword: string;\n    readonly hidePassword: string;\n    readonly close: string;\n    readonly busy: string;\n    readonly registered: string;\n    readonly authenticated: string;\n    readonly passwordMismatch: string;\n    readonly unavailable: string;\n    readonly requestFailed: string;\n}",
      "members": [
        {
          "name": "loginTitle",
          "kind": "property",
          "type": "string",
          "signature": "readonly loginTitle: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "loginSubtitle",
          "kind": "property",
          "type": "string",
          "signature": "readonly loginSubtitle: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "registerTitle",
          "kind": "property",
          "type": "string",
          "signature": "readonly registerTitle: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "registerSubtitle",
          "kind": "property",
          "type": "string",
          "signature": "readonly registerSubtitle: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "loginButton",
          "kind": "property",
          "type": "string",
          "signature": "readonly loginButton: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "registerButton",
          "kind": "property",
          "type": "string",
          "signature": "readonly registerButton: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "switchToRegister",
          "kind": "property",
          "type": "string",
          "signature": "readonly switchToRegister: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "switchToLogin",
          "kind": "property",
          "type": "string",
          "signature": "readonly switchToLogin: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "remember",
          "kind": "property",
          "type": "string",
          "signature": "readonly remember: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "showPassword",
          "kind": "property",
          "type": "string",
          "signature": "readonly showPassword: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "hidePassword",
          "kind": "property",
          "type": "string",
          "signature": "readonly hidePassword: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "close",
          "kind": "property",
          "type": "string",
          "signature": "readonly close: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "busy",
          "kind": "property",
          "type": "string",
          "signature": "readonly busy: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "registered",
          "kind": "property",
          "type": "string",
          "signature": "readonly registered: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "authenticated",
          "kind": "property",
          "type": "string",
          "signature": "readonly authenticated: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "passwordMismatch",
          "kind": "property",
          "type": "string",
          "signature": "readonly passwordMismatch: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "unavailable",
          "kind": "property",
          "type": "string",
          "signature": "readonly unavailable: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "requestFailed",
          "kind": "property",
          "type": "string",
          "signature": "readonly requestFailed: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebLoginRecoveryConfiguration",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebLoginRecoveryConfiguration {\n    readonly enabled: boolean;\n    readonly automaticLinks: boolean;\n    /** Blank returns to the current application route. Otherwise use an absolute HTTP(S) URL. */\n    readonly returnUrl: string;\n    readonly texts: {\n        readonly forgotPassword: string;\n        readonly requestTitle: string;\n        readonly requestSubtitle: string;\n        readonly requestButton: string;\n        readonly requestSent: string;\n        readonly resetTitle: string;\n        readonly resetSubtitle: string;\n        readonly resetButton: string;\n        readonly passwordChanged: string;\n        readonly invalidLink: string;\n        readonly backToLogin: string;\n    };\n}",
      "members": [
        {
          "name": "enabled",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly enabled: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "automaticLinks",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly automaticLinks: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "returnUrl",
          "kind": "property",
          "type": "string",
          "signature": "readonly returnUrl: string;",
          "parameters": [],
          "description": "Blank returns to the current application route. Otherwise use an absolute HTTP(S) URL.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "texts",
          "kind": "property",
          "type": "{\n        readonly forgotPassword: string;\n        readonly requestTitle: string;\n        readonly requestSubtitle: string;\n        readonly requestButton: string;\n        readonly requestSent: string;\n        readonly resetTitle: string;\n        readonly resetSubtitle: string;\n        readonly resetButton: string;\n        readonly passwordChanged: string;\n        readonly invalidLink: string;\n        readonly backToLogin: string;\n    }",
          "signature": "readonly texts: {\n    readonly forgotPassword: string;\n    readonly requestTitle: string;\n    readonly requestSubtitle: string;\n    readonly requestButton: string;\n    readonly requestSent: string;\n    readonly resetTitle: string;\n    readonly resetSubtitle: string;\n    readonly resetButton: string;\n    readonly passwordChanged: string;\n    readonly invalidLink: string;\n    readonly backToLogin: string;\n};",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "createDefaultWebLoginRecoveryConfiguration",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function createDefaultWebLoginRecoveryConfiguration(language?: 'en' | 'pt-BR'): WebLoginRecoveryConfiguration;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebLoginConfiguration",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "/** Credentials and transient runtime state are never part of this saved configuration. */\nexport interface WebLoginConfiguration {\n    readonly version: 1;\n    readonly presentation: WebLoginPresentation;\n    readonly initialView: Exclude<WebLoginView, 'reset'>;\n    readonly allowRegistration: boolean;\n    readonly showFullName: boolean;\n    readonly requireFullName: boolean;\n    readonly confirmPassword: boolean;\n    readonly showRemember: boolean;\n    readonly rememberDefault: boolean;\n    readonly showPasswordToggle: boolean;\n    readonly autoLoginAfterRegistration: boolean;\n    readonly closeOnLogin: boolean;\n    readonly openOnShow: boolean;\n    readonly dismissible: boolean;\n    readonly language: 'en' | 'pt-BR';\n    readonly email: WebLoginField;\n    readonly password: WebLoginField;\n    readonly fullName: WebLoginField;\n    readonly passwordConfirmation: WebLoginField;\n    readonly texts: WebLoginTexts;\n    /** Layout defaults and compatibility for earlier saved paint values. New paint comes from styles. */\n    readonly appearance: WebLoginAppearance;\n    readonly recovery?: WebLoginRecoveryConfiguration;\n    readonly styles?: WebLoginStyleBindings;\n}",
      "members": [
        {
          "name": "version",
          "kind": "property",
          "type": "1",
          "signature": "readonly version: 1;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "presentation",
          "kind": "property",
          "type": "WebLoginPresentation",
          "signature": "readonly presentation: WebLoginPresentation;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "initialView",
          "kind": "property",
          "type": "Exclude<WebLoginView, 'reset'>",
          "signature": "readonly initialView: Exclude<WebLoginView, 'reset'>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "allowRegistration",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly allowRegistration: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "showFullName",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly showFullName: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "requireFullName",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly requireFullName: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "confirmPassword",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly confirmPassword: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "showRemember",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly showRemember: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "rememberDefault",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly rememberDefault: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "showPasswordToggle",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly showPasswordToggle: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "autoLoginAfterRegistration",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly autoLoginAfterRegistration: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "closeOnLogin",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly closeOnLogin: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "openOnShow",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly openOnShow: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "dismissible",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly dismissible: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "language",
          "kind": "property",
          "type": "'en' | 'pt-BR'",
          "signature": "readonly language: 'en' | 'pt-BR';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "email",
          "kind": "property",
          "type": "WebLoginField",
          "signature": "readonly email: WebLoginField;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "password",
          "kind": "property",
          "type": "WebLoginField",
          "signature": "readonly password: WebLoginField;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fullName",
          "kind": "property",
          "type": "WebLoginField",
          "signature": "readonly fullName: WebLoginField;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "passwordConfirmation",
          "kind": "property",
          "type": "WebLoginField",
          "signature": "readonly passwordConfirmation: WebLoginField;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "texts",
          "kind": "property",
          "type": "WebLoginTexts",
          "signature": "readonly texts: WebLoginTexts;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "appearance",
          "kind": "property",
          "type": "WebLoginAppearance",
          "signature": "readonly appearance: WebLoginAppearance;",
          "parameters": [],
          "description": "Layout defaults and compatibility for earlier saved paint values. New paint comes from styles.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "recovery",
          "kind": "property",
          "type": "WebLoginRecoveryConfiguration",
          "signature": "readonly recovery?: WebLoginRecoveryConfiguration;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "styles",
          "kind": "property",
          "type": "WebLoginStyleBindings",
          "signature": "readonly styles?: WebLoginStyleBindings;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "createDefaultWebLoginConfiguration",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function createDefaultWebLoginConfiguration(language?: 'en' | 'pt-BR'): WebLoginConfiguration;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "parseWebLoginConfiguration",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Validate saved values without accepting unknown fields, credentials or future versions. */\nexport function parseWebLoginConfiguration(value: unknown): WebLoginConfiguration;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebLoginOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebLoginOptions {\n    /** Designer and configuration previews never contact RestGo. */\n    readonly interactive?: boolean;\n}",
      "members": [
        {
          "name": "interactive",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly interactive?: boolean;",
          "parameters": [],
          "description": "Designer and configuration previews never contact RestGo.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebLoginUserEvent",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebLoginUserEvent {\n    readonly user: import(\"@webrad/restgo-sdk\").RestGoCurrentUser;\n    readonly restored: boolean;\n}",
      "members": [
        {
          "name": "user",
          "kind": "property",
          "type": "import(\"@webrad/restgo-sdk\").RestGoCurrentUser",
          "signature": "readonly user: import(\"@webrad/restgo-sdk\").RestGoCurrentUser;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "restored",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly restored: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebLoginViewEvent",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebLoginViewEvent {\n    readonly view: WebLoginView;\n}",
      "members": [
        {
          "name": "view",
          "kind": "property",
          "type": "WebLoginView",
          "signature": "readonly view: WebLoginView;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebLoginRecoveryEvent",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebLoginRecoveryEvent {\n    readonly email: string;\n}",
      "members": [
        {
          "name": "email",
          "kind": "property",
          "type": "string",
          "signature": "readonly email: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebLoginErrorEvent",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebLoginErrorEvent {\n    readonly operation: WebLoginView | 'restore';\n    readonly message: string;\n    readonly code: string;\n    readonly status: number;\n}",
      "members": [
        {
          "name": "operation",
          "kind": "property",
          "type": "WebLoginView | 'restore'",
          "signature": "readonly operation: WebLoginView | 'restore';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "message",
          "kind": "property",
          "type": "string",
          "signature": "readonly message: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "code",
          "kind": "property",
          "type": "string",
          "signature": "readonly code: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "status",
          "kind": "property",
          "type": "number",
          "signature": "readonly status: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebLoginControls",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebLoginControls {\n    readonly panel: WebPanel;\n    readonly title: WebLabel;\n    readonly subtitle: WebLabel;\n    readonly email: WebEdit;\n    readonly password: WebEdit;\n    readonly fullName: WebEdit;\n    readonly passwordConfirmation: WebEdit;\n    readonly remember: WebCheckBox;\n    readonly submit: WebButton;\n}",
      "members": [
        {
          "name": "panel",
          "kind": "property",
          "type": "WebPanel",
          "signature": "readonly panel: WebPanel;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "title",
          "kind": "property",
          "type": "WebLabel",
          "signature": "readonly title: WebLabel;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "subtitle",
          "kind": "property",
          "type": "WebLabel",
          "signature": "readonly subtitle: WebLabel;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "email",
          "kind": "property",
          "type": "WebEdit",
          "signature": "readonly email: WebEdit;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "password",
          "kind": "property",
          "type": "WebEdit",
          "signature": "readonly password: WebEdit;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fullName",
          "kind": "property",
          "type": "WebEdit",
          "signature": "readonly fullName: WebEdit;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "passwordConfirmation",
          "kind": "property",
          "type": "WebEdit",
          "signature": "readonly passwordConfirmation: WebEdit;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "remember",
          "kind": "property",
          "type": "WebCheckBox",
          "signature": "readonly remember: WebCheckBox;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "submit",
          "kind": "property",
          "type": "WebButton",
          "signature": "readonly submit: WebButton;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebLogin",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent<HTMLElement>"
      ],
      "source": "/** A ready-to-use authentication template composed from the ordinary runtime controls. */\nexport class WebLogin extends WebComponent<HTMLElement> {\n    #private;\n    constructor(element: HTMLElement, options?: WebLoginOptions);\n    get configuration(): WebLoginConfiguration;\n    set configuration(value: WebLoginConfiguration);\n    get controls(): WebLoginControls;\n    /** The compiler/Designer supplies project style classes; configuration stores only stable IDs. */\n    get styleCatalog(): readonly RuntimeComponentStyle[];\n    set styleCatalog(value: readonly RuntimeComponentStyle[]);\n    get view(): WebLoginView;\n    set view(value: WebLoginView);\n    get busy(): boolean;\n    get open(): boolean;\n    get email(): string;\n    set email(value: string);\n    get remember(): boolean;\n    set remember(value: boolean);\n    get hasRecoveryToken(): boolean;\n    get enabled(): boolean;\n    set enabled(value: boolean);\n    get visible(): boolean;\n    set visible(value: boolean);\n    show(): void;\n    hide(): void;\n    close(): void;\n    showLogin(): void;\n    showRegistration(): void;\n    showRecovery(): void;\n    /** Claims a pending email link without exposing its token to authored code. */\n    openRecoveryLink(): boolean;\n    /** The token remains private and is cleared on completion, replacement, hiding or disposal. */\n    showPasswordReset(token: string): void;\n    /** Runs the current form through the shared project RestGo client. Never exposes tokens. */\n    submit(): Promise<void>;\n    dispose(): void;\n}",
      "publicSource": "/** A ready-to-use authentication template composed from the ordinary runtime controls. */\nexport class WebLogin extends WebComponent<HTMLElement> {\n    constructor(element: HTMLElement, options?: WebLoginOptions);\n    get configuration(): WebLoginConfiguration;\n    set configuration(value: WebLoginConfiguration);\n    get controls(): WebLoginControls;\n    /** The compiler/Designer supplies project style classes; configuration stores only stable IDs. */\n    get styleCatalog(): readonly RuntimeComponentStyle[];\n    set styleCatalog(value: readonly RuntimeComponentStyle[]);\n    get view(): WebLoginView;\n    set view(value: WebLoginView);\n    get busy(): boolean;\n    get open(): boolean;\n    get email(): string;\n    set email(value: string);\n    get remember(): boolean;\n    set remember(value: boolean);\n    get hasRecoveryToken(): boolean;\n    get enabled(): boolean;\n    set enabled(value: boolean);\n    get visible(): boolean;\n    set visible(value: boolean);\n    show(): void;\n    hide(): void;\n    close(): void;\n    showLogin(): void;\n    showRegistration(): void;\n    showRecovery(): void;\n    /** Claims a pending email link without exposing its token to authored code. */\n    openRecoveryLink(): boolean;\n    /** The token remains private and is cleared on completion, replacement, hiding or disposal. */\n    showPasswordReset(token: string): void;\n    /** Runs the current form through the shared project RestGo client. Never exposes tokens. */\n    submit(): Promise<void>;\n    dispose(): void;\n}",
      "members": [
        {
          "name": "configuration",
          "kind": "get",
          "type": "WebLoginConfiguration",
          "signature": "get configuration(): WebLoginConfiguration;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "controls",
          "kind": "get",
          "type": "WebLoginControls",
          "signature": "get controls(): WebLoginControls;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "styleCatalog",
          "kind": "get",
          "type": "readonly RuntimeComponentStyle[]",
          "signature": "get styleCatalog(): readonly RuntimeComponentStyle[];",
          "parameters": [],
          "description": "The compiler/Designer supplies project style classes; configuration stores only stable IDs.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "view",
          "kind": "get",
          "type": "WebLoginView",
          "signature": "get view(): WebLoginView;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "busy",
          "kind": "get",
          "type": "boolean",
          "signature": "get busy(): boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "open",
          "kind": "get",
          "type": "boolean",
          "signature": "get open(): boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "email",
          "kind": "get",
          "type": "string",
          "signature": "get email(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "remember",
          "kind": "get",
          "type": "boolean",
          "signature": "get remember(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "hasRecoveryToken",
          "kind": "get",
          "type": "boolean",
          "signature": "get hasRecoveryToken(): boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "enabled",
          "kind": "get",
          "type": "boolean",
          "signature": "get enabled(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "visible",
          "kind": "get",
          "type": "boolean",
          "signature": "get visible(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "show",
          "kind": "method",
          "type": "void",
          "signature": "show(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "hide",
          "kind": "method",
          "type": "void",
          "signature": "hide(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "close",
          "kind": "method",
          "type": "void",
          "signature": "close(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "showLogin",
          "kind": "method",
          "type": "void",
          "signature": "showLogin(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "showRegistration",
          "kind": "method",
          "type": "void",
          "signature": "showRegistration(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "showRecovery",
          "kind": "method",
          "type": "void",
          "signature": "showRecovery(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "openRecoveryLink",
          "kind": "method",
          "type": "boolean",
          "signature": "openRecoveryLink(): boolean;",
          "parameters": [],
          "description": "Claims a pending email link without exposing its token to authored code.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "showPasswordReset",
          "kind": "method",
          "type": "void",
          "signature": "showPasswordReset(token: string): void;",
          "parameters": [
            {
              "name": "token",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "The token remains private and is cleared on completion, replacement, hiding or disposal.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "submit",
          "kind": "method",
          "type": "Promise<void>",
          "signature": "submit(): Promise<void>;",
          "parameters": [],
          "description": "Runs the current form through the shared project RestGo client. Never exposes tokens.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebReportParameterType",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "/** Browser-safe, versioned report document. Geometry is expressed in millimetres. */\nexport type WebReportParameterType = 'string' | 'number' | 'boolean' | 'date';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebReportParameterValue",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebReportParameterValue = string | number | boolean | null;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebReportParameter",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebReportParameter {\n    readonly name: string;\n    readonly type: WebReportParameterType;\n    readonly defaultValue: WebReportParameterValue;\n}",
      "members": [
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "type",
          "kind": "property",
          "type": "WebReportParameterType",
          "signature": "readonly type: WebReportParameterType;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "defaultValue",
          "kind": "property",
          "type": "WebReportParameterValue",
          "signature": "readonly defaultValue: WebReportParameterValue;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebReportValueSource",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebReportValueSource = {\n    readonly kind: 'static';\n    readonly value: string;\n} | {\n    readonly kind: 'parameter';\n    readonly name: string;\n} | {\n    readonly kind: 'field';\n    readonly apiClientId: string;\n    readonly operationId: string;\n    readonly path: string;\n} | {\n    readonly kind: 'row';\n    readonly path: string;\n} | {\n    readonly kind: 'system';\n    readonly value: 'pageNumber' | 'pageCount';\n};",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebReportElementBase",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebReportElementBase {\n    readonly id: string;\n    readonly name: string;\n    readonly x: number;\n    readonly y: number;\n    readonly width: number;\n    readonly height: number;\n    /** Zero-based owning column when placed directly in a Repeater Header or Footer. */\n    readonly column?: number;\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "readonly id: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "x",
          "kind": "property",
          "type": "number",
          "signature": "readonly x: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "y",
          "kind": "property",
          "type": "number",
          "signature": "readonly y: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "width",
          "kind": "property",
          "type": "number",
          "signature": "readonly width: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "height",
          "kind": "property",
          "type": "number",
          "signature": "readonly height: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "column",
          "kind": "property",
          "type": "number",
          "signature": "readonly column?: number;",
          "parameters": [],
          "description": "Zero-based owning column when placed directly in a Repeater Header or Footer.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebReportTextElement",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebReportElementBase"
      ],
      "source": "export interface WebReportTextElement extends WebReportElementBase {\n    readonly type: 'text';\n    readonly value: WebReportValueSource;\n    /** PDF point size (1/72 inch). */\n    readonly fontSize: number;\n    readonly color: string;\n    readonly bold: boolean;\n    readonly align: 'left' | 'center' | 'right';\n}",
      "members": [
        {
          "name": "type",
          "kind": "property",
          "type": "'text'",
          "signature": "readonly type: 'text';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "value",
          "kind": "property",
          "type": "WebReportValueSource",
          "signature": "readonly value: WebReportValueSource;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fontSize",
          "kind": "property",
          "type": "number",
          "signature": "readonly fontSize: number;",
          "parameters": [],
          "description": "PDF point size (1/72 inch).",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "color",
          "kind": "property",
          "type": "string",
          "signature": "readonly color: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "bold",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly bold: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "align",
          "kind": "property",
          "type": "'left' | 'center' | 'right'",
          "signature": "readonly align: 'left' | 'center' | 'right';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebReportImageElement",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebReportElementBase"
      ],
      "source": "export interface WebReportImageElement extends WebReportElementBase {\n    readonly type: 'image';\n    readonly value: WebReportValueSource;\n    readonly fit: 'contain';\n}",
      "members": [
        {
          "name": "type",
          "kind": "property",
          "type": "'image'",
          "signature": "readonly type: 'image';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "value",
          "kind": "property",
          "type": "WebReportValueSource",
          "signature": "readonly value: WebReportValueSource;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fit",
          "kind": "property",
          "type": "'contain'",
          "signature": "readonly fit: 'contain';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebReportLineElement",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebReportElementBase"
      ],
      "source": "export interface WebReportLineElement extends WebReportElementBase {\n    readonly type: 'line';\n    readonly color: string;\n    /** PDF point size. */\n    readonly strokeWidth: number;\n}",
      "members": [
        {
          "name": "type",
          "kind": "property",
          "type": "'line'",
          "signature": "readonly type: 'line';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "color",
          "kind": "property",
          "type": "string",
          "signature": "readonly color: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "strokeWidth",
          "kind": "property",
          "type": "number",
          "signature": "readonly strokeWidth: number;",
          "parameters": [],
          "description": "PDF point size.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebReportLeafElement",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebReportLeafElement = WebReportTextElement | WebReportImageElement | WebReportLineElement;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebReportRepeaterSection",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebReportRepeaterSection {\n    readonly height: number;\n    readonly elements: readonly WebReportElement[];\n    readonly columns?: number;\n    readonly columnGap?: number;\n}",
      "members": [
        {
          "name": "height",
          "kind": "property",
          "type": "number",
          "signature": "readonly height: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "elements",
          "kind": "property",
          "type": "readonly WebReportElement[]",
          "signature": "readonly elements: readonly WebReportElement[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "columns",
          "kind": "property",
          "type": "number",
          "signature": "readonly columns?: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "columnGap",
          "kind": "property",
          "type": "number",
          "signature": "readonly columnGap?: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebReportRepeaterAppearance",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebReportRepeaterAppearance {\n    readonly backgroundColor: string | null;\n    readonly borderColor: string;\n    /** Millimetres, matching the editor's geometry. */\n    readonly borderWidth: number;\n    readonly borderStyle: 'solid' | 'dashed';\n    readonly rowLines: boolean;\n    readonly columnLines: boolean;\n    readonly lineColor: string;\n    readonly lineWidth: number;\n}",
      "members": [
        {
          "name": "backgroundColor",
          "kind": "property",
          "type": "string | null",
          "signature": "readonly backgroundColor: string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "borderColor",
          "kind": "property",
          "type": "string",
          "signature": "readonly borderColor: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "borderWidth",
          "kind": "property",
          "type": "number",
          "signature": "readonly borderWidth: number;",
          "parameters": [],
          "description": "Millimetres, matching the editor's geometry.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "borderStyle",
          "kind": "property",
          "type": "'solid' | 'dashed'",
          "signature": "readonly borderStyle: 'solid' | 'dashed';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "rowLines",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly rowLines: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "columnLines",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly columnLines: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "lineColor",
          "kind": "property",
          "type": "string",
          "signature": "readonly lineColor: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "lineWidth",
          "kind": "property",
          "type": "number",
          "signature": "readonly lineWidth: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebReportRepeaterLayout",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebReportRepeaterLayout {\n    readonly columns: number;\n    /** Rows per grid block; zero fits all records into the configured columns. */\n    readonly rows: number;\n    readonly columnGap: number;\n    readonly fill: 'rows' | 'columns';\n}",
      "members": [
        {
          "name": "columns",
          "kind": "property",
          "type": "number",
          "signature": "readonly columns: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "rows",
          "kind": "property",
          "type": "number",
          "signature": "readonly rows: number;",
          "parameters": [],
          "description": "Rows per grid block; zero fits all records into the configured columns.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "columnGap",
          "kind": "property",
          "type": "number",
          "signature": "readonly columnGap: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fill",
          "kind": "property",
          "type": "'rows' | 'columns'",
          "signature": "readonly fill: 'rows' | 'columns';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebReportGroupAppearance",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebReportGroupAppearance {\n    readonly backgroundColor: string | null;\n    readonly borderColor: string;\n    /** Millimetres, matching the editor's geometry. */\n    readonly borderWidth: number;\n    readonly borderStyle: 'solid' | 'dashed';\n    /** Millimetres; limited to half the rendered width/height when painting. */\n    readonly borderRadius: number;\n}",
      "members": [
        {
          "name": "backgroundColor",
          "kind": "property",
          "type": "string | null",
          "signature": "readonly backgroundColor: string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "borderColor",
          "kind": "property",
          "type": "string",
          "signature": "readonly borderColor: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "borderWidth",
          "kind": "property",
          "type": "number",
          "signature": "readonly borderWidth: number;",
          "parameters": [],
          "description": "Millimetres, matching the editor's geometry.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "borderStyle",
          "kind": "property",
          "type": "'solid' | 'dashed'",
          "signature": "readonly borderStyle: 'solid' | 'dashed';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "borderRadius",
          "kind": "property",
          "type": "number",
          "signature": "readonly borderRadius: number;",
          "parameters": [],
          "description": "Millimetres; limited to half the rendered width/height when painting.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebReportGroupElement",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebReportElementBase"
      ],
      "source": "/** A single container; children inherit the enclosing record without introducing a data source. */\nexport interface WebReportGroupElement extends WebReportElementBase {\n    readonly type: 'group';\n    readonly children: readonly WebReportElement[];\n    readonly appearance?: WebReportGroupAppearance;\n}",
      "members": [
        {
          "name": "type",
          "kind": "property",
          "type": "'group'",
          "signature": "readonly type: 'group';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "children",
          "kind": "property",
          "type": "readonly WebReportElement[]",
          "signature": "readonly children: readonly WebReportElement[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "appearance",
          "kind": "property",
          "type": "WebReportGroupAppearance",
          "signature": "readonly appearance?: WebReportGroupAppearance;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebReportRepeaterElement",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebReportElementBase"
      ],
      "source": "export interface WebReportRepeaterElement extends WebReportElementBase {\n    readonly type: 'repeater';\n    readonly source: {\n        readonly apiClientId: string;\n        readonly operationId: string;\n        readonly listPath: string;\n        /** Nested repeaters can read a list relative to the enclosing record. */\n        readonly scope?: 'api' | 'row';\n    };\n    /** Space in millimetres between complete records. */\n    readonly gap: number;\n    readonly children: readonly WebReportElement[];\n    readonly header?: WebReportRepeaterSection;\n    readonly footer?: WebReportRepeaterSection;\n    readonly appearance?: WebReportRepeaterAppearance;\n    readonly layout?: WebReportRepeaterLayout;\n}",
      "members": [
        {
          "name": "type",
          "kind": "property",
          "type": "'repeater'",
          "signature": "readonly type: 'repeater';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "source",
          "kind": "property",
          "type": "{\n        readonly apiClientId: string;\n        readonly operationId: string;\n        readonly listPath: string;\n        /** Nested repeaters can read a list relative to the enclosing record. */\n        readonly scope?: 'api' | 'row';\n    }",
          "signature": "readonly source: {\n    readonly apiClientId: string;\n    readonly operationId: string;\n    readonly listPath: string;\n    /** Nested repeaters can read a list relative to the enclosing record. */\n    readonly scope?: 'api' | 'row';\n};",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "gap",
          "kind": "property",
          "type": "number",
          "signature": "readonly gap: number;",
          "parameters": [],
          "description": "Space in millimetres between complete records.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "children",
          "kind": "property",
          "type": "readonly WebReportElement[]",
          "signature": "readonly children: readonly WebReportElement[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "header",
          "kind": "property",
          "type": "WebReportRepeaterSection",
          "signature": "readonly header?: WebReportRepeaterSection;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "footer",
          "kind": "property",
          "type": "WebReportRepeaterSection",
          "signature": "readonly footer?: WebReportRepeaterSection;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "appearance",
          "kind": "property",
          "type": "WebReportRepeaterAppearance",
          "signature": "readonly appearance?: WebReportRepeaterAppearance;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "layout",
          "kind": "property",
          "type": "WebReportRepeaterLayout",
          "signature": "readonly layout?: WebReportRepeaterLayout;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebReportElement",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebReportElement = WebReportLeafElement | WebReportRepeaterElement | WebReportGroupElement;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebReportContainerElement",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebReportContainerElement = WebReportRepeaterElement | WebReportGroupElement;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebReportBandKind",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebReportBandKind = 'title' | 'pageHeader' | 'detail' | 'pageFooter' | 'summary';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebReportBand",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebReportBand {\n    readonly id: string;\n    readonly kind: WebReportBandKind;\n    readonly height: number;\n    readonly elements: readonly WebReportElement[];\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "readonly id: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "kind",
          "kind": "property",
          "type": "WebReportBandKind",
          "signature": "readonly kind: WebReportBandKind;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "height",
          "kind": "property",
          "type": "number",
          "signature": "readonly height: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "elements",
          "kind": "property",
          "type": "readonly WebReportElement[]",
          "signature": "readonly elements: readonly WebReportElement[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebReportTemplate",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebReportTemplate {\n    readonly schemaVersion: 1;\n    readonly name: string;\n    readonly paper: {\n        readonly size: 'A4' | 'Letter';\n        readonly orientation: 'portrait' | 'landscape';\n        readonly margins: {\n            readonly top: number;\n            readonly right: number;\n            readonly bottom: number;\n            readonly left: number;\n        };\n    };\n    readonly parameters: readonly WebReportParameter[];\n    readonly bands: readonly WebReportBand[];\n}",
      "members": [
        {
          "name": "schemaVersion",
          "kind": "property",
          "type": "1",
          "signature": "readonly schemaVersion: 1;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "paper",
          "kind": "property",
          "type": "{\n        readonly size: 'A4' | 'Letter';\n        readonly orientation: 'portrait' | 'landscape';\n        readonly margins: {\n            readonly top: number;\n            readonly right: number;\n            readonly bottom: number;\n            readonly left: number;\n        };\n    }",
          "signature": "readonly paper: {\n    readonly size: 'A4' | 'Letter';\n    readonly orientation: 'portrait' | 'landscape';\n    readonly margins: {\n        readonly top: number;\n        readonly right: number;\n        readonly bottom: number;\n        readonly left: number;\n    };\n};",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "parameters",
          "kind": "property",
          "type": "readonly WebReportParameter[]",
          "signature": "readonly parameters: readonly WebReportParameter[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "bands",
          "kind": "property",
          "type": "readonly WebReportBand[]",
          "signature": "readonly bands: readonly WebReportBand[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "reportRepeaterLayout",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function reportRepeaterLayout(element: WebReportRepeaterElement): WebReportRepeaterLayout;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "reportRepeaterAppearance",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function reportRepeaterAppearance(element: WebReportRepeaterElement): WebReportRepeaterAppearance;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "reportRepeaterColumnWidth",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function reportRepeaterColumnWidth(element: WebReportRepeaterElement): number;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "reportRepeaterSectionLayout",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function reportRepeaterSectionLayout(section: WebReportRepeaterSection | undefined): Pick<WebReportRepeaterLayout, 'columns' | 'columnGap'>;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "reportRepeaterSectionColumnWidth",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function reportRepeaterSectionColumnWidth(element: WebReportRepeaterElement, section: 'header' | 'footer'): number;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "reportRepeaterTemplateHeight",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function reportRepeaterTemplateHeight(element: WebReportRepeaterElement): number;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "reportGroupAppearance",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function reportGroupAppearance(element: WebReportGroupElement): WebReportGroupAppearance;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "reportElementChildren",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function reportElementChildren(element: WebReportElement): readonly WebReportElement[];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "reportRepeaterElements",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** All authored descendants, including sections, without introducing runtime globals. */\nexport function reportRepeaterElements(element: WebReportRepeaterElement): readonly WebReportElement[];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "createDefaultReportTemplate",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function createDefaultReportTemplate(): WebReportTemplate;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "validateReportParameterValue",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Checks both authored defaults and programmatically supplied values. Dates use ISO text. */\nexport function validateReportParameterValue(parameter: WebReportParameter, value: unknown): WebReportParameterValue;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "reportPaperSize",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function reportPaperSize(template: WebReportTemplate): {\n    readonly width: number;\n    readonly height: number;\n};",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "parseReportTemplate",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Parses into a fresh validated value; unknown properties never enter the runtime model. */\nexport function parseReportTemplate(value: unknown): WebReportTemplate;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "serializeReportTemplate",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function serializeReportTemplate(template: WebReportTemplate): string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "resolveReportPointer",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Own-property JSON Pointer traversal; a missing field displays an empty value. */\nexport function resolveReportPointer(value: unknown, path: string): unknown;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebReportPreviewMode",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebReportPreviewMode = 'modal' | 'new-tab' | 'download';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebReportBuilderConfiguration",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebNonvisualComponentOptions"
      ],
      "source": "export interface WebReportBuilderConfiguration extends WebNonvisualComponentOptions {\n    readonly reportTemplate?: WebReportTemplate;\n    readonly template?: WebReportTemplate;\n    readonly previewMode?: WebReportPreviewMode;\n    readonly fileName?: string;\n}",
      "members": [
        {
          "name": "reportTemplate",
          "kind": "property",
          "type": "WebReportTemplate",
          "signature": "readonly reportTemplate?: WebReportTemplate;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "template",
          "kind": "property",
          "type": "WebReportTemplate",
          "signature": "readonly template?: WebReportTemplate;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "previewMode",
          "kind": "property",
          "type": "WebReportPreviewMode",
          "signature": "readonly previewMode?: WebReportPreviewMode;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fileName",
          "kind": "property",
          "type": "string",
          "signature": "readonly fileName?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebReportGenerationOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebReportGenerationOptions {\n    readonly parameters?: Readonly<Record<string, WebReportParameterValue>>;\n    readonly previewMode?: WebReportPreviewMode;\n    readonly fileName?: string;\n    readonly signal?: AbortSignal;\n}",
      "members": [
        {
          "name": "parameters",
          "kind": "property",
          "type": "Readonly<Record<string, WebReportParameterValue>>",
          "signature": "readonly parameters?: Readonly<Record<string, WebReportParameterValue>>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "previewMode",
          "kind": "property",
          "type": "WebReportPreviewMode",
          "signature": "readonly previewMode?: WebReportPreviewMode;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fileName",
          "kind": "property",
          "type": "string",
          "signature": "readonly fileName?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "signal",
          "kind": "property",
          "type": "AbortSignal",
          "signature": "readonly signal?: AbortSignal;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebReportResult",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebReportResult {\n    readonly blob: Blob;\n    readonly pageCount: number;\n    readonly fileName: string;\n}",
      "members": [
        {
          "name": "blob",
          "kind": "property",
          "type": "Blob",
          "signature": "readonly blob: Blob;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "pageCount",
          "kind": "property",
          "type": "number",
          "signature": "readonly pageCount: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fileName",
          "kind": "property",
          "type": "string",
          "signature": "readonly fileName: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebReportEventHandler",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebReportEventHandler<TSender, TDetail> = (sender: TSender, event: CustomEvent<TDetail>) => void | Promise<void>;",
      "members": [],
      "typeParameters": [
        "TSender",
        "TDetail"
      ]
    },
    {
      "name": "WebReportParameterValues",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebReportParameterValues = Record<string, WebReportParameterValue>;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebReportParameters",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [],
      "source": "/** Typed parameter overrides are independent of the immutable template defaults. */\nexport class WebReportParameters<TValues extends WebReportParameterValues = WebReportParameterValues> {\n    #private;\n    readonly template: () => WebReportTemplate;\n    constructor(template: () => WebReportTemplate);\n    Set<K extends keyof TValues & string>(name: K, value: TValues[K]): void;\n    /** Dynamic names for externally loaded templates; values still follow their declared types. */\n    SetValue(name: string, value: WebReportParameterValue): void;\n    Get<K extends keyof TValues & string>(name: K): TValues[K];\n    GetValue(name: string): WebReportParameterValue;\n    Clear(name?: keyof TValues & string): void;\n    get values(): Readonly<TValues>;\n    /** Retains only overrides whose names and declared types survive a template replacement. */\n    reconcile(previous: WebReportTemplate, next: WebReportTemplate): void;\n}",
      "publicSource": "/** Typed parameter overrides are independent of the immutable template defaults. */\nexport class WebReportParameters<TValues extends WebReportParameterValues = WebReportParameterValues> {\n    readonly template: () => WebReportTemplate;\n    constructor(template: () => WebReportTemplate);\n    Set<K extends keyof TValues & string>(name: K, value: TValues[K]): void;\n    /** Dynamic names for externally loaded templates; values still follow their declared types. */\n    SetValue(name: string, value: WebReportParameterValue): void;\n    Get<K extends keyof TValues & string>(name: K): TValues[K];\n    GetValue(name: string): WebReportParameterValue;\n    Clear(name?: keyof TValues & string): void;\n    get values(): Readonly<TValues>;\n    /** Retains only overrides whose names and declared types survive a template replacement. */\n    reconcile(previous: WebReportTemplate, next: WebReportTemplate): void;\n}",
      "members": [
        {
          "name": "template",
          "kind": "property",
          "type": "() => WebReportTemplate",
          "signature": "readonly template: () => WebReportTemplate;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "Set",
          "kind": "method",
          "type": "void",
          "signature": "Set<K extends keyof TValues & string>(name: K, value: TValues[K]): void;",
          "parameters": [
            {
              "name": "name",
              "type": "K",
              "optional": false,
              "rest": false
            },
            {
              "name": "value",
              "type": "TValues[K]",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "SetValue",
          "kind": "method",
          "type": "void",
          "signature": "SetValue(name: string, value: WebReportParameterValue): void;",
          "parameters": [
            {
              "name": "name",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "value",
              "type": "WebReportParameterValue",
              "optional": false,
              "rest": false
            }
          ],
          "description": "Dynamic names for externally loaded templates; values still follow their declared types.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Get",
          "kind": "method",
          "type": "TValues[K]",
          "signature": "Get<K extends keyof TValues & string>(name: K): TValues[K];",
          "parameters": [
            {
              "name": "name",
              "type": "K",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "GetValue",
          "kind": "method",
          "type": "WebReportParameterValue",
          "signature": "GetValue(name: string): WebReportParameterValue;",
          "parameters": [
            {
              "name": "name",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Clear",
          "kind": "method",
          "type": "void",
          "signature": "Clear(name?: keyof TValues & string): void;",
          "parameters": [
            {
              "name": "name",
              "type": "keyof TValues & string",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "values",
          "kind": "get",
          "type": "Readonly<TValues>",
          "signature": "get values(): Readonly<TValues>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "reconcile",
          "kind": "method",
          "type": "void",
          "signature": "reconcile(previous: WebReportTemplate, next: WebReportTemplate): void;",
          "parameters": [
            {
              "name": "previous",
              "type": "WebReportTemplate",
              "optional": false,
              "rest": false
            },
            {
              "name": "next",
              "type": "WebReportTemplate",
              "optional": false,
              "rest": false
            }
          ],
          "description": "Retains only overrides whose names and declared types survive a template replacement.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": [
        "TValues extends WebReportParameterValues = WebReportParameterValues"
      ]
    },
    {
      "name": "WebReportBuilder",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebNonvisualComponent"
      ],
      "source": "/** Nonvisual browser report service. It reads loaded ApiClient state and never executes requests. */\nexport class WebReportBuilder<TParameters extends WebReportParameterValues = WebReportParameterValues> extends WebNonvisualComponent {\n    #private;\n    readonly Parameters: WebReportParameters<TParameters>;\n    constructor(configuration?: WebReportBuilderConfiguration);\n    get template(): WebReportTemplate;\n    set template(value: WebReportTemplate);\n    get reportTemplate(): WebReportTemplate;\n    set reportTemplate(value: WebReportTemplate);\n    get previewMode(): WebReportPreviewMode;\n    set previewMode(value: WebReportPreviewMode);\n    get fileName(): string;\n    set fileName(value: string);\n    get busy(): boolean;\n    get OnGenerate(): WebReportEventHandler<this, WebReportGenerationOptions> | null;\n    set OnGenerate(value: WebReportEventHandler<this, WebReportGenerationOptions> | null);\n    get OnSuccess(): WebReportEventHandler<this, WebReportResult> | null;\n    set OnSuccess(value: WebReportEventHandler<this, WebReportResult> | null);\n    get OnError(): WebReportEventHandler<this, Error> | null;\n    set OnError(value: WebReportEventHandler<this, Error> | null);\n    /** Generated code binds each component by stable model ID and by its authored name. */\n    bindApiClient(key: string, client: WebApiClient): void;\n    SaveTemplate(): string;\n    LoadTemplate(value: WebReportTemplate | string | Blob): Promise<void>;\n    GeneratePDF(options?: WebReportGenerationOptions): Promise<WebReportResult>;\n    Generate(options?: WebReportGenerationOptions): Promise<WebReportResult>;\n    ClosePreview(): void;\n    dispose(): void;\n}",
      "publicSource": "/** Nonvisual browser report service. It reads loaded ApiClient state and never executes requests. */\nexport class WebReportBuilder<TParameters extends WebReportParameterValues = WebReportParameterValues> extends WebNonvisualComponent {\n    readonly Parameters: WebReportParameters<TParameters>;\n    constructor(configuration?: WebReportBuilderConfiguration);\n    get template(): WebReportTemplate;\n    set template(value: WebReportTemplate);\n    get reportTemplate(): WebReportTemplate;\n    set reportTemplate(value: WebReportTemplate);\n    get previewMode(): WebReportPreviewMode;\n    set previewMode(value: WebReportPreviewMode);\n    get fileName(): string;\n    set fileName(value: string);\n    get busy(): boolean;\n    get OnGenerate(): WebReportEventHandler<this, WebReportGenerationOptions> | null;\n    set OnGenerate(value: WebReportEventHandler<this, WebReportGenerationOptions> | null);\n    get OnSuccess(): WebReportEventHandler<this, WebReportResult> | null;\n    set OnSuccess(value: WebReportEventHandler<this, WebReportResult> | null);\n    get OnError(): WebReportEventHandler<this, Error> | null;\n    set OnError(value: WebReportEventHandler<this, Error> | null);\n    /** Generated code binds each component by stable model ID and by its authored name. */\n    bindApiClient(key: string, client: WebApiClient): void;\n    SaveTemplate(): string;\n    LoadTemplate(value: WebReportTemplate | string | Blob): Promise<void>;\n    GeneratePDF(options?: WebReportGenerationOptions): Promise<WebReportResult>;\n    Generate(options?: WebReportGenerationOptions): Promise<WebReportResult>;\n    ClosePreview(): void;\n    dispose(): void;\n}",
      "members": [
        {
          "name": "Parameters",
          "kind": "property",
          "type": "WebReportParameters<TParameters>",
          "signature": "readonly Parameters: WebReportParameters<TParameters>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "template",
          "kind": "get",
          "type": "WebReportTemplate",
          "signature": "get template(): WebReportTemplate;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "reportTemplate",
          "kind": "get",
          "type": "WebReportTemplate",
          "signature": "get reportTemplate(): WebReportTemplate;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "previewMode",
          "kind": "get",
          "type": "WebReportPreviewMode",
          "signature": "get previewMode(): WebReportPreviewMode;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "fileName",
          "kind": "get",
          "type": "string",
          "signature": "get fileName(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "busy",
          "kind": "get",
          "type": "boolean",
          "signature": "get busy(): boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "OnGenerate",
          "kind": "get",
          "type": "WebReportEventHandler<this, WebReportGenerationOptions> | null",
          "signature": "get OnGenerate(): WebReportEventHandler<this, WebReportGenerationOptions> | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "OnSuccess",
          "kind": "get",
          "type": "WebReportEventHandler<this, WebReportResult> | null",
          "signature": "get OnSuccess(): WebReportEventHandler<this, WebReportResult> | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "OnError",
          "kind": "get",
          "type": "WebReportEventHandler<this, Error> | null",
          "signature": "get OnError(): WebReportEventHandler<this, Error> | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "bindApiClient",
          "kind": "method",
          "type": "void",
          "signature": "bindApiClient(key: string, client: WebApiClient): void;",
          "parameters": [
            {
              "name": "key",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "client",
              "type": "WebApiClient",
              "optional": false,
              "rest": false
            }
          ],
          "description": "Generated code binds each component by stable model ID and by its authored name.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "SaveTemplate",
          "kind": "method",
          "type": "string",
          "signature": "SaveTemplate(): string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "LoadTemplate",
          "kind": "method",
          "type": "Promise<void>",
          "signature": "LoadTemplate(value: WebReportTemplate | string | Blob): Promise<void>;",
          "parameters": [
            {
              "name": "value",
              "type": "WebReportTemplate | string | Blob",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "GeneratePDF",
          "kind": "method",
          "type": "Promise<WebReportResult>",
          "signature": "GeneratePDF(options?: WebReportGenerationOptions): Promise<WebReportResult>;",
          "parameters": [
            {
              "name": "options",
              "type": "WebReportGenerationOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Generate",
          "kind": "method",
          "type": "Promise<WebReportResult>",
          "signature": "Generate(options?: WebReportGenerationOptions): Promise<WebReportResult>;",
          "parameters": [
            {
              "name": "options",
              "type": "WebReportGenerationOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "ClosePreview",
          "kind": "method",
          "type": "void",
          "signature": "ClosePreview(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": [
        "TParameters extends WebReportParameterValues = WebReportParameterValues"
      ]
    },
    {
      "name": "WebRepeatingGroupConfiguration",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebRepeatingGroupConfiguration {\n    readonly schemaVersion: 1;\n    readonly apiClientId: string | null;\n    readonly operationId: string | null;\n    readonly listPath: string;\n    readonly rowHeightMode: 'fixed' | 'dynamic';\n    readonly fixedRowHeight: number;\n    readonly minRowHeight: number;\n    readonly maxRowHeight: number | null;\n    readonly gap: number;\n    readonly emptyMessage: string;\n}",
      "members": [
        {
          "name": "schemaVersion",
          "kind": "property",
          "type": "1",
          "signature": "readonly schemaVersion: 1;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "apiClientId",
          "kind": "property",
          "type": "string | null",
          "signature": "readonly apiClientId: string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "operationId",
          "kind": "property",
          "type": "string | null",
          "signature": "readonly operationId: string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "listPath",
          "kind": "property",
          "type": "string",
          "signature": "readonly listPath: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "rowHeightMode",
          "kind": "property",
          "type": "'fixed' | 'dynamic'",
          "signature": "readonly rowHeightMode: 'fixed' | 'dynamic';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fixedRowHeight",
          "kind": "property",
          "type": "number",
          "signature": "readonly fixedRowHeight: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "minRowHeight",
          "kind": "property",
          "type": "number",
          "signature": "readonly minRowHeight: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "maxRowHeight",
          "kind": "property",
          "type": "number | null",
          "signature": "readonly maxRowHeight: number | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "gap",
          "kind": "property",
          "type": "number",
          "signature": "readonly gap: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "emptyMessage",
          "kind": "property",
          "type": "string",
          "signature": "readonly emptyMessage: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebRepeatingGroupCurrentRow",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebRepeatingGroupCurrentRow<T = unknown> {\n    readonly index: number;\n    readonly value: T;\n    /** Resolves one concrete instance inside this row, including across awaits. */\n    component<C extends WebComponent>(templateId: string): C;\n}",
      "members": [
        {
          "name": "index",
          "kind": "property",
          "type": "number",
          "signature": "readonly index: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "value",
          "kind": "property",
          "type": "T",
          "signature": "readonly value: T;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "component",
          "kind": "method",
          "type": "C",
          "signature": "component<C extends WebComponent>(templateId: string): C;",
          "parameters": [
            {
              "name": "templateId",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "Resolves one concrete instance inside this row, including across awaits.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": [
        "T = unknown"
      ]
    },
    {
      "name": "WebRepeatingGroupRow",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebRepeatingGroupCurrentRow<T>"
      ],
      "source": "export interface WebRepeatingGroupRow<T = unknown> extends WebRepeatingGroupCurrentRow<T> {\n    readonly element: HTMLElement;\n    /** Physical IDs are unique per row and reusable placement. */\n    readonly components: ReadonlyMap<string, WebComponent>;\n    readonly componentIds: ReadonlyMap<string, string>;\n    readonly reusableInstances: readonly MountedReusableElementInstance[];\n    dispose(): void;\n}",
      "members": [
        {
          "name": "element",
          "kind": "property",
          "type": "HTMLElement",
          "signature": "readonly element: HTMLElement;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "components",
          "kind": "property",
          "type": "ReadonlyMap<string, WebComponent>",
          "signature": "readonly components: ReadonlyMap<string, WebComponent>;",
          "parameters": [],
          "description": "Physical IDs are unique per row and reusable placement.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "componentIds",
          "kind": "property",
          "type": "ReadonlyMap<string, string>",
          "signature": "readonly componentIds: ReadonlyMap<string, string>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "reusableInstances",
          "kind": "property",
          "type": "readonly MountedReusableElementInstance[]",
          "signature": "readonly reusableInstances: readonly MountedReusableElementInstance[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": [
        "T = unknown"
      ]
    },
    {
      "name": "WebRepeatingGroupRowRenderer",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebRepeatingGroupRowRenderer = (index: number, value: unknown, configuration: WebRepeatingGroupConfiguration) => WebRepeatingGroupRow;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebRepeatingGroupRowListener",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebRepeatingGroupRowListener<T = unknown> = (row: WebRepeatingGroupRow<T>) => void | (() => void);",
      "members": [],
      "typeParameters": [
        "T = unknown"
      ]
    },
    {
      "name": "setRepeatingGroupReusableFactory",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Generated entry supplies authored reusable classes before requests execute. */\nexport function setRepeatingGroupReusableFactory(factory: WebRepeatingGroupRowListener): void;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "getRepeatingGroupCurrentRow",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Native events keep the row that owns the sender even after the row is removed. */\nexport function getRepeatingGroupCurrentRow(sender: HTMLElement | Event): WebRepeatingGroupCurrentRow | undefined;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "bindRepeatingGroupRowContext",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Renderer associates native sender elements without copying row data into DOM attributes. */\nexport function bindRepeatingGroupRowContext(element: HTMLElement, context: WebRepeatingGroupCurrentRow): void;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "normalizeWebRepeatingGroupConfiguration",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function normalizeWebRepeatingGroupConfiguration(value: unknown): WebRepeatingGroupConfiguration;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "projectRepeatingGroupRowStyle",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Shared row shell geometry for the Designer and browser runtime. */\nexport function projectRepeatingGroupRowStyle(configuration: WebRepeatingGroupConfiguration, layout?: RuntimeComponentLayout, childrenBounds?: readonly {\n    readonly y: number;\n    readonly height: number;\n}[]): Readonly<Record<string, string>>;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "readCurrentRowField",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Reads only own JSON fields; never follows object prototypes. */\nexport function readCurrentRowField(value: unknown, pointer: string): unknown;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "applyCurrentRowBindings",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** A native typed setter remains responsible for its visual projection. */\nexport function applyCurrentRowBindings(component: WebComponent, bindings: unknown, value: unknown): void;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebRepeatingGroup",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent<HTMLDivElement>"
      ],
      "source": "/** One responsive template mounted independently for every response-list item. */\nexport class WebRepeatingGroup<T = unknown> extends WebComponent<HTMLDivElement> {\n    #private;\n    constructor(element: HTMLElement);\n    get repeatingGroupConfig(): WebRepeatingGroupConfiguration;\n    set repeatingGroupConfig(value: WebRepeatingGroupConfiguration);\n    get rows(): readonly T[];\n    set rows(values: readonly T[]);\n    get rowCount(): number;\n    getRow(index: number): WebRepeatingGroupRow<T>;\n    /** The Designer uses one editable host without serializing sampled row data. */\n    getTemplateHost(): HTMLElement;\n    /** Runtime renderer owns creation; authored code only supplies values. */\n    configureRowTemplate(renderer: WebRepeatingGroupRowRenderer): void;\n    /** Observes completed API results; it never executes an operation itself. */\n    bindApiClient(apiClient: WebApiClient | null): void;\n    subscribeRows(listener: WebRepeatingGroupRowListener<T>): () => void;\n    dispose(): void;\n}",
      "publicSource": "/** One responsive template mounted independently for every response-list item. */\nexport class WebRepeatingGroup<T = unknown> extends WebComponent<HTMLDivElement> {\n    constructor(element: HTMLElement);\n    get repeatingGroupConfig(): WebRepeatingGroupConfiguration;\n    set repeatingGroupConfig(value: WebRepeatingGroupConfiguration);\n    get rows(): readonly T[];\n    set rows(values: readonly T[]);\n    get rowCount(): number;\n    getRow(index: number): WebRepeatingGroupRow<T>;\n    /** The Designer uses one editable host without serializing sampled row data. */\n    getTemplateHost(): HTMLElement;\n    /** Runtime renderer owns creation; authored code only supplies values. */\n    configureRowTemplate(renderer: WebRepeatingGroupRowRenderer): void;\n    /** Observes completed API results; it never executes an operation itself. */\n    bindApiClient(apiClient: WebApiClient | null): void;\n    subscribeRows(listener: WebRepeatingGroupRowListener<T>): () => void;\n    dispose(): void;\n}",
      "members": [
        {
          "name": "repeatingGroupConfig",
          "kind": "get",
          "type": "WebRepeatingGroupConfiguration",
          "signature": "get repeatingGroupConfig(): WebRepeatingGroupConfiguration;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "rows",
          "kind": "get",
          "type": "readonly T[]",
          "signature": "get rows(): readonly T[];",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "rowCount",
          "kind": "get",
          "type": "number",
          "signature": "get rowCount(): number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "getRow",
          "kind": "method",
          "type": "WebRepeatingGroupRow<T>",
          "signature": "getRow(index: number): WebRepeatingGroupRow<T>;",
          "parameters": [
            {
              "name": "index",
              "type": "number",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "getTemplateHost",
          "kind": "method",
          "type": "HTMLElement",
          "signature": "getTemplateHost(): HTMLElement;",
          "parameters": [],
          "description": "The Designer uses one editable host without serializing sampled row data.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "configureRowTemplate",
          "kind": "method",
          "type": "void",
          "signature": "configureRowTemplate(renderer: WebRepeatingGroupRowRenderer): void;",
          "parameters": [
            {
              "name": "renderer",
              "type": "WebRepeatingGroupRowRenderer",
              "optional": false,
              "rest": false
            }
          ],
          "description": "Runtime renderer owns creation; authored code only supplies values.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "bindApiClient",
          "kind": "method",
          "type": "void",
          "signature": "bindApiClient(apiClient: WebApiClient | null): void;",
          "parameters": [
            {
              "name": "apiClient",
              "type": "WebApiClient | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "Observes completed API results; it never executes an operation itself.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "subscribeRows",
          "kind": "method",
          "type": "() => void",
          "signature": "subscribeRows(listener: WebRepeatingGroupRowListener<T>): () => void;",
          "parameters": [
            {
              "name": "listener",
              "type": "WebRepeatingGroupRowListener<T>",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": [
        "T = unknown"
      ]
    },
    {
      "name": "WEB_CHART_TYPES",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "/** Browser-only chart contracts, shared by runtime and Designer projections. */\nexport const WEB_CHART_TYPES: readonly [\n    \"doughnut\",\n    \"pie\",\n    \"bar\",\n    \"horizontalBar\",\n    \"line\",\n    \"area\",\n    \"radar\",\n    \"polarArea\"\n];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebChartType",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebChartType = (typeof WEB_CHART_TYPES)[number];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebChartFontFamily",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebChartFontFamily = 'inherit' | 'roboto' | 'open-sans' | 'jetbrains-mono' | 'inter' | 'lato' | 'montserrat' | 'poppins' | 'nunito';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebChartSeriesConfiguration",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebChartSeriesConfiguration {\n    readonly id: string;\n    readonly name: string;\n    readonly color: string;\n    readonly apiClientId: string | null;\n    readonly operationId: string | null;\n    readonly listPath: string;\n    readonly labelField: string;\n    readonly valueField: string;\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "readonly id: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "color",
          "kind": "property",
          "type": "string",
          "signature": "readonly color: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "apiClientId",
          "kind": "property",
          "type": "string | null",
          "signature": "readonly apiClientId: string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "operationId",
          "kind": "property",
          "type": "string | null",
          "signature": "readonly operationId: string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "listPath",
          "kind": "property",
          "type": "string",
          "signature": "readonly listPath: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "labelField",
          "kind": "property",
          "type": "string",
          "signature": "readonly labelField: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "valueField",
          "kind": "property",
          "type": "string",
          "signature": "readonly valueField: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebChartsConfiguration",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebChartsConfiguration {\n    readonly schemaVersion: 1;\n    readonly type: WebChartType;\n    readonly title: string;\n    readonly subtitle: string;\n    readonly fontFamily?: WebChartFontFamily;\n    readonly legendFontFamily?: WebChartFontFamily;\n    readonly textColor?: string | null;\n    readonly titleColor?: string | null;\n    readonly subtitleColor?: string | null;\n    readonly legendColor?: string | null;\n    readonly titleIcon?: LucideIconName | null;\n    readonly showLegend: boolean;\n    readonly legendPosition: 'bottom' | 'right';\n    readonly showGrid: boolean;\n    readonly showLabels: boolean;\n    readonly smooth: boolean;\n    readonly stacked: boolean;\n    readonly innerRadius: number;\n    readonly valuePrefix: string;\n    readonly valueSuffix: string;\n    readonly decimalPlaces: number;\n    readonly emptyText: string;\n    readonly series: readonly WebChartSeriesConfiguration[];\n}",
      "members": [
        {
          "name": "schemaVersion",
          "kind": "property",
          "type": "1",
          "signature": "readonly schemaVersion: 1;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "type",
          "kind": "property",
          "type": "WebChartType",
          "signature": "readonly type: WebChartType;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "title",
          "kind": "property",
          "type": "string",
          "signature": "readonly title: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "subtitle",
          "kind": "property",
          "type": "string",
          "signature": "readonly subtitle: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fontFamily",
          "kind": "property",
          "type": "WebChartFontFamily",
          "signature": "readonly fontFamily?: WebChartFontFamily;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "legendFontFamily",
          "kind": "property",
          "type": "WebChartFontFamily",
          "signature": "readonly legendFontFamily?: WebChartFontFamily;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "textColor",
          "kind": "property",
          "type": "string | null",
          "signature": "readonly textColor?: string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "titleColor",
          "kind": "property",
          "type": "string | null",
          "signature": "readonly titleColor?: string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "subtitleColor",
          "kind": "property",
          "type": "string | null",
          "signature": "readonly subtitleColor?: string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "legendColor",
          "kind": "property",
          "type": "string | null",
          "signature": "readonly legendColor?: string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "titleIcon",
          "kind": "property",
          "type": "LucideIconName | null",
          "signature": "readonly titleIcon?: LucideIconName | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "showLegend",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly showLegend: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "legendPosition",
          "kind": "property",
          "type": "'bottom' | 'right'",
          "signature": "readonly legendPosition: 'bottom' | 'right';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "showGrid",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly showGrid: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "showLabels",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly showLabels: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "smooth",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly smooth: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "stacked",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly stacked: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "innerRadius",
          "kind": "property",
          "type": "number",
          "signature": "readonly innerRadius: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "valuePrefix",
          "kind": "property",
          "type": "string",
          "signature": "readonly valuePrefix: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "valueSuffix",
          "kind": "property",
          "type": "string",
          "signature": "readonly valueSuffix: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "decimalPlaces",
          "kind": "property",
          "type": "number",
          "signature": "readonly decimalPlaces: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "emptyText",
          "kind": "property",
          "type": "string",
          "signature": "readonly emptyText: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "series",
          "kind": "property",
          "type": "readonly WebChartSeriesConfiguration[]",
          "signature": "readonly series: readonly WebChartSeriesConfiguration[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebChartPoint",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebChartPoint {\n    readonly label: string;\n    readonly value: number;\n}",
      "members": [
        {
          "name": "label",
          "kind": "property",
          "type": "string",
          "signature": "readonly label: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "value",
          "kind": "property",
          "type": "number",
          "signature": "readonly value: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebChartSeriesData",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebChartSeriesData {\n    readonly id: string;\n    readonly name: string;\n    readonly color: string;\n    readonly points: readonly WebChartPoint[];\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "readonly id: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "color",
          "kind": "property",
          "type": "string",
          "signature": "readonly color: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "points",
          "kind": "property",
          "type": "readonly WebChartPoint[]",
          "signature": "readonly points: readonly WebChartPoint[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebChartPointEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "/** The original numeric value and category of one activated chart mark. */\nexport interface WebChartPointEventDetail {\n    readonly label: string;\n    readonly value: number;\n    readonly seriesId: string;\n    readonly seriesName: string;\n    readonly index: number;\n}",
      "members": [
        {
          "name": "label",
          "kind": "property",
          "type": "string",
          "signature": "readonly label: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "value",
          "kind": "property",
          "type": "number",
          "signature": "readonly value: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "seriesId",
          "kind": "property",
          "type": "string",
          "signature": "readonly seriesId: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "seriesName",
          "kind": "property",
          "type": "string",
          "signature": "readonly seriesName: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "index",
          "kind": "property",
          "type": "number",
          "signature": "readonly index: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WEB_CHART_COLORS",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const WEB_CHART_COLORS: readonly [\n    \"#6366f1\",\n    \"#14b8a6\",\n    \"#f59e0b\",\n    \"#ec4899\",\n    \"#38bdf8\"\n];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "webChartColor",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function webChartColor(value: unknown, index?: number): string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "webChartSliceColor",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Distinct shades keep a circular series tied to its authored base color. */\nexport function webChartSliceColor(baseColor: string, index: number): string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "normalizeWebChartsConfiguration",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function normalizeWebChartsConfiguration(value: unknown): WebChartsConfiguration;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "webChartPointer",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Invalid pointers and missing properties never select a different value. */\nexport function webChartPointer(value: unknown, pointer: string): unknown;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "webChartPoints",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function webChartPoints(rows: readonly unknown[], configuration: WebChartSeriesConfiguration): readonly WebChartPoint[];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "formatWebChartValue",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function formatWebChartValue(value: number, configuration: WebChartsConfiguration): string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "freezeWebChartData",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function freezeWebChartData(value: readonly WebChartSeriesData[]): readonly WebChartSeriesData[];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebChartsRenderOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebChartsRenderOptions {\n    readonly interactive?: boolean;\n    readonly width?: number;\n    readonly height?: number;\n    readonly onPointClick?: (detail: WebChartPointEventDetail) => void;\n}",
      "members": [
        {
          "name": "interactive",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly interactive?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "width",
          "kind": "property",
          "type": "number",
          "signature": "readonly width?: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "height",
          "kind": "property",
          "type": "number",
          "signature": "readonly height?: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "onPointClick",
          "kind": "property",
          "type": "(detail: WebChartPointEventDetail) => void",
          "signature": "readonly onPointClick?: (detail: WebChartPointEventDetail) => void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "renderChartsSvg",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Shared SVG projection. It creates no subscriptions, observers or API requests. */\nexport function renderChartsSvg(document: Document, configuration: WebChartsConfiguration, data: readonly WebChartSeriesData[], options?: WebChartsRenderOptions): SVGSVGElement;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebChartPointEventHandler",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebChartPointEventHandler<TSender = WebCharts> = (sender: TSender, event: CustomEvent<WebChartPointEventDetail>) => void | Promise<void>;",
      "members": [],
      "typeParameters": [
        "TSender = WebCharts"
      ]
    },
    {
      "name": "WebCharts",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent"
      ],
      "source": "/** Responsive, accessible SVG charts whose API bindings observe completed requests. */\nexport class WebCharts extends WebComponent {\n    #private;\n    constructor(element: HTMLElement);\n    /** Persisted chart appearance and up to five declarative API series. */\n    get chartsConfig(): WebChartsConfiguration;\n    set chartsConfig(value: WebChartsConfiguration);\n    /** Current transient series. Values remain numeric and never enter the Project Model. */\n    get data(): readonly WebChartSeriesData[];\n    set data(value: readonly WebChartSeriesData[]);\n    get selectedLabel(): string | null;\n    get selectedValue(): number | null;\n    get selectedSeriesId(): string | null;\n    set onPointClick(handler: WebChartPointEventHandler<this> | null);\n    /** Clears displayed points; an existing binding can refresh after the next successful request. */\n    clear(): void;\n    /**\n     * Binds one configured series to a named API operation by stable operation ID.\n     * Reads existing successful data and subsequent results; never executes a request.\n     */\n    bindApiClient(apiClient: WebApiClient, operationId: string, seriesId: string): () => void;\n    dispose(): void;\n}",
      "publicSource": "/** Responsive, accessible SVG charts whose API bindings observe completed requests. */\nexport class WebCharts extends WebComponent {\n    constructor(element: HTMLElement);\n    /** Persisted chart appearance and up to five declarative API series. */\n    get chartsConfig(): WebChartsConfiguration;\n    set chartsConfig(value: WebChartsConfiguration);\n    /** Current transient series. Values remain numeric and never enter the Project Model. */\n    get data(): readonly WebChartSeriesData[];\n    set data(value: readonly WebChartSeriesData[]);\n    get selectedLabel(): string | null;\n    get selectedValue(): number | null;\n    get selectedSeriesId(): string | null;\n    set onPointClick(handler: WebChartPointEventHandler<this> | null);\n    /** Clears displayed points; an existing binding can refresh after the next successful request. */\n    clear(): void;\n    /**\n     * Binds one configured series to a named API operation by stable operation ID.\n     * Reads existing successful data and subsequent results; never executes a request.\n     */\n    bindApiClient(apiClient: WebApiClient, operationId: string, seriesId: string): () => void;\n    dispose(): void;\n}",
      "members": [
        {
          "name": "chartsConfig",
          "kind": "get",
          "type": "WebChartsConfiguration",
          "signature": "get chartsConfig(): WebChartsConfiguration;",
          "parameters": [],
          "description": "Persisted chart appearance and up to five declarative API series.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "data",
          "kind": "get",
          "type": "readonly WebChartSeriesData[]",
          "signature": "get data(): readonly WebChartSeriesData[];",
          "parameters": [],
          "description": "Current transient series. Values remain numeric and never enter the Project Model.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "selectedLabel",
          "kind": "get",
          "type": "string | null",
          "signature": "get selectedLabel(): string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "selectedValue",
          "kind": "get",
          "type": "number | null",
          "signature": "get selectedValue(): number | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "selectedSeriesId",
          "kind": "get",
          "type": "string | null",
          "signature": "get selectedSeriesId(): string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onPointClick",
          "kind": "set",
          "type": "WebChartPointEventHandler<this> | null",
          "signature": "set onPointClick(handler: WebChartPointEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebChartPointEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "clear",
          "kind": "method",
          "type": "void",
          "signature": "clear(): void;",
          "parameters": [],
          "description": "Clears displayed points; an existing binding can refresh after the next successful request.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "bindApiClient",
          "kind": "method",
          "type": "() => void",
          "signature": "bindApiClient(apiClient: WebApiClient, operationId: string, seriesId: string): () => void;",
          "parameters": [
            {
              "name": "apiClient",
              "type": "WebApiClient",
              "optional": false,
              "rest": false
            },
            {
              "name": "operationId",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "seriesId",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "Binds one configured series to a named API operation by stable operation ID.\nReads existing successful data and subsequent results; never executes a request.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoRuntimeConfiguration",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface RestGoRuntimeConfiguration {\n    readonly enabled: boolean;\n    readonly baseUrl: string;\n    readonly apiToken?: string;\n    readonly apiVersion: number;\n    readonly defaultDatabase: string;\n    readonly persistSession: boolean;\n    readonly sessionStorage: 'local' | 'session' | 'memory';\n    readonly storageKey: string;\n}",
      "members": [
        {
          "name": "enabled",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly enabled: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "baseUrl",
          "kind": "property",
          "type": "string",
          "signature": "readonly baseUrl: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "apiToken",
          "kind": "property",
          "type": "string",
          "signature": "readonly apiToken?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "apiVersion",
          "kind": "property",
          "type": "number",
          "signature": "readonly apiVersion: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "defaultDatabase",
          "kind": "property",
          "type": "string",
          "signature": "readonly defaultDatabase: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "persistSession",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly persistSession: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "sessionStorage",
          "kind": "property",
          "type": "'local' | 'session' | 'memory'",
          "signature": "readonly sessionStorage: 'local' | 'session' | 'memory';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "storageKey",
          "kind": "property",
          "type": "string",
          "signature": "readonly storageKey: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoNotConfiguredError",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "Error"
      ],
      "source": "export class RestGoNotConfiguredError extends Error {\n    constructor();\n}",
      "publicSource": "export class RestGoNotConfiguredError extends Error {\n    constructor();\n}",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "configureRestGo",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function configureRestGo(configuration: RestGoRuntimeConfiguration): import('@webrad/restgo-sdk').RestGoClient | null;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "getRestGoClient",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function getRestGoClient(): import('@webrad/restgo-sdk').RestGoClient;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGO",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const RestGO: import('@webrad/restgo-sdk').RestGoClient;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebComponentEventHandler",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "/** Handler used by every WebRAD component event. */\nexport type WebComponentEventHandler<TSender = WebComponent> = (sender: TSender, event: Event) => void | Promise<void>;",
      "members": [],
      "typeParameters": [
        "TSender = WebComponent"
      ]
    },
    {
      "name": "runtimeEventName",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Converts a WebRAD event name, such as OnClick, to its browser event name. */\nexport function runtimeEventName(eventName: string): string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebNonvisualComponentOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebNonvisualComponentOptions {\n    readonly id?: string;\n    readonly name?: string;\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "readonly id?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebNonvisualComponent",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [],
      "source": "/** Browser-safe identity shared by services that do not own a DOM element. */\nexport class WebNonvisualComponent {\n    constructor(options?: WebNonvisualComponentOptions);\n    readonly id: string;\n    readonly name: string;\n    bindEvent(eventName: string, handler: WebComponentEventHandler<this> | null): () => void;\n    emit(eventName: string, detail?: unknown): boolean;\n    dispose(): void;\n}",
      "publicSource": "/** Browser-safe identity shared by services that do not own a DOM element. */\nexport class WebNonvisualComponent {\n    constructor(options?: WebNonvisualComponentOptions);\n    readonly id: string;\n    readonly name: string;\n    bindEvent(eventName: string, handler: WebComponentEventHandler<this> | null): () => void;\n    emit(eventName: string, detail?: unknown): boolean;\n    dispose(): void;\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "readonly id: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "bindEvent",
          "kind": "method",
          "type": "() => void",
          "signature": "bindEvent(eventName: string, handler: WebComponentEventHandler<this> | null): () => void;",
          "parameters": [
            {
              "name": "eventName",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "emit",
          "kind": "method",
          "type": "boolean",
          "signature": "emit(eventName: string, detail?: unknown): boolean;",
          "parameters": [
            {
              "name": "eventName",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "detail",
              "type": "unknown",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WEB_DATA_GRID_CELL_KINDS",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const WEB_DATA_GRID_CELL_KINDS: readonly [\n    'text',\n    'image',\n    'button',\n    'checkbox',\n    'toggle'\n];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebDataGridCellKind",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebDataGridCellKind = (typeof WEB_DATA_GRID_CELL_KINDS)[number];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WEB_DATA_GRID_COLUMN_WIDTH_MODES",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const WEB_DATA_GRID_COLUMN_WIDTH_MODES: readonly [\n    'fixed',\n    'dynamic'\n];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebDataGridColumnWidthMode",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebDataGridColumnWidthMode = (typeof WEB_DATA_GRID_COLUMN_WIDTH_MODES)[number];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WEB_DATA_GRID_ROW_HEIGHT_MODES",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const WEB_DATA_GRID_ROW_HEIGHT_MODES: readonly [\n    'fixed',\n    'dynamic'\n];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebDataGridRowHeightMode",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebDataGridRowHeightMode = (typeof WEB_DATA_GRID_ROW_HEIGHT_MODES)[number];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WEB_DATA_GRID_HORIZONTAL_ALIGNMENTS",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const WEB_DATA_GRID_HORIZONTAL_ALIGNMENTS: readonly [\n    'start',\n    'center',\n    'end'\n];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebDataGridHorizontalAlignment",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebDataGridHorizontalAlignment = (typeof WEB_DATA_GRID_HORIZONTAL_ALIGNMENTS)[number];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebDataGridColumn",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebDataGridColumn {\n    readonly id: string;\n    readonly header: string;\n    readonly fieldPath: string;\n    readonly cellKind: WebDataGridCellKind;\n    readonly fixedCaption: string;\n    readonly buttonIcon: WebButtonIcon | null;\n    readonly footer: string;\n    readonly widthMode: WebDataGridColumnWidthMode;\n    readonly width: number;\n    readonly minWidth: number;\n    readonly maxWidth: number | null;\n    readonly flex: number;\n    readonly headerAlign: WebDataGridHorizontalAlignment;\n    readonly cellAlign: WebDataGridHorizontalAlignment;\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "readonly id: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "header",
          "kind": "property",
          "type": "string",
          "signature": "readonly header: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fieldPath",
          "kind": "property",
          "type": "string",
          "signature": "readonly fieldPath: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "cellKind",
          "kind": "property",
          "type": "WebDataGridCellKind",
          "signature": "readonly cellKind: WebDataGridCellKind;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fixedCaption",
          "kind": "property",
          "type": "string",
          "signature": "readonly fixedCaption: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "buttonIcon",
          "kind": "property",
          "type": "WebButtonIcon | null",
          "signature": "readonly buttonIcon: WebButtonIcon | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "footer",
          "kind": "property",
          "type": "string",
          "signature": "readonly footer: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "widthMode",
          "kind": "property",
          "type": "WebDataGridColumnWidthMode",
          "signature": "readonly widthMode: WebDataGridColumnWidthMode;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "width",
          "kind": "property",
          "type": "number",
          "signature": "readonly width: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "minWidth",
          "kind": "property",
          "type": "number",
          "signature": "readonly minWidth: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "maxWidth",
          "kind": "property",
          "type": "number | null",
          "signature": "readonly maxWidth: number | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "flex",
          "kind": "property",
          "type": "number",
          "signature": "readonly flex: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "headerAlign",
          "kind": "property",
          "type": "WebDataGridHorizontalAlignment",
          "signature": "readonly headerAlign: WebDataGridHorizontalAlignment;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "cellAlign",
          "kind": "property",
          "type": "WebDataGridHorizontalAlignment",
          "signature": "readonly cellAlign: WebDataGridHorizontalAlignment;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebDataGridConfiguration",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebDataGridConfiguration {\n    readonly schemaVersion: number;\n    readonly apiClientId: string | null;\n    readonly operationId: string | null;\n    readonly listPath: string;\n    readonly columnCount: number;\n    readonly showHeader: boolean;\n    readonly stickyHeader: boolean;\n    readonly showFooter: boolean;\n    readonly stickyFooter: boolean;\n    readonly rowHeightMode: WebDataGridRowHeightMode;\n    readonly fixedRowHeight: number;\n    readonly minRowHeight: number;\n    readonly maxRowHeight: number | null;\n    readonly cellPaddingHorizontal: number;\n    readonly cellPaddingVertical: number;\n    readonly wrapText: boolean;\n    readonly stripedRows: boolean;\n    readonly showHorizontalLines: boolean;\n    readonly showVerticalLines: boolean;\n    readonly emptyMessage: string;\n    readonly columns: readonly WebDataGridColumn[];\n}",
      "members": [
        {
          "name": "schemaVersion",
          "kind": "property",
          "type": "number",
          "signature": "readonly schemaVersion: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "apiClientId",
          "kind": "property",
          "type": "string | null",
          "signature": "readonly apiClientId: string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "operationId",
          "kind": "property",
          "type": "string | null",
          "signature": "readonly operationId: string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "listPath",
          "kind": "property",
          "type": "string",
          "signature": "readonly listPath: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "columnCount",
          "kind": "property",
          "type": "number",
          "signature": "readonly columnCount: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "showHeader",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly showHeader: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "stickyHeader",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly stickyHeader: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "showFooter",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly showFooter: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "stickyFooter",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly stickyFooter: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "rowHeightMode",
          "kind": "property",
          "type": "WebDataGridRowHeightMode",
          "signature": "readonly rowHeightMode: WebDataGridRowHeightMode;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fixedRowHeight",
          "kind": "property",
          "type": "number",
          "signature": "readonly fixedRowHeight: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "minRowHeight",
          "kind": "property",
          "type": "number",
          "signature": "readonly minRowHeight: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "maxRowHeight",
          "kind": "property",
          "type": "number | null",
          "signature": "readonly maxRowHeight: number | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "cellPaddingHorizontal",
          "kind": "property",
          "type": "number",
          "signature": "readonly cellPaddingHorizontal: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "cellPaddingVertical",
          "kind": "property",
          "type": "number",
          "signature": "readonly cellPaddingVertical: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "wrapText",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly wrapText: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "stripedRows",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly stripedRows: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "showHorizontalLines",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly showHorizontalLines: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "showVerticalLines",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly showVerticalLines: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "emptyMessage",
          "kind": "property",
          "type": "string",
          "signature": "readonly emptyMessage: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "columns",
          "kind": "property",
          "type": "readonly WebDataGridColumn[]",
          "signature": "readonly columns: readonly WebDataGridColumn[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebDataGridRowValues",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebDataGridRowValues<TRow = unknown> = Readonly<TRow> & {\n    <T = unknown>(fieldNameOrPath: string): T | undefined;\n};",
      "members": [],
      "typeParameters": [
        "TRow = unknown"
      ]
    },
    {
      "name": "WebDataGridCellEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebDataGridCellEventDetail<TRow = unknown> {\n    readonly rowIndex: number;\n    readonly columnIndex: number;\n    readonly row: TRow;\n    readonly column: WebDataGridColumn;\n    readonly value: unknown;\n    readonly getValue: WebDataGridRowValues<TRow>;\n}",
      "members": [
        {
          "name": "rowIndex",
          "kind": "property",
          "type": "number",
          "signature": "readonly rowIndex: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "columnIndex",
          "kind": "property",
          "type": "number",
          "signature": "readonly columnIndex: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "row",
          "kind": "property",
          "type": "TRow",
          "signature": "readonly row: TRow;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "column",
          "kind": "property",
          "type": "WebDataGridColumn",
          "signature": "readonly column: WebDataGridColumn;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "value",
          "kind": "property",
          "type": "unknown",
          "signature": "readonly value: unknown;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "getValue",
          "kind": "property",
          "type": "WebDataGridRowValues<TRow>",
          "signature": "readonly getValue: WebDataGridRowValues<TRow>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": [
        "TRow = unknown"
      ]
    },
    {
      "name": "normalizeWebDataGridConfiguration",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function normalizeWebDataGridConfiguration(value: unknown): WebDataGridConfiguration;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebDataGrid",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent<HTMLDivElement>"
      ],
      "source": "export class WebDataGrid extends WebComponent<HTMLDivElement> {\n    constructor(element: HTMLElement);\n    configuration: WebDataGridConfiguration;\n    dataGridConfig: WebDataGridConfiguration;\n    bindApiClient(apiClient: WebApiClient | null): void;\n}",
      "publicSource": "export class WebDataGrid extends WebComponent<HTMLDivElement> {\n    constructor(element: HTMLElement);\n    configuration: WebDataGridConfiguration;\n    dataGridConfig: WebDataGridConfiguration;\n    bindApiClient(apiClient: WebApiClient | null): void;\n}",
      "members": [
        {
          "name": "configuration",
          "kind": "property",
          "type": "WebDataGridConfiguration",
          "signature": "configuration: WebDataGridConfiguration;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "dataGridConfig",
          "kind": "property",
          "type": "WebDataGridConfiguration",
          "signature": "dataGridConfig: WebDataGridConfiguration;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "bindApiClient",
          "kind": "method",
          "type": "void",
          "signature": "bindApiClient(apiClient: WebApiClient | null): void;",
          "parameters": [
            {
              "name": "apiClient",
              "type": "WebApiClient | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebCurrentRowBinding",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "/** Base browser-side wrapper shared by every visual WebRAD component. */\nexport interface WebCurrentRowBinding {\n    readonly property: string;\n    readonly fieldPath: string;\n}",
      "members": [
        {
          "name": "property",
          "kind": "property",
          "type": "string",
          "signature": "readonly property: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fieldPath",
          "kind": "property",
          "type": "string",
          "signature": "readonly fieldPath: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebComponent",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [],
      "source": "export class WebComponent<TElement extends HTMLElement = HTMLElement> {\n    currentRowBindings: readonly WebCurrentRowBinding[];\n    readonly element: TElement;\n    constructor(element: TElement);\n    readonly id: string;\n    readonly name: string;\n    visible: boolean;\n    collapseWhenHidden: boolean;\n    enabled: boolean;\n    x: number;\n    y: number;\n    width: number;\n    height: number;\n    /** Outer spacing on all four sides, in pixels. */\n    margin: number;\n    marginTop: number;\n    marginRight: number;\n    marginBottom: number;\n    marginLeft: number;\n    alignSelf: RuntimeLayoutAlignSelf;\n    tabIndex: number;\n    backgroundColor: string;\n    color: string;\n    borderColor: string;\n    focus(options?: FocusOptions): void;\n    show(): void;\n    hide(): void;\n    bindEvent(eventName: string, handler: WebComponentEventHandler<this> | null): () => void;\n    emit(eventName: string, detail?: unknown): boolean;\n    dispose(): void;\n}",
      "publicSource": "export class WebComponent<TElement extends HTMLElement = HTMLElement> {\n    currentRowBindings: readonly WebCurrentRowBinding[];\n    readonly element: TElement;\n    constructor(element: TElement);\n    readonly id: string;\n    readonly name: string;\n    visible: boolean;\n    collapseWhenHidden: boolean;\n    enabled: boolean;\n    x: number;\n    y: number;\n    width: number;\n    height: number;\n    /** Outer spacing on all four sides, in pixels. */\n    margin: number;\n    marginTop: number;\n    marginRight: number;\n    marginBottom: number;\n    marginLeft: number;\n    alignSelf: RuntimeLayoutAlignSelf;\n    tabIndex: number;\n    backgroundColor: string;\n    color: string;\n    borderColor: string;\n    focus(options?: FocusOptions): void;\n    show(): void;\n    hide(): void;\n    bindEvent(eventName: string, handler: WebComponentEventHandler<this> | null): () => void;\n    emit(eventName: string, detail?: unknown): boolean;\n    dispose(): void;\n}",
      "members": [
        {
          "name": "currentRowBindings",
          "kind": "property",
          "type": "readonly WebCurrentRowBinding[]",
          "signature": "currentRowBindings: readonly WebCurrentRowBinding[];",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "element",
          "kind": "property",
          "type": "TElement",
          "signature": "readonly element: TElement;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "readonly id: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "visible",
          "kind": "property",
          "type": "boolean",
          "signature": "visible: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "collapseWhenHidden",
          "kind": "property",
          "type": "boolean",
          "signature": "collapseWhenHidden: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "enabled",
          "kind": "property",
          "type": "boolean",
          "signature": "enabled: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "x",
          "kind": "property",
          "type": "number",
          "signature": "x: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "y",
          "kind": "property",
          "type": "number",
          "signature": "y: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "width",
          "kind": "property",
          "type": "number",
          "signature": "width: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "height",
          "kind": "property",
          "type": "number",
          "signature": "height: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "margin",
          "kind": "property",
          "type": "number",
          "signature": "margin: number;",
          "parameters": [],
          "description": "Outer spacing on all four sides, in pixels.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "marginTop",
          "kind": "property",
          "type": "number",
          "signature": "marginTop: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "marginRight",
          "kind": "property",
          "type": "number",
          "signature": "marginRight: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "marginBottom",
          "kind": "property",
          "type": "number",
          "signature": "marginBottom: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "marginLeft",
          "kind": "property",
          "type": "number",
          "signature": "marginLeft: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "alignSelf",
          "kind": "property",
          "type": "RuntimeLayoutAlignSelf",
          "signature": "alignSelf: RuntimeLayoutAlignSelf;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "tabIndex",
          "kind": "property",
          "type": "number",
          "signature": "tabIndex: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "backgroundColor",
          "kind": "property",
          "type": "string",
          "signature": "backgroundColor: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "color",
          "kind": "property",
          "type": "string",
          "signature": "color: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "borderColor",
          "kind": "property",
          "type": "string",
          "signature": "borderColor: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "focus",
          "kind": "method",
          "type": "void",
          "signature": "focus(options?: FocusOptions): void;",
          "parameters": [
            {
              "name": "options",
              "type": "FocusOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "show",
          "kind": "method",
          "type": "void",
          "signature": "show(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "hide",
          "kind": "method",
          "type": "void",
          "signature": "hide(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "bindEvent",
          "kind": "method",
          "type": "() => void",
          "signature": "bindEvent(eventName: string, handler: WebComponentEventHandler<this> | null): () => void;",
          "parameters": [
            {
              "name": "eventName",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "emit",
          "kind": "method",
          "type": "boolean",
          "signature": "emit(eventName: string, detail?: unknown): boolean;",
          "parameters": [
            {
              "name": "eventName",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "detail",
              "type": "unknown",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": [
        "TElement extends HTMLElement = HTMLElement"
      ]
    },
    {
      "name": "WebPanelBackgroundSize",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "/** Visual container used to group controls. */\nexport type WebPanelBackgroundSize = 'cover' | 'contain' | 'auto' | 'stretch';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebPanelBackgroundPosition",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebPanelBackgroundPosition = 'center' | 'top' | 'bottom' | 'left' | 'right' | 'left top' | 'right top' | 'left bottom' | 'right bottom';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebPanelBackgroundRepeat",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebPanelBackgroundRepeat = 'no-repeat' | 'repeat' | 'repeat-x' | 'repeat-y';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "PANEL_BACKGROUND_SIZES",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const PANEL_BACKGROUND_SIZES: readonly [\n    'cover',\n    'contain',\n    'auto',\n    'stretch'\n];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "PANEL_BACKGROUND_POSITIONS",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const PANEL_BACKGROUND_POSITIONS: readonly [\n    'center',\n    'top',\n    'bottom',\n    'left',\n    'right',\n    'left top',\n    'right top',\n    'left bottom',\n    'right bottom'\n];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "PANEL_BACKGROUND_REPEATS",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const PANEL_BACKGROUND_REPEATS: readonly [\n    'no-repeat',\n    'repeat',\n    'repeat-x',\n    'repeat-y'\n];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebPanel",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent<HTMLElement>"
      ],
      "source": "export class WebPanel extends WebComponent<HTMLElement> {\n    aspectRatio: WebAspectRatio;\n    floatingAlignment: WebPanelFloatingAlignment;\n    placement: 'in-flow' | 'floating';\n    floatingHorizontalAnchor: 'left' | 'center' | 'right';\n    floatingVerticalAnchor: 'top' | 'center' | 'bottom';\n    floatingZIndex: number;\n    caption: string;\n    progressEnabled: boolean;\n    progressValue: number;\n    readonly progressVisible: boolean;\n    backgroundImage: string;\n    backgroundSize: WebPanelBackgroundSize;\n    backgroundPosition: WebPanelBackgroundPosition;\n    backgroundRepeat: WebPanelBackgroundRepeat;\n}",
      "publicSource": "export class WebPanel extends WebComponent<HTMLElement> {\n    aspectRatio: WebAspectRatio;\n    floatingAlignment: WebPanelFloatingAlignment;\n    placement: 'in-flow' | 'floating';\n    floatingHorizontalAnchor: 'left' | 'center' | 'right';\n    floatingVerticalAnchor: 'top' | 'center' | 'bottom';\n    floatingZIndex: number;\n    caption: string;\n    progressEnabled: boolean;\n    progressValue: number;\n    readonly progressVisible: boolean;\n    backgroundImage: string;\n    backgroundSize: WebPanelBackgroundSize;\n    backgroundPosition: WebPanelBackgroundPosition;\n    backgroundRepeat: WebPanelBackgroundRepeat;\n}",
      "members": [
        {
          "name": "aspectRatio",
          "kind": "property",
          "type": "WebAspectRatio",
          "signature": "aspectRatio: WebAspectRatio;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "floatingAlignment",
          "kind": "property",
          "type": "WebPanelFloatingAlignment",
          "signature": "floatingAlignment: WebPanelFloatingAlignment;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "placement",
          "kind": "property",
          "type": "'in-flow' | 'floating'",
          "signature": "placement: 'in-flow' | 'floating';",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "floatingHorizontalAnchor",
          "kind": "property",
          "type": "'left' | 'center' | 'right'",
          "signature": "floatingHorizontalAnchor: 'left' | 'center' | 'right';",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "floatingVerticalAnchor",
          "kind": "property",
          "type": "'top' | 'center' | 'bottom'",
          "signature": "floatingVerticalAnchor: 'top' | 'center' | 'bottom';",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "floatingZIndex",
          "kind": "property",
          "type": "number",
          "signature": "floatingZIndex: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "caption",
          "kind": "property",
          "type": "string",
          "signature": "caption: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "progressEnabled",
          "kind": "property",
          "type": "boolean",
          "signature": "progressEnabled: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "progressValue",
          "kind": "property",
          "type": "number",
          "signature": "progressValue: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "progressVisible",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly progressVisible: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "backgroundImage",
          "kind": "property",
          "type": "string",
          "signature": "backgroundImage: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "backgroundSize",
          "kind": "property",
          "type": "WebPanelBackgroundSize",
          "signature": "backgroundSize: WebPanelBackgroundSize;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "backgroundPosition",
          "kind": "property",
          "type": "WebPanelBackgroundPosition",
          "signature": "backgroundPosition: WebPanelBackgroundPosition;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "backgroundRepeat",
          "kind": "property",
          "type": "WebPanelBackgroundRepeat",
          "signature": "backgroundRepeat: WebPanelBackgroundRepeat;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebGroup",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebPanel"
      ],
      "source": "export class WebGroup extends WebPanel {\n}",
      "publicSource": "export class WebGroup extends WebPanel {\n}",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebPopup",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent<HTMLDialogElement>"
      ],
      "source": "/** Browser-native floating child container that can be shown or closed from page code. */\nexport class WebPopup extends WebComponent<HTMLDialogElement> {\n    constructor(element: HTMLElement);\n    modal: boolean;\n    readonly open: boolean;\n    returnValue: string;\n    show(): void;\n    hide(): void;\n    close(returnValue?: string): void;\n}",
      "publicSource": "/** Browser-native floating child container that can be shown or closed from page code. */\nexport class WebPopup extends WebComponent<HTMLDialogElement> {\n    constructor(element: HTMLElement);\n    modal: boolean;\n    readonly open: boolean;\n    returnValue: string;\n    show(): void;\n    hide(): void;\n    close(returnValue?: string): void;\n}",
      "members": [
        {
          "name": "modal",
          "kind": "property",
          "type": "boolean",
          "signature": "modal: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "open",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly open: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "returnValue",
          "kind": "property",
          "type": "string",
          "signature": "returnValue: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "show",
          "kind": "method",
          "type": "void",
          "signature": "show(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "hide",
          "kind": "method",
          "type": "void",
          "signature": "hide(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "close",
          "kind": "method",
          "type": "void",
          "signature": "close(returnValue?: string): void;",
          "parameters": [
            {
              "name": "returnValue",
              "type": "string",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebReusableElement",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebPanel"
      ],
      "source": "/** One instance of a shared reusable component definition. */\nexport class WebReusableElement extends WebPanel {\n    reusableElementId: string;\n}",
      "publicSource": "/** One instance of a shared reusable component definition. */\nexport class WebReusableElement extends WebPanel {\n    reusableElementId: string;\n}",
      "members": [
        {
          "name": "reusableElementId",
          "kind": "property",
          "type": "string",
          "signature": "reusableElementId: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "ClosePageOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface ClosePageOptions {\n    /** Remove the page element from the document instead of hiding it. */\n    readonly remove?: boolean;\n}",
      "members": [
        {
          "name": "remove",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly remove?: boolean;",
          "parameters": [],
          "description": "Remove the page element from the document instead of hiding it.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RuntimeContainerLayoutMode",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type RuntimeContainerLayoutMode = 'fixed' | 'align-to-parent' | 'row' | 'column';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RuntimeLayoutItemSizingMode",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type RuntimeLayoutItemSizingMode = 'fixed' | 'stretch' | 'fit-content';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RuntimeLayoutAnchor",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type RuntimeLayoutAnchor = 'start' | 'center' | 'end' | 'stretch';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RuntimeLayoutJustifyContent",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type RuntimeLayoutJustifyContent = 'start' | 'center' | 'end' | 'space-between' | 'space-around';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RuntimeLayoutAlignItems",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type RuntimeLayoutAlignItems = 'start' | 'center' | 'end' | 'stretch';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RuntimeLayoutAlignSelf",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type RuntimeLayoutAlignSelf = 'auto' | RuntimeLayoutAlignItems;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RuntimeContainerLayout",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface RuntimeContainerLayout {\n    readonly mode: RuntimeContainerLayoutMode;\n    readonly paddingTop: number;\n    readonly paddingRight: number;\n    readonly paddingBottom: number;\n    readonly paddingLeft: number;\n    readonly gap: number;\n    readonly wrap: boolean;\n    readonly justifyContent: RuntimeLayoutJustifyContent;\n    readonly alignItems: RuntimeLayoutAlignItems;\n}",
      "members": [
        {
          "name": "mode",
          "kind": "property",
          "type": "RuntimeContainerLayoutMode",
          "signature": "readonly mode: RuntimeContainerLayoutMode;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "paddingTop",
          "kind": "property",
          "type": "number",
          "signature": "readonly paddingTop: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "paddingRight",
          "kind": "property",
          "type": "number",
          "signature": "readonly paddingRight: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "paddingBottom",
          "kind": "property",
          "type": "number",
          "signature": "readonly paddingBottom: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "paddingLeft",
          "kind": "property",
          "type": "number",
          "signature": "readonly paddingLeft: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "gap",
          "kind": "property",
          "type": "number",
          "signature": "readonly gap: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "wrap",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly wrap: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "justifyContent",
          "kind": "property",
          "type": "RuntimeLayoutJustifyContent",
          "signature": "readonly justifyContent: RuntimeLayoutJustifyContent;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "alignItems",
          "kind": "property",
          "type": "RuntimeLayoutAlignItems",
          "signature": "readonly alignItems: RuntimeLayoutAlignItems;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RuntimeLayoutItem",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface RuntimeLayoutItem {\n    readonly width: RuntimeLayoutItemSizingMode;\n    readonly height: RuntimeLayoutItemSizingMode;\n    readonly minWidth: number;\n    readonly maxWidth: number | null;\n    readonly minHeight: number;\n    readonly maxHeight: number | null;\n    readonly grow: number;\n    readonly shrink: boolean;\n    readonly alignSelf?: RuntimeLayoutAlignSelf;\n    readonly horizontalAnchor: RuntimeLayoutAnchor;\n    readonly verticalAnchor: RuntimeLayoutAnchor;\n    readonly left: number;\n    readonly right: number;\n    readonly top: number;\n    readonly bottom: number;\n}",
      "members": [
        {
          "name": "width",
          "kind": "property",
          "type": "RuntimeLayoutItemSizingMode",
          "signature": "readonly width: RuntimeLayoutItemSizingMode;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "height",
          "kind": "property",
          "type": "RuntimeLayoutItemSizingMode",
          "signature": "readonly height: RuntimeLayoutItemSizingMode;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "minWidth",
          "kind": "property",
          "type": "number",
          "signature": "readonly minWidth: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "maxWidth",
          "kind": "property",
          "type": "number | null",
          "signature": "readonly maxWidth: number | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "minHeight",
          "kind": "property",
          "type": "number",
          "signature": "readonly minHeight: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "maxHeight",
          "kind": "property",
          "type": "number | null",
          "signature": "readonly maxHeight: number | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "grow",
          "kind": "property",
          "type": "number",
          "signature": "readonly grow: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "shrink",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly shrink: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "alignSelf",
          "kind": "property",
          "type": "RuntimeLayoutAlignSelf",
          "signature": "readonly alignSelf?: RuntimeLayoutAlignSelf;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "horizontalAnchor",
          "kind": "property",
          "type": "RuntimeLayoutAnchor",
          "signature": "readonly horizontalAnchor: RuntimeLayoutAnchor;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "verticalAnchor",
          "kind": "property",
          "type": "RuntimeLayoutAnchor",
          "signature": "readonly verticalAnchor: RuntimeLayoutAnchor;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "left",
          "kind": "property",
          "type": "number",
          "signature": "readonly left: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "right",
          "kind": "property",
          "type": "number",
          "signature": "readonly right: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "top",
          "kind": "property",
          "type": "number",
          "signature": "readonly top: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "bottom",
          "kind": "property",
          "type": "number",
          "signature": "readonly bottom: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RuntimeComponentLayout",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface RuntimeComponentLayout {\n    readonly container: RuntimeContainerLayout;\n    readonly item: RuntimeLayoutItem;\n}",
      "members": [
        {
          "name": "container",
          "kind": "property",
          "type": "RuntimeContainerLayout",
          "signature": "readonly container: RuntimeContainerLayout;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "item",
          "kind": "property",
          "type": "RuntimeLayoutItem",
          "signature": "readonly item: RuntimeLayoutItem;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RuntimeLayoutBounds",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface RuntimeLayoutBounds {\n    readonly x: number;\n    readonly y: number;\n    readonly width: number;\n    readonly height: number;\n}",
      "members": [
        {
          "name": "x",
          "kind": "property",
          "type": "number",
          "signature": "readonly x: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "y",
          "kind": "property",
          "type": "number",
          "signature": "readonly y: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "width",
          "kind": "property",
          "type": "number",
          "signature": "readonly width: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "height",
          "kind": "property",
          "type": "number",
          "signature": "readonly height: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RuntimeLayoutNode",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "/** Structural node subset accepted by the browser-safe layout projector. */\nexport interface RuntimeLayoutNode {\n    readonly type?: string;\n    readonly bounds: RuntimeLayoutBounds;\n    readonly children?: readonly string[];\n    readonly props?: Readonly<Record<string, unknown>>;\n    readonly layout?: RuntimeComponentLayout;\n}",
      "members": [
        {
          "name": "type",
          "kind": "property",
          "type": "string",
          "signature": "readonly type?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "bounds",
          "kind": "property",
          "type": "RuntimeLayoutBounds",
          "signature": "readonly bounds: RuntimeLayoutBounds;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "children",
          "kind": "property",
          "type": "readonly string[]",
          "signature": "readonly children?: readonly string[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "props",
          "kind": "property",
          "type": "Readonly<Record<string, unknown>>",
          "signature": "readonly props?: Readonly<Record<string, unknown>>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "layout",
          "kind": "property",
          "type": "RuntimeComponentLayout",
          "signature": "readonly layout?: RuntimeComponentLayout;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RuntimeLayoutProjection",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface RuntimeLayoutProjection {\n    readonly container: Readonly<Record<string, string>>;\n    readonly item: Readonly<Record<string, string>>;\n}",
      "members": [
        {
          "name": "container",
          "kind": "property",
          "type": "Readonly<Record<string, string>>",
          "signature": "readonly container: Readonly<Record<string, string>>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "item",
          "kind": "property",
          "type": "Readonly<Record<string, string>>",
          "signature": "readonly item: Readonly<Record<string, string>>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "ApplyRuntimeLayoutOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface ApplyRuntimeLayoutOptions {\n    readonly isPageRoot?: boolean;\n    readonly isReusableRoot?: boolean;\n    readonly reusableRootFitContent?: {\n        readonly width: boolean;\n        readonly height: boolean;\n        readonly hasMaxWidth: boolean;\n        readonly hasMaxHeight: boolean;\n    };\n}",
      "members": [
        {
          "name": "isPageRoot",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly isPageRoot?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "isReusableRoot",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly isReusableRoot?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "reusableRootFitContent",
          "kind": "property",
          "type": "{\n      readonly width: boolean;\n      readonly height: boolean;\n      readonly hasMaxWidth: boolean;\n      readonly hasMaxHeight: boolean;\n    }",
          "signature": "readonly reusableRootFitContent?: {\n    readonly width: boolean;\n    readonly height: boolean;\n    readonly hasMaxWidth: boolean;\n    readonly hasMaxHeight: boolean;\n};",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RuntimeFitContentSize",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface RuntimeFitContentSize {\n    readonly width?: number;\n    readonly height?: number;\n}",
      "members": [
        {
          "name": "width",
          "kind": "property",
          "type": "number",
          "signature": "readonly width?: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "height",
          "kind": "property",
          "type": "number",
          "signature": "readonly height?: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RuntimeFitContentMeasurementOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface RuntimeFitContentMeasurementOptions {\n    readonly scale?: number;\n    readonly isLayoutChild?: (child: HTMLElement) => boolean;\n}",
      "members": [
        {
          "name": "scale",
          "kind": "property",
          "type": "number",
          "signature": "readonly scale?: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "isLayoutChild",
          "kind": "property",
          "type": "(child: HTMLElement) => boolean",
          "signature": "readonly isLayoutChild?: (child: HTMLElement) => boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RuntimeFitContentBinding",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface RuntimeFitContentBinding {\n    refresh(): void;\n    dispose(): void;\n}",
      "members": [
        {
          "name": "refresh",
          "kind": "method",
          "type": "void",
          "signature": "refresh(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "resolveRuntimeContainerLayout",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function resolveRuntimeContainerLayout(layout: RuntimeComponentLayout | undefined): RuntimeContainerLayout;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "isFloatingLayoutNode",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function isFloatingLayoutNode(node: RuntimeLayoutNode): boolean;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebPanelFloatingAlignment",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebPanelFloatingAlignment = 'none' | 'top' | 'bottom' | 'left' | 'right' | 'client';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "getFloatingPanelAlignment",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function getFloatingPanelAlignment(node: Pick<RuntimeLayoutNode, 'type' | 'props'>): WebPanelFloatingAlignment;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "projectFloatingPanelBounds",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function projectFloatingPanelBounds(node: RuntimeLayoutNode, pageSize: Pick<RuntimeLayoutBounds, 'width' | 'height'>): RuntimeLayoutBounds | undefined;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "projectRuntimeLayout",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function projectRuntimeLayout(node: RuntimeLayoutNode, parentContainer?: RuntimeContainerLayout): RuntimeLayoutProjection;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "setRuntimeLayoutAspectRatio",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function setRuntimeLayoutAspectRatio(element: HTMLElement, ratio: WebAspectRatio): void;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WEB_ASPECT_RATIOS",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const WEB_ASPECT_RATIOS: readonly [\n    'none',\n    '1:1',\n    '4:3',\n    '3:4',\n    '16:9',\n    '9:16'\n];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebAspectRatio",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebAspectRatio = (typeof WEB_ASPECT_RATIOS)[number];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "normalizeWebAspectRatio",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function normalizeWebAspectRatio(value: unknown): WebAspectRatio;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "getRuntimeLayoutAspectRatio",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function getRuntimeLayoutAspectRatio(element: HTMLElement): WebAspectRatio;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RuntimeLayoutNodeProjector",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type RuntimeLayoutNodeProjector = (node: RuntimeLayoutNode) => RuntimeLayoutNode;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "setRuntimeLayoutProjection",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function setRuntimeLayoutProjection(element: HTMLElement, projector: RuntimeLayoutNodeProjector | null): boolean;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "measureRuntimeFitContentSize",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function measureRuntimeFitContentSize(target: HTMLElement, contentHost: HTMLElement, layout: RuntimeComponentLayout | undefined, options?: RuntimeFitContentMeasurementOptions): RuntimeFitContentSize;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "bindRuntimeFitContent",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function bindRuntimeFitContent(target: HTMLElement, contentHost: HTMLElement, layout: RuntimeComponentLayout | undefined, options?: RuntimeFitContentMeasurementOptions): RuntimeFitContentBinding;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "applyRuntimeContainerLayout",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function applyRuntimeContainerLayout(element: HTMLElement, node: RuntimeLayoutNode): RuntimeLayoutProjection;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "applyRuntimeLayout",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function applyRuntimeLayout(element: HTMLElement, node: RuntimeLayoutNode, parentContainer?: RuntimeContainerLayout, options?: ApplyRuntimeLayoutOptions): RuntimeLayoutProjection;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebPageLayoutMode",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebPageLayoutMode = RuntimeContainerLayoutMode;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebComponentScope",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebPanel"
      ],
      "source": "/** Shared event-binding and component lookup surface for authored scopes. */\nexport class WebComponentScope extends WebPanel {\n    constructor(element: HTMLElement, components?: ReadonlyMap<string, WebComponent>);\n    requireComponentElement(componentId: string): HTMLElement;\n    protected bindGeneratedEvent(component: WebComponent | WebNonvisualComponent, eventName: string, handlerName: string, currentRow?: WebRepeatingGroupCurrentRow): () => void;\n    dispose(): void;\n}",
      "publicSource": "/** Shared event-binding and component lookup surface for authored scopes. */\nexport class WebComponentScope extends WebPanel {\n    constructor(element: HTMLElement, components?: ReadonlyMap<string, WebComponent>);\n    requireComponentElement(componentId: string): HTMLElement;\n    dispose(): void;\n}",
      "members": [
        {
          "name": "requireComponentElement",
          "kind": "method",
          "type": "HTMLElement",
          "signature": "requireComponentElement(componentId: string): HTMLElement;",
          "parameters": [
            {
              "name": "componentId",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebReusableElementInstance",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponentScope"
      ],
      "source": "/** One isolated authored-code scope for a mounted reusable placement. */\nexport class WebReusableElementInstance extends WebComponentScope {\n    constructor(element: HTMLElement, instanceId: string, components: ReadonlyMap<string, WebComponent>, componentIds: ReadonlyMap<string, string>);\n    readonly instanceId: string;\n    /** User-facing name of the page that contains this reusable placement. */\n    readonly pageName: string;\n    componentId(templateComponentId: string): string;\n}",
      "publicSource": "/** One isolated authored-code scope for a mounted reusable placement. */\nexport class WebReusableElementInstance extends WebComponentScope {\n    constructor(element: HTMLElement, instanceId: string, components: ReadonlyMap<string, WebComponent>, componentIds: ReadonlyMap<string, string>);\n    readonly instanceId: string;\n    /** User-facing name of the page that contains this reusable placement. */\n    readonly pageName: string;\n    componentId(templateComponentId: string): string;\n}",
      "members": [
        {
          "name": "instanceId",
          "kind": "property",
          "type": "string",
          "signature": "readonly instanceId: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "pageName",
          "kind": "property",
          "type": "string",
          "signature": "readonly pageName: string;",
          "parameters": [],
          "description": "User-facing name of the page that contains this reusable placement.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "componentId",
          "kind": "method",
          "type": "string",
          "signature": "componentId(templateComponentId: string): string;",
          "parameters": [
            {
              "name": "templateComponentId",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPageLoginEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "/** Current user delivered when a shown page receives an authenticated session. */\nexport interface WebPageLoginEventDetail {\n    readonly user: import('@webrad/restgo-sdk').RestGoUser;\n    readonly restored: boolean;\n}",
      "members": [
        {
          "name": "user",
          "kind": "property",
          "type": "import('@webrad/restgo-sdk').RestGoUser",
          "signature": "readonly user: import('@webrad/restgo-sdk').RestGoUser;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "restored",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly restored: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPageLogoutEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebPageLogoutEventDetail {\n    readonly user: import('@webrad/restgo-sdk').RestGoUser;\n}",
      "members": [
        {
          "name": "user",
          "kind": "property",
          "type": "import('@webrad/restgo-sdk').RestGoUser",
          "signature": "readonly user: import('@webrad/restgo-sdk').RestGoUser;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPage",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponentScope"
      ],
      "source": "/** Base class for generated and user-authored pages. */\nexport class WebPage<Parameters extends object = object> extends WebComponentScope {\n    /** Browser tab title; blank values retain the application's original title. */\n    browserTitle: string;\n    readonly routePath: string;\n    readonly params: Readonly<Parameters>;\n    layoutMode: WebPageLayoutMode;\n    show(): void;\n    close(options?: ClosePageOptions): void;\n}",
      "publicSource": "/** Base class for generated and user-authored pages. */\nexport class WebPage<Parameters extends object = object> extends WebComponentScope {\n    /** Browser tab title; blank values retain the application's original title. */\n    browserTitle: string;\n    readonly routePath: string;\n    readonly params: Readonly<Parameters>;\n    layoutMode: WebPageLayoutMode;\n    show(): void;\n    close(options?: ClosePageOptions): void;\n}",
      "members": [
        {
          "name": "browserTitle",
          "kind": "property",
          "type": "string",
          "signature": "browserTitle: string;",
          "parameters": [],
          "description": "Browser tab title; blank values retain the application's original title.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "routePath",
          "kind": "property",
          "type": "string",
          "signature": "readonly routePath: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "params",
          "kind": "property",
          "type": "Readonly<Parameters>",
          "signature": "readonly params: Readonly<Parameters>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "layoutMode",
          "kind": "property",
          "type": "WebPageLayoutMode",
          "signature": "layoutMode: WebPageLayoutMode;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "show",
          "kind": "method",
          "type": "void",
          "signature": "show(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "close",
          "kind": "method",
          "type": "void",
          "signature": "close(options?: ClosePageOptions): void;",
          "parameters": [
            {
              "name": "options",
              "type": "ClosePageOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": [
        "Parameters extends object = object"
      ]
    },
    {
      "name": "WebLabelTextWrap",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebLabelTextWrap = 'none' | 'word' | 'break-word' | 'character';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebLabel",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent<HTMLElement>"
      ],
      "source": "export class WebLabel extends WebComponent<HTMLElement> {\n    textWrap: WebLabelTextWrap;\n    caption: string;\n    text: string;\n    autoSize: boolean;\n}",
      "publicSource": "export class WebLabel extends WebComponent<HTMLElement> {\n    textWrap: WebLabelTextWrap;\n    caption: string;\n    text: string;\n    autoSize: boolean;\n}",
      "members": [
        {
          "name": "textWrap",
          "kind": "property",
          "type": "WebLabelTextWrap",
          "signature": "textWrap: WebLabelTextWrap;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "caption",
          "kind": "property",
          "type": "string",
          "signature": "caption: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "text",
          "kind": "property",
          "type": "string",
          "signature": "text: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "autoSize",
          "kind": "property",
          "type": "boolean",
          "signature": "autoSize: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebTextArea",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent<HTMLTextAreaElement>"
      ],
      "source": "export class WebTextArea extends WebComponent<HTMLTextAreaElement> {\n    constructor(element: HTMLElement);\n    value: string;\n    placeholder: string;\n    readOnly: boolean;\n    rows: number;\n    spellCheck: boolean;\n    clear(): void;\n    set onChange(handler: WebComponentEventHandler<this> | null);\n    set onInput(handler: WebComponentEventHandler<this> | null);\n}",
      "publicSource": "export class WebTextArea extends WebComponent<HTMLTextAreaElement> {\n    constructor(element: HTMLElement);\n    value: string;\n    placeholder: string;\n    readOnly: boolean;\n    rows: number;\n    spellCheck: boolean;\n    clear(): void;\n    set onChange(handler: WebComponentEventHandler<this> | null);\n    set onInput(handler: WebComponentEventHandler<this> | null);\n}",
      "members": [
        {
          "name": "value",
          "kind": "property",
          "type": "string",
          "signature": "value: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "placeholder",
          "kind": "property",
          "type": "string",
          "signature": "placeholder: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "readOnly",
          "kind": "property",
          "type": "boolean",
          "signature": "readOnly: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "rows",
          "kind": "property",
          "type": "number",
          "signature": "rows: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "spellCheck",
          "kind": "property",
          "type": "boolean",
          "signature": "spellCheck: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "clear",
          "kind": "method",
          "type": "void",
          "signature": "clear(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onChange",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onChange(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onInput",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onInput(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebButtonIcon",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebButtonIcon = 'add' | 'chevron-down' | 'chevron-right' | 'close' | 'delete' | 'folder-open' | 'info' | 'layers' | 'lightbulb' | 'palette' | 'page' | 'play' | 'redo' | 'save' | 'search' | 'settings' | 'style' | 'undo' | 'arrow-left' | 'arrow-right' | 'arrow-up' | 'arrow-down' | 'chevron-left' | 'chevron-up' | 'chevrons-left' | 'chevrons-right' | 'chevrons-up' | 'chevrons-down' | 'menu' | 'more-horizontal' | 'more-vertical' | 'home' | 'external-link' | 'check' | 'check-circle' | 'check-square' | 'minus' | 'minus-circle' | 'plus-circle' | 'edit' | 'copy' | 'cut' | 'clipboard' | 'download' | 'upload' | 'refresh' | 'link' | 'unlink' | 'share' | 'send' | 'printer' | 'archive' | 'eye' | 'eye-off' | 'lock' | 'unlock' | 'filter' | 'sort-asc' | 'sort-desc' | 'warning' | 'alert-circle' | 'help-circle' | 'bell' | 'bookmark' | 'flag' | 'heart' | 'star' | 'folder' | 'file' | 'file-plus' | 'file-text' | 'text' | 'image' | 'camera' | 'database' | 'table' | 'list' | 'grid' | 'chart-bar' | 'chart-line' | 'code' | 'terminal' | 'cloud' | 'upload-cloud' | 'download-cloud' | 'user' | 'users' | 'user-plus' | 'mail' | 'phone' | 'globe' | 'map-pin' | 'calendar' | 'clock' | 'pause' | 'stop' | 'skip-back' | 'skip-forward' | 'volume-2' | 'volume-x' | 'video' | 'login' | 'logout' | 'sign-in' | 'sign-out' | 'door-in' | 'door-out' | 'door-open' | 'door-closed' | 'key' | 'key-round' | 'shield' | 'shield-check' | 'shield-alert' | 'shield-x' | 'fingerprint' | 'badge-check' | 'id-card' | 'user-check' | 'user-x' | 'user-minus' | 'user-round' | 'contact' | 'accessibility' | 'password' | 'at-sign' | 'scan-face' | 'circle' | 'circle-dot' | 'square' | 'move' | 'maximize' | 'minimize' | 'expand' | 'shrink' | 'fullscreen' | 'panel-left' | 'panel-right' | 'panel-top' | 'panel-bottom' | 'sidebar-left' | 'sidebar-right' | 'layout' | 'columns' | 'rows' | 'align-left' | 'align-center' | 'align-right' | 'align-justify' | 'rotate-cw' | 'rotate-ccw' | 'repeat' | 'folder-plus' | 'folder-minus' | 'folder-x' | 'folder-search' | 'folder-check' | 'folder-lock' | 'file-minus' | 'file-x' | 'file-check' | 'file-code' | 'file-image' | 'file-video' | 'file-audio' | 'file-archive' | 'file-lock' | 'file-search' | 'file-copy' | 'files' | 'hard-drive' | 'server' | 'cpu' | 'monitor' | 'laptop' | 'smartphone' | 'tablet' | 'wifi' | 'bluetooth' | 'message-circle' | 'message-square' | 'messages-square' | 'message-plus' | 'message-x' | 'inbox' | 'outbox' | 'reply' | 'reply-all' | 'forward-mail' | 'paperclip' | 'attachment' | 'rss' | 'megaphone' | 'microphone' | 'microphone-off' | 'headset' | 'radio' | 'sms' | 'cart' | 'shopping-bag' | 'credit-card' | 'receipt' | 'wallet' | 'dollar-sign' | 'percent' | 'tags' | 'gift' | 'truck' | 'building' | 'briefcase' | 'target' | 'trophy' | 'toggle-right';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebButton",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent<HTMLButtonElement>"
      ],
      "source": "export class WebButton extends WebComponent<HTMLButtonElement> {\n    constructor(element: HTMLElement);\n    caption: string;\n    icon: WebButtonIcon;\n    click(): void;\n    set onClick(handler: WebComponentEventHandler<this> | null);\n}",
      "publicSource": "export class WebButton extends WebComponent<HTMLButtonElement> {\n    constructor(element: HTMLElement);\n    caption: string;\n    icon: WebButtonIcon;\n    click(): void;\n    set onClick(handler: WebComponentEventHandler<this> | null);\n}",
      "members": [
        {
          "name": "caption",
          "kind": "property",
          "type": "string",
          "signature": "caption: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "icon",
          "kind": "property",
          "type": "WebButtonIcon",
          "signature": "icon: WebButtonIcon;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "click",
          "kind": "method",
          "type": "void",
          "signature": "click(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onClick",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onClick(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebFileUploadOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebFileUploadOptions {\n    readonly isPublic?: boolean;\n    readonly name?: string;\n    readonly signal?: AbortSignal;\n}",
      "members": [
        {
          "name": "isPublic",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly isPublic?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "signal",
          "kind": "property",
          "type": "AbortSignal",
          "signature": "readonly signal?: AbortSignal;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebFileUploadConfiguration",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebNonvisualComponentOptions"
      ],
      "source": "export interface WebFileUploadConfiguration extends WebNonvisualComponentOptions {\n    readonly accept?: string;\n    readonly isPublic?: boolean;\n    readonly enabled?: boolean;\n}",
      "members": [
        {
          "name": "accept",
          "kind": "property",
          "type": "string",
          "signature": "readonly accept?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "isPublic",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly isPublic?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "enabled",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly enabled?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebFileUploadSelection",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebFileUploadSelection {\n    readonly name: string;\n    readonly path: string | null;\n    readonly size: number;\n    readonly extension: string;\n}",
      "members": [
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "path",
          "kind": "property",
          "type": "string | null",
          "signature": "readonly path: string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "size",
          "kind": "property",
          "type": "number",
          "signature": "readonly size: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "extension",
          "kind": "property",
          "type": "string",
          "signature": "readonly extension: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebFileUploadResult",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "Readonly<import('@webrad/restgo-sdk').RestGoStoredFile>"
      ],
      "source": "export interface WebFileUploadResult extends Readonly<import('@webrad/restgo-sdk').RestGoStoredFile> {\n    readonly url: string;\n}",
      "members": [
        {
          "name": "url",
          "kind": "property",
          "type": "string",
          "signature": "readonly url: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebFileUploadChangeEventDetail",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebFileUploadChangeEventDetail = WebFileUploadSelection | null;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebFileUploadProgressEventDetail",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebFileUploadProgressEventDetail = import('@webrad/restgo-sdk').RestGoUploadProgress;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebFileUploadCompleteEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebFileUploadCompleteEventDetail {\n    readonly result: WebFileUploadResult | null;\n    readonly error: Error | null;\n}",
      "members": [
        {
          "name": "result",
          "kind": "property",
          "type": "WebFileUploadResult | null",
          "signature": "readonly result: WebFileUploadResult | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "error",
          "kind": "property",
          "type": "Error | null",
          "signature": "readonly error: Error | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebFileUpload",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebNonvisualComponent"
      ],
      "source": "/** Selects a local file and uploads it through the configured RestGO client. */\nexport class WebFileUpload extends WebNonvisualComponent {\n    constructor(configuration?: WebFileUploadConfiguration);\n    accept: string;\n    isPublic: boolean;\n    enabled: boolean;\n    readonly selectedFile: File | null;\n    readonly selection: WebFileUploadSelection | null;\n    readonly fileName: string;\n    readonly uploading: boolean;\n    readonly progress: number | null;\n    readonly result: WebFileUploadResult | null;\n    readonly lastError: Error | null;\n    OpenFile(): Promise<WebFileUploadSelection | null>;\n    SendToRestGO(options?: WebFileUploadOptions): Promise<WebFileUploadResult>;\n    Clear(): void;\n    set onChange(handler: WebComponentEventHandler<this> | null);\n    set onSuccess(handler: WebComponentEventHandler<this> | null);\n    set onError(handler: WebComponentEventHandler<this> | null);\n    set onComplete(handler: WebComponentEventHandler<this> | null);\n    set onProgress(handler: WebComponentEventHandler<this> | null);\n}",
      "publicSource": "/** Selects a local file and uploads it through the configured RestGO client. */\nexport class WebFileUpload extends WebNonvisualComponent {\n    constructor(configuration?: WebFileUploadConfiguration);\n    accept: string;\n    isPublic: boolean;\n    enabled: boolean;\n    readonly selectedFile: File | null;\n    readonly selection: WebFileUploadSelection | null;\n    readonly fileName: string;\n    readonly uploading: boolean;\n    readonly progress: number | null;\n    readonly result: WebFileUploadResult | null;\n    readonly lastError: Error | null;\n    OpenFile(): Promise<WebFileUploadSelection | null>;\n    SendToRestGO(options?: WebFileUploadOptions): Promise<WebFileUploadResult>;\n    Clear(): void;\n    set onChange(handler: WebComponentEventHandler<this> | null);\n    set onSuccess(handler: WebComponentEventHandler<this> | null);\n    set onError(handler: WebComponentEventHandler<this> | null);\n    set onComplete(handler: WebComponentEventHandler<this> | null);\n    set onProgress(handler: WebComponentEventHandler<this> | null);\n}",
      "members": [
        {
          "name": "accept",
          "kind": "property",
          "type": "string",
          "signature": "accept: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "isPublic",
          "kind": "property",
          "type": "boolean",
          "signature": "isPublic: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "enabled",
          "kind": "property",
          "type": "boolean",
          "signature": "enabled: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "selectedFile",
          "kind": "property",
          "type": "File | null",
          "signature": "readonly selectedFile: File | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "selection",
          "kind": "property",
          "type": "WebFileUploadSelection | null",
          "signature": "readonly selection: WebFileUploadSelection | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fileName",
          "kind": "property",
          "type": "string",
          "signature": "readonly fileName: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "uploading",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly uploading: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "progress",
          "kind": "property",
          "type": "number | null",
          "signature": "readonly progress: number | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "result",
          "kind": "property",
          "type": "WebFileUploadResult | null",
          "signature": "readonly result: WebFileUploadResult | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "lastError",
          "kind": "property",
          "type": "Error | null",
          "signature": "readonly lastError: Error | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "OpenFile",
          "kind": "method",
          "type": "Promise<WebFileUploadSelection | null>",
          "signature": "OpenFile(): Promise<WebFileUploadSelection | null>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "SendToRestGO",
          "kind": "method",
          "type": "Promise<WebFileUploadResult>",
          "signature": "SendToRestGO(options?: WebFileUploadOptions): Promise<WebFileUploadResult>;",
          "parameters": [
            {
              "name": "options",
              "type": "WebFileUploadOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Clear",
          "kind": "method",
          "type": "void",
          "signature": "Clear(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onChange",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onChange(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onSuccess",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onSuccess(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onError",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onError(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onComplete",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onComplete(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onProgress",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onProgress(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebToggle",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent<HTMLButtonElement>"
      ],
      "source": "export class WebToggle extends WebComponent<HTMLButtonElement> {\n    constructor(element: HTMLElement);\n    checked: boolean;\n    click(): void;\n    set onChange(handler: WebComponentEventHandler<this> | null);\n    set onClick(handler: WebComponentEventHandler<this> | null);\n}",
      "publicSource": "export class WebToggle extends WebComponent<HTMLButtonElement> {\n    constructor(element: HTMLElement);\n    checked: boolean;\n    click(): void;\n    set onChange(handler: WebComponentEventHandler<this> | null);\n    set onClick(handler: WebComponentEventHandler<this> | null);\n}",
      "members": [
        {
          "name": "checked",
          "kind": "property",
          "type": "boolean",
          "signature": "checked: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "click",
          "kind": "method",
          "type": "void",
          "signature": "click(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onChange",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onChange(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onClick",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onClick(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebProgressBarFormat",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebProgressBarFormat = 'bars' | 'dunnet' | 'circus';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebProgressBar",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent<HTMLElement>"
      ],
      "source": "export class WebProgressBar extends WebComponent<HTMLElement> {\n    constructor(element: HTMLElement);\n    value: number;\n    min: number;\n    max: number;\n    format: WebProgressBarFormat;\n    showValue: boolean;\n    readonly percentage: number;\n    setRange(min: number, max: number): void;\n    increment(amount?: number): void;\n    reset(): void;\n    set onChange(handler: WebComponentEventHandler<this> | null);\n}",
      "publicSource": "export class WebProgressBar extends WebComponent<HTMLElement> {\n    constructor(element: HTMLElement);\n    value: number;\n    min: number;\n    max: number;\n    format: WebProgressBarFormat;\n    showValue: boolean;\n    readonly percentage: number;\n    setRange(min: number, max: number): void;\n    increment(amount?: number): void;\n    reset(): void;\n    set onChange(handler: WebComponentEventHandler<this> | null);\n}",
      "members": [
        {
          "name": "value",
          "kind": "property",
          "type": "number",
          "signature": "value: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "min",
          "kind": "property",
          "type": "number",
          "signature": "min: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "max",
          "kind": "property",
          "type": "number",
          "signature": "max: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "format",
          "kind": "property",
          "type": "WebProgressBarFormat",
          "signature": "format: WebProgressBarFormat;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "showValue",
          "kind": "property",
          "type": "boolean",
          "signature": "showValue: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "percentage",
          "kind": "property",
          "type": "number",
          "signature": "readonly percentage: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "setRange",
          "kind": "method",
          "type": "void",
          "signature": "setRange(min: number, max: number): void;",
          "parameters": [
            {
              "name": "min",
              "type": "number",
              "optional": false,
              "rest": false
            },
            {
              "name": "max",
              "type": "number",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "increment",
          "kind": "method",
          "type": "void",
          "signature": "increment(amount?: number): void;",
          "parameters": [
            {
              "name": "amount",
              "type": "number",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "reset",
          "kind": "method",
          "type": "void",
          "signature": "reset(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onChange",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onChange(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebCheckBox",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent<HTMLElement>"
      ],
      "source": "export class WebCheckBox extends WebComponent<HTMLElement> {\n    constructor(element: HTMLElement);\n    checked: boolean;\n    caption: string;\n    enabled: boolean;\n    set onChange(handler: WebComponentEventHandler<this> | null);\n}",
      "publicSource": "export class WebCheckBox extends WebComponent<HTMLElement> {\n    constructor(element: HTMLElement);\n    checked: boolean;\n    caption: string;\n    enabled: boolean;\n    set onChange(handler: WebComponentEventHandler<this> | null);\n}",
      "members": [
        {
          "name": "checked",
          "kind": "property",
          "type": "boolean",
          "signature": "checked: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "caption",
          "kind": "property",
          "type": "string",
          "signature": "caption: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "enabled",
          "kind": "property",
          "type": "boolean",
          "signature": "enabled: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onChange",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onChange(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebSelectItem",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebSelectItem {\n    readonly value: string;\n    readonly label: string;\n    readonly disabled?: boolean;\n}",
      "members": [
        {
          "name": "value",
          "kind": "property",
          "type": "string",
          "signature": "readonly value: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "label",
          "kind": "property",
          "type": "string",
          "signature": "readonly label: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "disabled",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly disabled?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebComboBoxConfiguration",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebComboBoxConfiguration {\n    readonly schemaVersion: 1;\n    readonly apiClientId: string | null;\n    readonly operationId: string | null;\n    readonly listPath: string;\n    readonly displayField: string;\n    readonly keyField: string;\n}",
      "members": [
        {
          "name": "schemaVersion",
          "kind": "property",
          "type": "1",
          "signature": "readonly schemaVersion: 1;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "apiClientId",
          "kind": "property",
          "type": "string | null",
          "signature": "readonly apiClientId: string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "operationId",
          "kind": "property",
          "type": "string | null",
          "signature": "readonly operationId: string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "listPath",
          "kind": "property",
          "type": "string",
          "signature": "readonly listPath: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "displayField",
          "kind": "property",
          "type": "string",
          "signature": "readonly displayField: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "keyField",
          "kind": "property",
          "type": "string",
          "signature": "readonly keyField: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebComboBox",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent<HTMLSelectElement>"
      ],
      "source": "export class WebComboBox extends WebComponent<HTMLSelectElement> {\n    constructor(element: HTMLElement);\n    value: string;\n    selectedIndex: number;\n    get values(): readonly string[];\n    set values(values: readonly string[]);\n    get items(): readonly WebSelectItem[];\n    set items(items: readonly (string | WebSelectItem)[]);\n    comboBoxConfig: WebComboBoxConfiguration | null;\n    bindApiClient(apiClient: WebApiClient | null): void;\n    override dispose(): void;\n    set onChange(handler: WebComponentEventHandler<this> | null);\n}",
      "publicSource": "export class WebComboBox extends WebComponent<HTMLSelectElement> {\n    constructor(element: HTMLElement);\n    value: string;\n    selectedIndex: number;\n    get values(): readonly string[];\n    set values(values: readonly string[]);\n    get items(): readonly WebSelectItem[];\n    set items(items: readonly (string | WebSelectItem)[]);\n    comboBoxConfig: WebComboBoxConfiguration | null;\n    bindApiClient(apiClient: WebApiClient | null): void;\n    override dispose(): void;\n    set onChange(handler: WebComponentEventHandler<this> | null);\n}",
      "members": [
        {
          "name": "value",
          "kind": "property",
          "type": "string",
          "signature": "value: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "selectedIndex",
          "kind": "property",
          "type": "number",
          "signature": "selectedIndex: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "values",
          "kind": "get",
          "type": "readonly string[]",
          "signature": "get values(): readonly string[];",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "items",
          "kind": "get",
          "type": "readonly WebSelectItem[]",
          "signature": "get items(): readonly WebSelectItem[];",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "comboBoxConfig",
          "kind": "property",
          "type": "WebComboBoxConfiguration | null",
          "signature": "comboBoxConfig: WebComboBoxConfiguration | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "bindApiClient",
          "kind": "method",
          "type": "void",
          "signature": "bindApiClient(apiClient: WebApiClient | null): void;",
          "parameters": [
            {
              "name": "apiClient",
              "type": "WebApiClient | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "override dispose(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onChange",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onChange(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebImage",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent<HTMLImageElement>"
      ],
      "source": "export class WebImage extends WebComponent<HTMLImageElement> {\n    constructor(element: HTMLElement);\n    get src(): string;\n    set src(value: string | null);\n    placeholder: WebImagePlaceholder;\n    alt: string;\n    objectFit: WebImageObjectFit;\n}",
      "publicSource": "export class WebImage extends WebComponent<HTMLImageElement> {\n    constructor(element: HTMLElement);\n    get src(): string;\n    set src(value: string | null);\n    placeholder: WebImagePlaceholder;\n    alt: string;\n    objectFit: WebImageObjectFit;\n}",
      "members": [
        {
          "name": "src",
          "kind": "get",
          "type": "string",
          "signature": "get src(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "placeholder",
          "kind": "property",
          "type": "WebImagePlaceholder",
          "signature": "placeholder: WebImagePlaceholder;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "alt",
          "kind": "property",
          "type": "string",
          "signature": "alt: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "objectFit",
          "kind": "property",
          "type": "WebImageObjectFit",
          "signature": "objectFit: WebImageObjectFit;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebImageObjectFit",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebImageObjectFit = 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebImagePlaceholder",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebImagePlaceholder = 'image' | 'user';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebListBox",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent<HTMLSelectElement>"
      ],
      "source": "export class WebListBox extends WebComponent<HTMLSelectElement> {\n    constructor(element: HTMLElement);\n    value: string;\n    selectedIndex: number;\n    multiple: boolean;\n    get items(): readonly WebSelectItem[];\n    set items(items: readonly (string | WebSelectItem)[]);\n    selectedValues: readonly string[];\n    set onChange(handler: WebComponentEventHandler<this> | null);\n}",
      "publicSource": "export class WebListBox extends WebComponent<HTMLSelectElement> {\n    constructor(element: HTMLElement);\n    value: string;\n    selectedIndex: number;\n    multiple: boolean;\n    get items(): readonly WebSelectItem[];\n    set items(items: readonly (string | WebSelectItem)[]);\n    selectedValues: readonly string[];\n    set onChange(handler: WebComponentEventHandler<this> | null);\n}",
      "members": [
        {
          "name": "value",
          "kind": "property",
          "type": "string",
          "signature": "value: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "selectedIndex",
          "kind": "property",
          "type": "number",
          "signature": "selectedIndex: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "multiple",
          "kind": "property",
          "type": "boolean",
          "signature": "multiple: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "items",
          "kind": "get",
          "type": "readonly WebSelectItem[]",
          "signature": "get items(): readonly WebSelectItem[];",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "selectedValues",
          "kind": "property",
          "type": "readonly string[]",
          "signature": "selectedValues: readonly string[];",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onChange",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onChange(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "PageParameterValue",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type PageParameterValue = string | number | boolean;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "PageParameterValues",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type PageParameterValues = Readonly<Record<string, PageParameterValue | undefined>>;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "PageParameterDefinition",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface PageParameterDefinition {\n    readonly name: string;\n    readonly type: 'string' | 'number' | 'boolean';\n    readonly required: boolean;\n    readonly defaultValue?: PageParameterValue;\n}",
      "members": [
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "type",
          "kind": "property",
          "type": "'string' | 'number' | 'boolean'",
          "signature": "readonly type: 'string' | 'number' | 'boolean';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "required",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly required: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "defaultValue",
          "kind": "property",
          "type": "PageParameterValue",
          "signature": "readonly defaultValue?: PageParameterValue;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "PageParametersChangedEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface PageParametersChangedEventDetail {\n    readonly previous: PageParameterValues;\n    readonly params: PageParameterValues;\n}",
      "members": [
        {
          "name": "previous",
          "kind": "property",
          "type": "PageParameterValues",
          "signature": "readonly previous: PageParameterValues;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "params",
          "kind": "property",
          "type": "PageParameterValues",
          "signature": "readonly params: PageParameterValues;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "PageParameterError",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "Error"
      ],
      "source": "export class PageParameterError extends Error {\n    readonly pageName: string;\n    readonly parameterName: string;\n    constructor(pageName: string, parameterName: string, reason: string);\n}",
      "publicSource": "export class PageParameterError extends Error {\n    readonly pageName: string;\n    readonly parameterName: string;\n    constructor(pageName: string, parameterName: string, reason: string);\n}",
      "members": [
        {
          "name": "pageName",
          "kind": "property",
          "type": "string",
          "signature": "readonly pageName: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "parameterName",
          "kind": "property",
          "type": "string",
          "signature": "readonly parameterName: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebRadPageParameters",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebRadPageParameters {\n}",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "PageDestination",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type PageDestination = keyof WebRadPageParameters | (string & {}) | URL;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "NavigateArguments",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type NavigateArguments<Destination extends string | URL> = Destination extends keyof WebRadPageParameters ? {} extends WebRadPageParameters[Destination] ? [\n    options?: Omit<NavigateOptions, 'params'> & {\n        readonly params?: WebRadPageParameters[Destination];\n    }\n] : [\n    options: Omit<NavigateOptions, 'params'> & {\n        readonly params: WebRadPageParameters[Destination];\n    }\n] : [\n    options?: NavigateOptions\n];",
      "members": [],
      "typeParameters": [
        "Destination extends string | URL"
      ]
    },
    {
      "name": "NavigateOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface NavigateOptions {\n    readonly replace?: boolean;\n    readonly newWindow?: boolean;\n    readonly target?: string;\n    readonly params?: PageParameterValues;\n    readonly paramsHandling?: 'replace' | 'merge' | 'preserve';\n}",
      "members": [
        {
          "name": "replace",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly replace?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "newWindow",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly newWindow?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "target",
          "kind": "property",
          "type": "string",
          "signature": "readonly target?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "params",
          "kind": "property",
          "type": "PageParameterValues",
          "signature": "readonly params?: PageParameterValues;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "paramsHandling",
          "kind": "property",
          "type": "'replace' | 'merge' | 'preserve'",
          "signature": "readonly paramsHandling?: 'replace' | 'merge' | 'preserve';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "Message",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Shows a browser message to the application user. */\nexport function Message(message: unknown): void;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "Confirm",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Asks the application user to confirm an action. */\nexport function Confirm(message: unknown): boolean;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "Navigate",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/**\n * Navigates an internal project page when its name or ID is provided by a\n * compiled app; otherwise navigates the browser or opens another window.\n */\nexport function Navigate<Destination extends PageDestination>(destination: Destination, ...args: NavigateArguments<Destination>): void;",
      "members": [],
      "typeParameters": [
        "Destination extends PageDestination"
      ]
    },
    {
      "name": "message",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const message: typeof Message;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "confirm",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const confirm: typeof Confirm;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "navigate",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const navigate: typeof Navigate;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebApiAuthorization",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "/** Browser-safe authorization shared by the editor, Preview and generated apps. */\nexport type WebApiAuthorization = {\n    readonly type: 'none';\n} | {\n    readonly type: 'basic';\n    readonly username: string;\n    readonly password: string;\n} | {\n    readonly type: 'bearer';\n    readonly token: string;\n} | {\n    readonly type: 'api-key';\n    readonly name: string;\n    readonly value: string;\n    readonly in: 'header' | 'query';\n};",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "normalizeApiClientAuthorization",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Returns a detached, validated definition without coercing or trimming secrets. */\nexport function normalizeApiClientAuthorization(value: unknown): WebApiAuthorization | null;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "applyApiClientAuthorization",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Explicit authorization wins over manual headers; omission preserves legacy headers. */\nexport function applyApiClientAuthorization(url: string, headers: Headers, authorization: WebApiAuthorization | null | undefined): string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WEB_API_TEMPLATE_PARAMETER_TYPES",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "/** Browser-safe request-body templates shared by the IDE and generated applications. */\nexport const WEB_API_TEMPLATE_PARAMETER_TYPES: readonly [\n    \"string\",\n    \"number\",\n    \"integer\",\n    \"boolean\",\n    \"object\",\n    \"array\",\n    \"null\"\n];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebApiTemplateParameterType",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebApiTemplateParameterType = (typeof WEB_API_TEMPLATE_PARAMETER_TYPES)[number];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebApiTemplateParameter",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebApiTemplateParameter {\n    readonly name: string;\n    readonly type: WebApiTemplateParameterType;\n}",
      "members": [
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "type",
          "kind": "property",
          "type": "WebApiTemplateParameterType",
          "signature": "readonly type: WebApiTemplateParameterType;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebApiTemplateValue",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebApiTemplateValue = string | number | boolean | null | readonly WebApiTemplateValue[] | {\n    readonly [key: string]: WebApiTemplateValue;\n};",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebApiTemplateValues",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebApiTemplateValues = Readonly<Record<string, WebApiTemplateValue>>;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "getApiClientTemplateParameters",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Derives unique names from the template and preserves existing type choices by name. */\nexport function getApiClientTemplateParameters(content: string, existing?: readonly WebApiTemplateParameter[]): readonly WebApiTemplateParameter[];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "parseApiClientTemplateTestValue",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Converts an IDE-only input into a typed value without evaluating source code. */\nexport function parseApiClientTemplateTestValue(parameter: WebApiTemplateParameter, input: string): WebApiTemplateValue;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "resolveApiClientBodyTemplate",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Resolves a body template while preserving JSON types and escaping string contents. */\nexport function resolveApiClientBodyTemplate(body: WebApiRequestBody, values?: WebApiTemplateValues): string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebApiBodyInput",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebApiTemplateParameter"
      ],
      "source": "export interface WebApiBodyInput extends WebApiTemplateParameter {\n    readonly required: boolean;\n    readonly inferred: boolean;\n    readonly defaultValue?: WebApiTemplateValue;\n}",
      "members": [
        {
          "name": "required",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly required: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "inferred",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly inferred: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "defaultValue",
          "kind": "property",
          "type": "WebApiTemplateValue",
          "signature": "readonly defaultValue?: WebApiTemplateValue;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "getApiClientBodyInputs",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Public reflection uses the same persisted body for code generation and runtime parameters. */\nexport function getApiClientBodyInputs(body: WebApiRequestBody): readonly WebApiBodyInput[];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "copyApiClientInput",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Validates/copies input data while preventing prototype fields and unserializable values. */\nexport function copyApiClientInput(value: WebApiTemplateValue): WebApiTemplateValue;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebApiQueryValue",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebApiQueryValue = QueryValue | readonly QueryValue[];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebApiParameterValue",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebApiParameterValue = WebApiTemplateValue | readonly QueryValue[];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebApiParameterValues",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebApiParameterValues<T extends object> = {\n    -readonly [K in keyof T]?: T[K];\n};",
      "members": [],
      "typeParameters": [
        "T extends object"
      ]
    },
    {
      "name": "WebApiQueryValues",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebApiQueryValues<T extends object = Record<string, WebApiQueryValue>> = WebApiParameterValues<T> & Record<string, WebApiQueryValue>;",
      "members": [],
      "typeParameters": [
        "T extends object = Record<string, WebApiQueryValue>"
      ]
    },
    {
      "name": "WebApiHeaderValues",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebApiHeaderValues<T extends object = Record<string, string>> = WebApiParameterValues<T> & Record<string, string | undefined>;",
      "members": [],
      "typeParameters": [
        "T extends object = Record<string, string>"
      ]
    },
    {
      "name": "WebApiRequestInputs",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "/** Generated inputs preserve the configured names without an untyped component namespace. */\nexport interface WebApiRequestInputs {\n    readonly Parameter: object;\n    readonly Query: object;\n    readonly Headers: object;\n}",
      "members": [
        {
          "name": "Parameter",
          "kind": "property",
          "type": "object",
          "signature": "readonly Parameter: object;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "Query",
          "kind": "property",
          "type": "object",
          "signature": "readonly Query: object;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "Headers",
          "kind": "property",
          "type": "object",
          "signature": "readonly Headers: object;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebApiDefaultInputs",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebApiRequestInputs"
      ],
      "source": "export interface WebApiDefaultInputs extends WebApiRequestInputs {\n    readonly Parameter: Record<string, WebApiParameterValue>;\n    readonly Query: Record<string, WebApiQueryValue>;\n    readonly Headers: Record<string, string>;\n}",
      "members": [
        {
          "name": "Parameter",
          "kind": "property",
          "type": "Record<string, WebApiParameterValue>",
          "signature": "readonly Parameter: Record<string, WebApiParameterValue>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "Query",
          "kind": "property",
          "type": "Record<string, WebApiQueryValue>",
          "signature": "readonly Query: Record<string, WebApiQueryValue>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "Headers",
          "kind": "property",
          "type": "Record<string, string>",
          "signature": "readonly Headers: Record<string, string>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebApiInputPart",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebApiInputPart<T, K extends keyof WebApiRequestInputs> = T extends {\n    readonly [P in K]: infer Values extends object;\n} ? Values : Record<string, K extends 'Headers' ? string : WebApiTemplateValue>;",
      "members": [],
      "typeParameters": [
        "T",
        "K extends keyof WebApiRequestInputs"
      ]
    },
    {
      "name": "WebApiInputUnion",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebApiInputUnion<T extends object, K extends keyof WebApiRequestInputs> = WebApiInputPart<T[keyof T], K>;",
      "members": [],
      "typeParameters": [
        "T extends object",
        "K extends keyof WebApiRequestInputs"
      ]
    },
    {
      "name": "WebApiUnionKeys",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebApiUnionKeys<T> = T extends object ? keyof T : never;",
      "members": [],
      "typeParameters": [
        "T"
      ]
    },
    {
      "name": "WebApiUnionValue",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebApiUnionValue<T, K extends PropertyKey> = T extends object ? K extends keyof T ? T[K] : never : never;",
      "members": [],
      "typeParameters": [
        "T",
        "K extends PropertyKey"
      ]
    },
    {
      "name": "WebApiCombinedInputs",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebApiCombinedInputs<T extends object, K extends keyof WebApiRequestInputs> = {\n    [P in WebApiUnionKeys<WebApiInputUnion<T, K>>]: WebApiUnionValue<WebApiInputUnion<T, K>, P>;\n};",
      "members": [],
      "typeParameters": [
        "T extends object",
        "K extends keyof WebApiRequestInputs"
      ]
    },
    {
      "name": "WebApiRequests",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebApiRequests<TOutputs extends object, TInputs extends object> = {\n    readonly [K in keyof TOutputs & string]: WebApiRequest<WebApiInputPart<K extends keyof TInputs ? TInputs[K] : WebApiDefaultInputs, 'Parameter'>, TOutputs[K], WebApiInputPart<K extends keyof TInputs ? TInputs[K] : WebApiDefaultInputs, 'Query'>, WebApiInputPart<K extends keyof TInputs ? TInputs[K] : WebApiDefaultInputs, 'Headers'>>;\n};",
      "members": [],
      "typeParameters": [
        "TOutputs extends object",
        "TInputs extends object"
      ]
    },
    {
      "name": "WebApiAccessContext",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "/** Narrow callbacks keep request objects attached to their owner's stable operation ID. */\nexport interface WebApiAccessContext {\n    readConfiguration(): WebApiClientConfiguration;\n    writeConfiguration(value: WebApiClientConfiguration): void;\n    readOperation(id: string): WebApiOperation;\n    patchOperation(id: string, patch: Partial<Omit<WebApiOperation, 'id'>>): void;\n    readBaseUrl(): string;\n    writeBaseUrl(value: string): void;\n    parameterNames(id: string): readonly string[];\n    readParameter(id: string, name: string): WebApiParameterValue | undefined;\n    writeParameter(id: string, name: string, value: WebApiParameterValue | undefined): void;\n    readParameterType(id: string, name: string): WebApiTemplateParameterType;\n    writeParameterType(id: string, name: string, type: WebApiTemplateParameterType): void;\n    clearParameters(id: string): void;\n    readQuery(id: string, name: string): WebApiQueryValue;\n    writeQuery(id: string, name: string, value: WebApiQueryValue): void;\n    headerNames(id?: string): readonly string[];\n    readHeader(name: string, id?: string): string | undefined;\n    writeHeader(name: string, value: string | undefined, id?: string): void;\n    readResponseType(id: string): WebApiResponseType;\n    writeResponseType(id: string, value: WebApiResponseType): void;\n    readState(id: string): WebApiOperationState;\n    execute(id: string, options: WebApiRequestOptions): Promise<unknown>;\n    bodyParameters(id: string): readonly WebApiTemplateParameter[];\n}",
      "members": [
        {
          "name": "readConfiguration",
          "kind": "method",
          "type": "WebApiClientConfiguration",
          "signature": "readConfiguration(): WebApiClientConfiguration;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "writeConfiguration",
          "kind": "method",
          "type": "void",
          "signature": "writeConfiguration(value: WebApiClientConfiguration): void;",
          "parameters": [
            {
              "name": "value",
              "type": "WebApiClientConfiguration",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "readOperation",
          "kind": "method",
          "type": "WebApiOperation",
          "signature": "readOperation(id: string): WebApiOperation;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "patchOperation",
          "kind": "method",
          "type": "void",
          "signature": "patchOperation(id: string, patch: Partial<Omit<WebApiOperation, 'id'>>): void;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "patch",
              "type": "Partial<Omit<WebApiOperation, 'id'>>",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "readBaseUrl",
          "kind": "method",
          "type": "string",
          "signature": "readBaseUrl(): string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "writeBaseUrl",
          "kind": "method",
          "type": "void",
          "signature": "writeBaseUrl(value: string): void;",
          "parameters": [
            {
              "name": "value",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "parameterNames",
          "kind": "method",
          "type": "readonly string[]",
          "signature": "parameterNames(id: string): readonly string[];",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "readParameter",
          "kind": "method",
          "type": "WebApiParameterValue | undefined",
          "signature": "readParameter(id: string, name: string): WebApiParameterValue | undefined;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "name",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "writeParameter",
          "kind": "method",
          "type": "void",
          "signature": "writeParameter(id: string, name: string, value: WebApiParameterValue | undefined): void;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "name",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "value",
              "type": "WebApiParameterValue | undefined",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "readParameterType",
          "kind": "method",
          "type": "WebApiTemplateParameterType",
          "signature": "readParameterType(id: string, name: string): WebApiTemplateParameterType;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "name",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "writeParameterType",
          "kind": "method",
          "type": "void",
          "signature": "writeParameterType(id: string, name: string, type: WebApiTemplateParameterType): void;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "name",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "type",
              "type": "WebApiTemplateParameterType",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "clearParameters",
          "kind": "method",
          "type": "void",
          "signature": "clearParameters(id: string): void;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "readQuery",
          "kind": "method",
          "type": "WebApiQueryValue",
          "signature": "readQuery(id: string, name: string): WebApiQueryValue;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "name",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "writeQuery",
          "kind": "method",
          "type": "void",
          "signature": "writeQuery(id: string, name: string, value: WebApiQueryValue): void;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "name",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "value",
              "type": "WebApiQueryValue",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "headerNames",
          "kind": "method",
          "type": "readonly string[]",
          "signature": "headerNames(id?: string): readonly string[];",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "readHeader",
          "kind": "method",
          "type": "string | undefined",
          "signature": "readHeader(name: string, id?: string): string | undefined;",
          "parameters": [
            {
              "name": "name",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "id",
              "type": "string",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "writeHeader",
          "kind": "method",
          "type": "void",
          "signature": "writeHeader(name: string, value: string | undefined, id?: string): void;",
          "parameters": [
            {
              "name": "name",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "value",
              "type": "string | undefined",
              "optional": false,
              "rest": false
            },
            {
              "name": "id",
              "type": "string",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "readResponseType",
          "kind": "method",
          "type": "WebApiResponseType",
          "signature": "readResponseType(id: string): WebApiResponseType;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "writeResponseType",
          "kind": "method",
          "type": "void",
          "signature": "writeResponseType(id: string, value: WebApiResponseType): void;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "value",
              "type": "WebApiResponseType",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "readState",
          "kind": "method",
          "type": "WebApiOperationState",
          "signature": "readState(id: string): WebApiOperationState;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "execute",
          "kind": "method",
          "type": "Promise<unknown>",
          "signature": "execute(id: string, options: WebApiRequestOptions): Promise<unknown>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "WebApiRequestOptions",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "bodyParameters",
          "kind": "method",
          "type": "readonly WebApiTemplateParameter[]",
          "signature": "bodyParameters(id: string): readonly WebApiTemplateParameter[];",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebApiNamedParameter",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [],
      "source": "/** A FireDAC-style named parameter, backed by the owning runtime request. */\nexport class WebApiNamedParameter {\n    private readonly context;\n    private readonly operationId;\n    readonly Name: string;\n    constructor(context: WebApiAccessContext, operationId: string, Name: string);\n    get Value(): WebApiParameterValue | undefined;\n    set Value(value: WebApiParameterValue | undefined);\n    get Type(): WebApiTemplateParameterType;\n    set Type(value: WebApiTemplateParameterType);\n    Clear(): void;\n}",
      "publicSource": "/** A FireDAC-style named parameter, backed by the owning runtime request. */\nexport class WebApiNamedParameter {\n    readonly Name: string;\n    constructor(context: WebApiAccessContext, operationId: string, Name: string);\n    get Value(): WebApiParameterValue | undefined;\n    set Value(value: WebApiParameterValue | undefined);\n    get Type(): WebApiTemplateParameterType;\n    set Type(value: WebApiTemplateParameterType);\n    Clear(): void;\n}",
      "members": [
        {
          "name": "Name",
          "kind": "property",
          "type": "string",
          "signature": "readonly Name: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "Value",
          "kind": "get",
          "type": "WebApiParameterValue | undefined",
          "signature": "get Value(): WebApiParameterValue | undefined;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Type",
          "kind": "get",
          "type": "WebApiTemplateParameterType",
          "signature": "get Type(): WebApiTemplateParameterType;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Clear",
          "kind": "method",
          "type": "void",
          "signature": "Clear(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebApiBodySettings",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [],
      "source": "export class WebApiBodySettings {\n    private readonly context;\n    private readonly operationId;\n    constructor(context: WebApiAccessContext, operationId: string);\n    get Kind(): WebApiBodyKind;\n    set Kind(value: WebApiBodyKind);\n    get Value(): string;\n    set Value(value: string);\n    get Parameters(): readonly WebApiTemplateParameter[];\n    set Parameters(value: readonly WebApiTemplateParameter[]);\n}",
      "publicSource": "export class WebApiBodySettings {\n    constructor(context: WebApiAccessContext, operationId: string);\n    get Kind(): WebApiBodyKind;\n    set Kind(value: WebApiBodyKind);\n    get Value(): string;\n    set Value(value: string);\n    get Parameters(): readonly WebApiTemplateParameter[];\n    set Parameters(value: readonly WebApiTemplateParameter[]);\n}",
      "members": [
        {
          "name": "Kind",
          "kind": "get",
          "type": "WebApiBodyKind",
          "signature": "get Kind(): WebApiBodyKind;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Value",
          "kind": "get",
          "type": "string",
          "signature": "get Value(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Parameters",
          "kind": "get",
          "type": "readonly WebApiTemplateParameter[]",
          "signature": "get Parameters(): readonly WebApiTemplateParameter[];",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebApiRequestSettings",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [],
      "source": "export class WebApiRequestSettings {\n    private readonly context;\n    private readonly operationId;\n    constructor(context: WebApiAccessContext, operationId: string);\n    get Credentials(): WebApiCredentials;\n    set Credentials(value: WebApiCredentials);\n    get Timeout(): number | null;\n    set Timeout(value: number | null);\n    get ResponseType(): WebApiResponseType;\n    set ResponseType(value: WebApiResponseType);\n}",
      "publicSource": "export class WebApiRequestSettings {\n    constructor(context: WebApiAccessContext, operationId: string);\n    get Credentials(): WebApiCredentials;\n    set Credentials(value: WebApiCredentials);\n    get Timeout(): number | null;\n    set Timeout(value: number | null);\n    get ResponseType(): WebApiResponseType;\n    set ResponseType(value: WebApiResponseType);\n}",
      "members": [
        {
          "name": "Credentials",
          "kind": "get",
          "type": "WebApiCredentials",
          "signature": "get Credentials(): WebApiCredentials;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Timeout",
          "kind": "get",
          "type": "number | null",
          "signature": "get Timeout(): number | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "ResponseType",
          "kind": "get",
          "type": "WebApiResponseType",
          "signature": "get ResponseType(): WebApiResponseType;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebApiResponse",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [],
      "source": "export class WebApiResponse<T = unknown> {\n    private readonly context;\n    private readonly operationId;\n    constructor(context: WebApiAccessContext, operationId: string);\n    get Value(): T | undefined;\n    get Status(): WebApiOperationState['status'];\n    get Error(): unknown;\n    get UpdatedAt(): number | undefined;\n    get Schema(): WebApiResponseSchema | null;\n    set Schema(value: WebApiResponseSchema | null);\n}",
      "publicSource": "export class WebApiResponse<T = unknown> {\n    constructor(context: WebApiAccessContext, operationId: string);\n    get Value(): T | undefined;\n    get Status(): WebApiOperationState['status'];\n    get Error(): unknown;\n    get UpdatedAt(): number | undefined;\n    get Schema(): WebApiResponseSchema | null;\n    set Schema(value: WebApiResponseSchema | null);\n}",
      "members": [
        {
          "name": "Value",
          "kind": "get",
          "type": "T | undefined",
          "signature": "get Value(): T | undefined;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Status",
          "kind": "get",
          "type": "WebApiOperationState['status']",
          "signature": "get Status(): WebApiOperationState['status'];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Error",
          "kind": "get",
          "type": "unknown",
          "signature": "get Error(): unknown;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "UpdatedAt",
          "kind": "get",
          "type": "number | undefined",
          "signature": "get UpdatedAt(): number | undefined;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Schema",
          "kind": "get",
          "type": "WebApiResponseSchema | null",
          "signature": "get Schema(): WebApiResponseSchema | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": [
        "T = unknown"
      ]
    },
    {
      "name": "WebApiConnectionSettings",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [],
      "source": "export class WebApiConnectionSettings<THeaders extends object = Record<string, string>> {\n    private readonly context;\n    readonly Headers: WebApiHeaderValues<THeaders>;\n    constructor(context: WebApiAccessContext);\n    get Mode(): WebApiConnection;\n    set Mode(value: WebApiConnection);\n    get BaseURL(): string;\n    set BaseURL(value: string);\n    get Authorization(): WebApiAuthorization | null;\n    set Authorization(value: WebApiAuthorization | null);\n    get Timeout(): number;\n    set Timeout(value: number);\n    get DefaultHeaders(): readonly WebApiParameter[];\n    set DefaultHeaders(value: readonly WebApiParameter[]);\n}",
      "publicSource": "export class WebApiConnectionSettings<THeaders extends object = Record<string, string>> {\n    readonly Headers: WebApiHeaderValues<THeaders>;\n    constructor(context: WebApiAccessContext);\n    get Mode(): WebApiConnection;\n    set Mode(value: WebApiConnection);\n    get BaseURL(): string;\n    set BaseURL(value: string);\n    get Authorization(): WebApiAuthorization | null;\n    set Authorization(value: WebApiAuthorization | null);\n    get Timeout(): number;\n    set Timeout(value: number);\n    get DefaultHeaders(): readonly WebApiParameter[];\n    set DefaultHeaders(value: readonly WebApiParameter[]);\n}",
      "members": [
        {
          "name": "Headers",
          "kind": "property",
          "type": "WebApiHeaderValues<THeaders>",
          "signature": "readonly Headers: WebApiHeaderValues<THeaders>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "Mode",
          "kind": "get",
          "type": "WebApiConnection",
          "signature": "get Mode(): WebApiConnection;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "BaseURL",
          "kind": "get",
          "type": "string",
          "signature": "get BaseURL(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Authorization",
          "kind": "get",
          "type": "WebApiAuthorization | null",
          "signature": "get Authorization(): WebApiAuthorization | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Timeout",
          "kind": "get",
          "type": "number",
          "signature": "get Timeout(): number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "DefaultHeaders",
          "kind": "get",
          "type": "readonly WebApiParameter[]",
          "signature": "get DefaultHeaders(): readonly WebApiParameter[];",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": [
        "THeaders extends object = Record<string, string>"
      ]
    },
    {
      "name": "WebApiRequest",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [],
      "source": "/** Stable request object with mutable settings and private per-instance parameter values. */\nexport class WebApiRequest<TParameters extends object = Record<string, WebApiTemplateValue>, TResult = unknown, TQuery extends object = Record<string, WebApiQueryValue>, THeaders extends object = Record<string, string>> {\n    private readonly context;\n    readonly ID: string;\n    readonly parameter: WebApiParameterValues<TParameters>;\n    readonly Query: WebApiQueryValues<TQuery>;\n    readonly Headers: WebApiHeaderValues<THeaders>;\n    readonly Body: WebApiBodySettings;\n    readonly Options: WebApiRequestSettings;\n    readonly Response: WebApiResponse<TResult>;\n    constructor(context: WebApiAccessContext, ID: string);\n    get Name(): string;\n    set Name(value: string);\n    get Method(): string;\n    set Method(value: string);\n    /** Null inherits the client default; explicit none suppresses Authorization. */\n    get Authorization(): WebApiAuthorization | null;\n    set Authorization(value: WebApiAuthorization | null);\n    get Endpoint(): string;\n    set Endpoint(value: string);\n    get ApiVersion(): number | null;\n    set ApiVersion(value: number | null);\n    get Definition(): WebApiOperation;\n    set Definition(value: WebApiOperation);\n    ParamByName(name: string): WebApiNamedParameter;\n    ClearParameters(): void;\n    /** Executes this request without changing the client's selected Operation first. */\n    execute(options?: WebApiRequestOptions): Promise<TResult>;\n}",
      "publicSource": "/** Stable request object with mutable settings and private per-instance parameter values. */\nexport class WebApiRequest<TParameters extends object = Record<string, WebApiTemplateValue>, TResult = unknown, TQuery extends object = Record<string, WebApiQueryValue>, THeaders extends object = Record<string, string>> {\n    readonly ID: string;\n    readonly parameter: WebApiParameterValues<TParameters>;\n    readonly Query: WebApiQueryValues<TQuery>;\n    readonly Headers: WebApiHeaderValues<THeaders>;\n    readonly Body: WebApiBodySettings;\n    readonly Options: WebApiRequestSettings;\n    readonly Response: WebApiResponse<TResult>;\n    constructor(context: WebApiAccessContext, ID: string);\n    get Name(): string;\n    set Name(value: string);\n    get Method(): string;\n    set Method(value: string);\n    /** Null inherits the client default; explicit none suppresses Authorization. */\n    get Authorization(): WebApiAuthorization | null;\n    set Authorization(value: WebApiAuthorization | null);\n    get Endpoint(): string;\n    set Endpoint(value: string);\n    get ApiVersion(): number | null;\n    set ApiVersion(value: number | null);\n    get Definition(): WebApiOperation;\n    set Definition(value: WebApiOperation);\n    ParamByName(name: string): WebApiNamedParameter;\n    ClearParameters(): void;\n    /** Executes this request without changing the client's selected Operation first. */\n    execute(options?: WebApiRequestOptions): Promise<TResult>;\n}",
      "members": [
        {
          "name": "ID",
          "kind": "property",
          "type": "string",
          "signature": "readonly ID: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "parameter",
          "kind": "property",
          "type": "WebApiParameterValues<TParameters>",
          "signature": "readonly parameter: WebApiParameterValues<TParameters>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "Query",
          "kind": "property",
          "type": "WebApiQueryValues<TQuery>",
          "signature": "readonly Query: WebApiQueryValues<TQuery>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "Headers",
          "kind": "property",
          "type": "WebApiHeaderValues<THeaders>",
          "signature": "readonly Headers: WebApiHeaderValues<THeaders>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "Body",
          "kind": "property",
          "type": "WebApiBodySettings",
          "signature": "readonly Body: WebApiBodySettings;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "Options",
          "kind": "property",
          "type": "WebApiRequestSettings",
          "signature": "readonly Options: WebApiRequestSettings;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "Response",
          "kind": "property",
          "type": "WebApiResponse<TResult>",
          "signature": "readonly Response: WebApiResponse<TResult>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "Name",
          "kind": "get",
          "type": "string",
          "signature": "get Name(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Method",
          "kind": "get",
          "type": "string",
          "signature": "get Method(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Authorization",
          "kind": "get",
          "type": "WebApiAuthorization | null",
          "signature": "get Authorization(): WebApiAuthorization | null;",
          "parameters": [],
          "description": "Null inherits the client default; explicit none suppresses Authorization.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Endpoint",
          "kind": "get",
          "type": "string",
          "signature": "get Endpoint(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "ApiVersion",
          "kind": "get",
          "type": "number | null",
          "signature": "get ApiVersion(): number | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Definition",
          "kind": "get",
          "type": "WebApiOperation",
          "signature": "get Definition(): WebApiOperation;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "ParamByName",
          "kind": "method",
          "type": "WebApiNamedParameter",
          "signature": "ParamByName(name: string): WebApiNamedParameter;",
          "parameters": [
            {
              "name": "name",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "ClearParameters",
          "kind": "method",
          "type": "void",
          "signature": "ClearParameters(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "execute",
          "kind": "method",
          "type": "Promise<TResult>",
          "signature": "execute(options?: WebApiRequestOptions): Promise<TResult>;",
          "parameters": [
            {
              "name": "options",
              "type": "WebApiRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "Executes this request without changing the client's selected Operation first.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": [
        "TParameters extends object = Record<string, WebApiTemplateValue>",
        "TResult = unknown",
        "TQuery extends object = Record<string, WebApiQueryValue>",
        "THeaders extends object = Record<string, string>"
      ]
    },
    {
      "name": "WEB_API_REQUEST_RESERVED_NAMES",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "/** Names that must never turn an API client into a thenable or replace object behavior. */\nexport const WEB_API_REQUEST_RESERVED_NAMES: readonly [\n    \"then\",\n    \"constructor\",\n    \"__proto__\",\n    \"prototype\",\n    \"toString\",\n    \"toLocaleString\",\n    \"valueOf\",\n    \"hasOwnProperty\",\n    \"isPrototypeOf\",\n    \"propertyIsEnumerable\",\n    \"__defineGetter__\",\n    \"__defineSetter__\",\n    \"__lookupGetter__\",\n    \"__lookupSetter__\"\n];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebApiClientInstance",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "/** Named request access with the client's existing public members protected. */\nexport type WebApiClientInstance<TOutputs extends object = Record<string, unknown>, TInputs extends object = Record<string, WebApiDefaultInputs>, TDefaultHeaders extends object = Record<string, string>> = WebApiClient<TOutputs, TInputs, TDefaultHeaders> & (string extends keyof TOutputs ? object : Pick<WebApiRequests<TOutputs, TInputs>, Exclude<keyof TOutputs & string, keyof WebApiClient<TOutputs, TInputs, TDefaultHeaders> | (typeof WEB_API_REQUEST_RESERVED_NAMES)[number]>>);",
      "members": [],
      "typeParameters": [
        "TOutputs extends object = Record<string, unknown>",
        "TInputs extends object = Record<string, WebApiDefaultInputs>",
        "TDefaultHeaders extends object = Record<string, string>"
      ]
    },
    {
      "name": "QueryValue",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type QueryValue = string | number | boolean | null | undefined;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "apiOperationPath",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Shared by the browser tester and generated runtime for versioned requests. */\nexport function apiOperationPath(path: string, version?: number | null): string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WEB_API_RESPONSE_TYPES",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const WEB_API_RESPONSE_TYPES: readonly [\n    \"auto\",\n    \"json\",\n    \"text\",\n    \"blob\",\n    \"arrayBuffer\"\n];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebApiResponseType",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebApiResponseType = (typeof WEB_API_RESPONSE_TYPES)[number];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebApiBodyKind",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebApiBodyKind = 'none' | 'json' | 'text' | 'form-urlencoded' | 'form-data';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebApiConnection",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebApiConnection = 'custom' | 'restgo-session' | 'restgo-api-token' | 'restgo-public';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebApiCredentials",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebApiCredentials = 'omit' | 'same-origin' | 'include';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebApiOperationStatus",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebApiOperationStatus = 'idle' | 'loading' | 'success' | 'error';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebApiParameter",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "/** Structural, browser-safe counterpart of a persisted API parameter. */\nexport interface WebApiParameter {\n    readonly id: string;\n    readonly name: string;\n    readonly value: string;\n    readonly enabled: boolean;\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "readonly id: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "value",
          "kind": "property",
          "type": "string",
          "signature": "readonly value: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "enabled",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly enabled: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebApiRequestBody",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebApiRequestBody {\n    readonly kind: WebApiBodyKind;\n    readonly content: string;\n    readonly parameters?: readonly WebApiTemplateParameter[];\n}",
      "members": [
        {
          "name": "kind",
          "kind": "property",
          "type": "WebApiBodyKind",
          "signature": "readonly kind: WebApiBodyKind;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "content",
          "kind": "property",
          "type": "string",
          "signature": "readonly content: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "parameters",
          "kind": "property",
          "type": "readonly WebApiTemplateParameter[]",
          "signature": "readonly parameters?: readonly WebApiTemplateParameter[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebApiResponseSchemaNode",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "/** Structural contract consumed at runtime; it intentionally has no IDE dependency. */\nexport interface WebApiResponseSchemaNode {\n    readonly id: string;\n    readonly name: string;\n    readonly path: string;\n    readonly kind: 'field' | 'object' | 'list';\n    readonly fieldType: string;\n    readonly nullable: boolean;\n    readonly children: readonly WebApiResponseSchemaNode[];\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "readonly id: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "path",
          "kind": "property",
          "type": "string",
          "signature": "readonly path: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "kind",
          "kind": "property",
          "type": "'field' | 'object' | 'list'",
          "signature": "readonly kind: 'field' | 'object' | 'list';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fieldType",
          "kind": "property",
          "type": "string",
          "signature": "readonly fieldType: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "nullable",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly nullable: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "children",
          "kind": "property",
          "type": "readonly WebApiResponseSchemaNode[]",
          "signature": "readonly children: readonly WebApiResponseSchemaNode[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebApiResponseSchema",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebApiResponseSchema {\n    readonly version: 1;\n    readonly root: WebApiResponseSchemaNode;\n}",
      "members": [
        {
          "name": "version",
          "kind": "property",
          "type": "1",
          "signature": "readonly version: 1;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "root",
          "kind": "property",
          "type": "WebApiResponseSchemaNode",
          "signature": "readonly root: WebApiResponseSchemaNode;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebApiOperation",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebApiOperation {\n    readonly id: string;\n    readonly name: string;\n    readonly method: string;\n    readonly path: string;\n    readonly apiVersion?: number | null;\n    readonly authorization?: WebApiAuthorization | null;\n    readonly headers: readonly WebApiParameter[];\n    readonly query: readonly WebApiParameter[];\n    readonly body: WebApiRequestBody;\n    readonly credentials: WebApiCredentials;\n    readonly timeoutMs: number | null;\n    readonly responseSchema: WebApiResponseSchema | null;\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "readonly id: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "method",
          "kind": "property",
          "type": "string",
          "signature": "readonly method: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "path",
          "kind": "property",
          "type": "string",
          "signature": "readonly path: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "apiVersion",
          "kind": "property",
          "type": "number | null",
          "signature": "readonly apiVersion?: number | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "authorization",
          "kind": "property",
          "type": "WebApiAuthorization | null",
          "signature": "readonly authorization?: WebApiAuthorization | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "headers",
          "kind": "property",
          "type": "readonly WebApiParameter[]",
          "signature": "readonly headers: readonly WebApiParameter[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "query",
          "kind": "property",
          "type": "readonly WebApiParameter[]",
          "signature": "readonly query: readonly WebApiParameter[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "body",
          "kind": "property",
          "type": "WebApiRequestBody",
          "signature": "readonly body: WebApiRequestBody;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "credentials",
          "kind": "property",
          "type": "WebApiCredentials",
          "signature": "readonly credentials: WebApiCredentials;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "timeoutMs",
          "kind": "property",
          "type": "number | null",
          "signature": "readonly timeoutMs: number | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "responseSchema",
          "kind": "property",
          "type": "WebApiResponseSchema | null",
          "signature": "readonly responseSchema: WebApiResponseSchema | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebApiClientConfiguration",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebApiClientConfiguration {\n    readonly schemaVersion: number;\n    /** Omitted in existing projects, which continue to use their custom base URL. */\n    readonly connection?: WebApiConnection;\n    readonly authorization?: WebApiAuthorization | null;\n    readonly defaultHeaders: readonly WebApiParameter[];\n    readonly timeoutMs: number;\n    readonly operations: readonly WebApiOperation[];\n}",
      "members": [
        {
          "name": "schemaVersion",
          "kind": "property",
          "type": "number",
          "signature": "readonly schemaVersion: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "connection",
          "kind": "property",
          "type": "WebApiConnection",
          "signature": "readonly connection?: WebApiConnection;",
          "parameters": [],
          "description": "Omitted in existing projects, which continue to use their custom base URL.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "authorization",
          "kind": "property",
          "type": "WebApiAuthorization | null",
          "signature": "readonly authorization?: WebApiAuthorization | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "defaultHeaders",
          "kind": "property",
          "type": "readonly WebApiParameter[]",
          "signature": "readonly defaultHeaders: readonly WebApiParameter[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "timeoutMs",
          "kind": "property",
          "type": "number",
          "signature": "readonly timeoutMs: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "operations",
          "kind": "property",
          "type": "readonly WebApiOperation[]",
          "signature": "readonly operations: readonly WebApiOperation[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebApiRequestOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "Omit<RequestInit, 'body' | 'headers' | 'signal'>"
      ],
      "source": "export interface WebApiRequestOptions extends Omit<RequestInit, 'body' | 'headers' | 'signal'> {\n    readonly body?: unknown;\n    /** Values supplied to <name> placeholders in the configured body for execute(). */\n    readonly parameters?: WebApiTemplateValues;\n    readonly headers?: HeadersInit;\n    /** Overrides request/client authorization for this call; none explicitly disables it. */\n    readonly authorization?: WebApiAuthorization;\n    readonly query?: Readonly<Record<string, QueryValue | readonly QueryValue[]>>;\n    readonly signal?: AbortSignal | null;\n    /** Cancels the request after this duration without changing the component default. */\n    readonly timeoutMs?: number | null;\n    readonly responseType?: WebApiResponseType;\n}",
      "members": [
        {
          "name": "body",
          "kind": "property",
          "type": "unknown",
          "signature": "readonly body?: unknown;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "parameters",
          "kind": "property",
          "type": "WebApiTemplateValues",
          "signature": "readonly parameters?: WebApiTemplateValues;",
          "parameters": [],
          "description": "Values supplied to <name> placeholders in the configured body for execute().",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "headers",
          "kind": "property",
          "type": "HeadersInit",
          "signature": "readonly headers?: HeadersInit;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "authorization",
          "kind": "property",
          "type": "WebApiAuthorization",
          "signature": "readonly authorization?: WebApiAuthorization;",
          "parameters": [],
          "description": "Overrides request/client authorization for this call; none explicitly disables it.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "query",
          "kind": "property",
          "type": "Readonly<Record<string, QueryValue | readonly QueryValue[]>>",
          "signature": "readonly query?: Readonly<Record<string, QueryValue | readonly QueryValue[]>>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "signal",
          "kind": "property",
          "type": "AbortSignal | null",
          "signature": "readonly signal?: AbortSignal | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "timeoutMs",
          "kind": "property",
          "type": "number | null",
          "signature": "readonly timeoutMs?: number | null;",
          "parameters": [],
          "description": "Cancels the request after this duration without changing the component default.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "responseType",
          "kind": "property",
          "type": "WebApiResponseType",
          "signature": "readonly responseType?: WebApiResponseType;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebApiClientOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebNonvisualComponentOptions"
      ],
      "source": "export interface WebApiClientOptions extends WebNonvisualComponentOptions {\n    readonly baseUrl?: string;\n    /** Programmatic default headers, kept compatible with the original client API. */\n    readonly headers?: HeadersInit;\n    readonly fetch?: typeof globalThis.fetch;\n    /** Configuration materialized by the Project Model for named operations. */\n    readonly apiClientConfig?: WebApiClientConfiguration;\n}",
      "members": [
        {
          "name": "baseUrl",
          "kind": "property",
          "type": "string",
          "signature": "readonly baseUrl?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "headers",
          "kind": "property",
          "type": "HeadersInit",
          "signature": "readonly headers?: HeadersInit;",
          "parameters": [],
          "description": "Programmatic default headers, kept compatible with the original client API.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fetch",
          "kind": "property",
          "type": "typeof globalThis.fetch",
          "signature": "readonly fetch?: typeof globalThis.fetch;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "apiClientConfig",
          "kind": "property",
          "type": "WebApiClientConfiguration",
          "signature": "readonly apiClientConfig?: WebApiClientConfiguration;",
          "parameters": [],
          "description": "Configuration materialized by the Project Model for named operations.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebApiOperationState",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebApiOperationState<T = unknown> {\n    readonly status: WebApiOperationStatus;\n    readonly data?: T;\n    readonly error?: unknown;\n    readonly updatedAt?: number;\n}",
      "members": [
        {
          "name": "status",
          "kind": "property",
          "type": "WebApiOperationStatus",
          "signature": "readonly status: WebApiOperationStatus;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "data",
          "kind": "property",
          "type": "T",
          "signature": "readonly data?: T;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "error",
          "kind": "property",
          "type": "unknown",
          "signature": "readonly error?: unknown;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "updatedAt",
          "kind": "property",
          "type": "number",
          "signature": "readonly updatedAt?: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": [
        "T = unknown"
      ]
    },
    {
      "name": "WebApiOperationEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "/** Details supplied by the WebApiClient request lifecycle events. */\nexport interface WebApiOperationEventDetail<T = unknown> {\n    readonly operation: WebApiOperation;\n    readonly state: WebApiOperationState<T>;\n}",
      "members": [
        {
          "name": "operation",
          "kind": "property",
          "type": "WebApiOperation",
          "signature": "readonly operation: WebApiOperation;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "state",
          "kind": "property",
          "type": "WebApiOperationState<T>",
          "signature": "readonly state: WebApiOperationState<T>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": [
        "T = unknown"
      ]
    },
    {
      "name": "WebApiError",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "Error"
      ],
      "source": "export class WebApiError<TBody = unknown> extends Error {\n    readonly status: number;\n    readonly statusText: string;\n    readonly url: string;\n    readonly body: TBody;\n    readonly response: Response;\n    constructor(message: string, status: number, statusText: string, url: string, body: TBody, response: Response);\n}",
      "publicSource": "export class WebApiError<TBody = unknown> extends Error {\n    readonly status: number;\n    readonly statusText: string;\n    readonly url: string;\n    readonly body: TBody;\n    readonly response: Response;\n    constructor(message: string, status: number, statusText: string, url: string, body: TBody, response: Response);\n}",
      "members": [
        {
          "name": "status",
          "kind": "property",
          "type": "number",
          "signature": "readonly status: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "statusText",
          "kind": "property",
          "type": "string",
          "signature": "readonly statusText: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "url",
          "kind": "property",
          "type": "string",
          "signature": "readonly url: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "body",
          "kind": "property",
          "type": "TBody",
          "signature": "readonly body: TBody;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "response",
          "kind": "property",
          "type": "Response",
          "signature": "readonly response: Response;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": [
        "TBody = unknown"
      ]
    },
    {
      "name": "describeApiClientFetchFailure",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Enriches a browser fetch failure without exposing request headers, body or URL parameters. */\nexport function describeApiClientFetchFailure(error: TypeError, url: string, init: RequestInit): TypeError;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebApiTimeoutError",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "Error"
      ],
      "source": "export class WebApiTimeoutError extends Error {\n    readonly timeoutMs: number;\n    readonly url: string;\n    constructor(timeoutMs: number, url: string);\n}",
      "publicSource": "export class WebApiTimeoutError extends Error {\n    readonly timeoutMs: number;\n    readonly url: string;\n    constructor(timeoutMs: number, url: string);\n}",
      "members": [
        {
          "name": "timeoutMs",
          "kind": "property",
          "type": "number",
          "signature": "readonly timeoutMs: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "url",
          "kind": "property",
          "type": "string",
          "signature": "readonly url: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoApiSessionSource",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "/** A real shared SDK client or an explicitly supplied, transient test-session source. */\nexport interface RestGoApiSessionSource {\n    readonly baseUrl: string;\n    getSession(): Promise<import(\"@webrad/restgo-sdk\").RestGoResult<Pick<import(\"@webrad/restgo-sdk\").RestGoSession, 'token'> | null>>;\n}",
      "members": [
        {
          "name": "baseUrl",
          "kind": "property",
          "type": "string",
          "signature": "readonly baseUrl: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "getSession",
          "kind": "method",
          "type": "Promise<import(\"@webrad/restgo-sdk\").RestGoResult<Pick<import(\"@webrad/restgo-sdk\").RestGoSession, 'token'> | null>>",
          "signature": "getSession(): Promise<import(\"@webrad/restgo-sdk\").RestGoResult<Pick<import(\"@webrad/restgo-sdk\").RestGoSession, 'token'> | null>>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoApplicationApiSource",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface RestGoApplicationApiSource {\n    readonly baseUrl: string;\n    readonly apiToken?: string;\n}",
      "members": [
        {
          "name": "baseUrl",
          "kind": "property",
          "type": "string",
          "signature": "readonly baseUrl: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "apiToken",
          "kind": "property",
          "type": "string",
          "signature": "readonly apiToken?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "prepareRestGoApiRequest",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/**\n * Pins a REST request to the RestGo integration and validates its current user session.\n * The SDK validates/renews the session before the request; raw API tokens never qualify.\n * The optional source lets the IDE test with a transient JWT without persisting it.\n */\nexport function prepareRestGoApiRequest(endpoint: string, options?: RequestInit, source?: RestGoApiSessionSource): Promise<{\n    readonly url: string;\n    readonly init: RequestInit;\n}>;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "prepareRestGoApplicationApiRequest",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "/** Prepares public or application-token requests without borrowing a user or admin credential. */\nexport function prepareRestGoApplicationApiRequest(endpoint: string, authentication: 'public' | 'api-token', options?: RequestInit, source?: RestGoApplicationApiSource): {\n    readonly url: string;\n    readonly init: RequestInit;\n};",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebApiClient",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebNonvisualComponent"
      ],
      "source": "/**\n * Browser-safe HTTP client with direct requests and Project-Model backed named\n * operations. The latter retain transient state so future data components can\n * bind to an API result without using the DOM as a data store.\n */\nexport class WebApiClient<TOutputs extends object = Record<string, unknown>, TInputs extends object = Record<string, WebApiDefaultInputs>, TDefaultHeaders extends object = Record<string, string>> extends WebNonvisualComponent {\n    #private;\n    constructor(options?: WebApiClientOptions | string);\n    /** Typed view of the same instance, used by generated page and reusable code. */\n    withRequests(): WebApiClientInstance<TOutputs, TInputs, TDefaultHeaders>;\n    get baseUrl(): string;\n    set baseUrl(value: string);\n    /** Immutable normalized contract configured for this client instance. */\n    get apiClientConfig(): WebApiClientConfiguration;\n    set apiClientConfig(value: WebApiClientConfiguration);\n    get Configuration(): WebApiClientConfiguration;\n    set Configuration(value: WebApiClientConfiguration);\n    get Connection(): WebApiConnectionSettings<TDefaultHeaders>;\n    get Operation(): (keyof TOutputs & string) | undefined;\n    set Operation(value: (keyof TOutputs & string) | undefined);\n    get Requests(): WebApiRequests<TOutputs, TInputs>;\n    get Request(): WebApiRequest<WebApiCombinedInputs<TInputs, 'Parameter'>, TOutputs[keyof TOutputs], WebApiCombinedInputs<TInputs, 'Query'>, WebApiCombinedInputs<TInputs, 'Headers'>>;\n    get parameter(): WebApiParameterValues<WebApiCombinedInputs<TInputs, 'Parameter'>>;\n    get Query(): WebApiQueryValues<WebApiCombinedInputs<TInputs, 'Query'>>;\n    get Headers(): WebApiHeaderValues<WebApiCombinedInputs<TInputs, 'Headers'>>;\n    get Body(): WebApiBodySettings;\n    get Authorization(): WebApiAuthorization | null;\n    set Authorization(value: WebApiAuthorization | null);\n    get Options(): WebApiRequestSettings;\n    get Response(): WebApiResponse<TOutputs[keyof TOutputs]>;\n    get Method(): string;\n    set Method(value: string);\n    get Endpoint(): string;\n    set Endpoint(value: string);\n    get ApiVersion(): number | null;\n    set ApiVersion(value: number | null);\n    RequestByName<K extends keyof TOutputs & string>(name: K): WebApiRequests<TOutputs, TInputs>[K];\n    RequestByName(name: string): WebApiRequest;\n    ParamByName(name: string): WebApiNamedParameter;\n    ClearParameters(): void;\n    /** Saved operation metadata, safe for a Table or another consumer to inspect. */\n    get operations(): readonly WebApiOperation[];\n    set operations(value: readonly WebApiOperation[]);\n    /** Latest successful data, keyed by the configured operation name. */\n    get data(): Readonly<Partial<TOutputs>>;\n    /** State of the most recently executed operation. */\n    get status(): WebApiOperationStatus;\n    get error(): unknown;\n    getOperationState<T = unknown>(operationName: string): WebApiOperationState<T>;\n    /** Notifies runtime consumers whenever a named operation changes state. */\n    subscribe(listener: () => void): () => void;\n    request<T>(path: string, options?: WebApiRequestOptions): Promise<T>;\n    get<T>(path: string, options?: WebApiRequestOptions): Promise<T>;\n    post<T>(path: string, body?: unknown, options?: WebApiRequestOptions): Promise<T>;\n    put<T>(path: string, body?: unknown, options?: WebApiRequestOptions): Promise<T>;\n    patch<T>(path: string, body?: unknown, options?: WebApiRequestOptions): Promise<T>;\n    delete<T>(path: string, options?: WebApiRequestOptions): Promise<T>;\n    head(path: string, options?: WebApiRequestOptions): Promise<void>;\n    options<T>(path: string, options?: WebApiRequestOptions): Promise<T>;\n    execute<K extends keyof TOutputs & string>(operationName: K, options?: WebApiRequestOptions): Promise<TOutputs[K]>;\n    execute(options?: WebApiRequestOptions): Promise<TOutputs[keyof TOutputs]>;\n    execute<T = unknown>(operationName: string, options?: WebApiRequestOptions): Promise<T>;\n    /** Resolves any saved schema node from the latest result of one operation. */\n    getOutputById<T = unknown>(operationName: string, schemaNodeIdOrPath: string): T | undefined;\n    /** Returns a saved list output, or an empty readonly list when it is unavailable. */\n    getList<T = unknown>(operationName: string, schemaNodeIdOrPath: string): readonly T[];\n}",
      "publicSource": "/**\n * Browser-safe HTTP client with direct requests and Project-Model backed named\n * operations. The latter retain transient state so future data components can\n * bind to an API result without using the DOM as a data store.\n */\nexport class WebApiClient<TOutputs extends object = Record<string, unknown>, TInputs extends object = Record<string, WebApiDefaultInputs>, TDefaultHeaders extends object = Record<string, string>> extends WebNonvisualComponent {\n    constructor(options?: WebApiClientOptions | string);\n    /** Typed view of the same instance, used by generated page and reusable code. */\n    withRequests(): WebApiClientInstance<TOutputs, TInputs, TDefaultHeaders>;\n    get baseUrl(): string;\n    set baseUrl(value: string);\n    /** Immutable normalized contract configured for this client instance. */\n    get apiClientConfig(): WebApiClientConfiguration;\n    set apiClientConfig(value: WebApiClientConfiguration);\n    get Configuration(): WebApiClientConfiguration;\n    set Configuration(value: WebApiClientConfiguration);\n    get Connection(): WebApiConnectionSettings<TDefaultHeaders>;\n    get Operation(): (keyof TOutputs & string) | undefined;\n    set Operation(value: (keyof TOutputs & string) | undefined);\n    get Requests(): WebApiRequests<TOutputs, TInputs>;\n    get Request(): WebApiRequest<WebApiCombinedInputs<TInputs, 'Parameter'>, TOutputs[keyof TOutputs], WebApiCombinedInputs<TInputs, 'Query'>, WebApiCombinedInputs<TInputs, 'Headers'>>;\n    get parameter(): WebApiParameterValues<WebApiCombinedInputs<TInputs, 'Parameter'>>;\n    get Query(): WebApiQueryValues<WebApiCombinedInputs<TInputs, 'Query'>>;\n    get Headers(): WebApiHeaderValues<WebApiCombinedInputs<TInputs, 'Headers'>>;\n    get Body(): WebApiBodySettings;\n    get Authorization(): WebApiAuthorization | null;\n    set Authorization(value: WebApiAuthorization | null);\n    get Options(): WebApiRequestSettings;\n    get Response(): WebApiResponse<TOutputs[keyof TOutputs]>;\n    get Method(): string;\n    set Method(value: string);\n    get Endpoint(): string;\n    set Endpoint(value: string);\n    get ApiVersion(): number | null;\n    set ApiVersion(value: number | null);\n    RequestByName<K extends keyof TOutputs & string>(name: K): WebApiRequests<TOutputs, TInputs>[K];\n    RequestByName(name: string): WebApiRequest;\n    ParamByName(name: string): WebApiNamedParameter;\n    ClearParameters(): void;\n    /** Saved operation metadata, safe for a Table or another consumer to inspect. */\n    get operations(): readonly WebApiOperation[];\n    set operations(value: readonly WebApiOperation[]);\n    /** Latest successful data, keyed by the configured operation name. */\n    get data(): Readonly<Partial<TOutputs>>;\n    /** State of the most recently executed operation. */\n    get status(): WebApiOperationStatus;\n    get error(): unknown;\n    getOperationState<T = unknown>(operationName: string): WebApiOperationState<T>;\n    /** Notifies runtime consumers whenever a named operation changes state. */\n    subscribe(listener: () => void): () => void;\n    request<T>(path: string, options?: WebApiRequestOptions): Promise<T>;\n    get<T>(path: string, options?: WebApiRequestOptions): Promise<T>;\n    post<T>(path: string, body?: unknown, options?: WebApiRequestOptions): Promise<T>;\n    put<T>(path: string, body?: unknown, options?: WebApiRequestOptions): Promise<T>;\n    patch<T>(path: string, body?: unknown, options?: WebApiRequestOptions): Promise<T>;\n    delete<T>(path: string, options?: WebApiRequestOptions): Promise<T>;\n    head(path: string, options?: WebApiRequestOptions): Promise<void>;\n    options<T>(path: string, options?: WebApiRequestOptions): Promise<T>;\n    execute<K extends keyof TOutputs & string>(operationName: K, options?: WebApiRequestOptions): Promise<TOutputs[K]>;\n    execute(options?: WebApiRequestOptions): Promise<TOutputs[keyof TOutputs]>;\n    execute<T = unknown>(operationName: string, options?: WebApiRequestOptions): Promise<T>;\n    /** Resolves any saved schema node from the latest result of one operation. */\n    getOutputById<T = unknown>(operationName: string, schemaNodeIdOrPath: string): T | undefined;\n    /** Returns a saved list output, or an empty readonly list when it is unavailable. */\n    getList<T = unknown>(operationName: string, schemaNodeIdOrPath: string): readonly T[];\n}",
      "members": [
        {
          "name": "withRequests",
          "kind": "method",
          "type": "WebApiClientInstance<TOutputs, TInputs, TDefaultHeaders>",
          "signature": "withRequests(): WebApiClientInstance<TOutputs, TInputs, TDefaultHeaders>;",
          "parameters": [],
          "description": "Typed view of the same instance, used by generated page and reusable code.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "baseUrl",
          "kind": "get",
          "type": "string",
          "signature": "get baseUrl(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "apiClientConfig",
          "kind": "get",
          "type": "WebApiClientConfiguration",
          "signature": "get apiClientConfig(): WebApiClientConfiguration;",
          "parameters": [],
          "description": "Immutable normalized contract configured for this client instance.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Configuration",
          "kind": "get",
          "type": "WebApiClientConfiguration",
          "signature": "get Configuration(): WebApiClientConfiguration;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Connection",
          "kind": "get",
          "type": "WebApiConnectionSettings<TDefaultHeaders>",
          "signature": "get Connection(): WebApiConnectionSettings<TDefaultHeaders>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Operation",
          "kind": "get",
          "type": "(keyof TOutputs & string) | undefined",
          "signature": "get Operation(): (keyof TOutputs & string) | undefined;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Requests",
          "kind": "get",
          "type": "WebApiRequests<TOutputs, TInputs>",
          "signature": "get Requests(): WebApiRequests<TOutputs, TInputs>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Request",
          "kind": "get",
          "type": "WebApiRequest<WebApiCombinedInputs<TInputs, 'Parameter'>, TOutputs[keyof TOutputs], WebApiCombinedInputs<TInputs, 'Query'>, WebApiCombinedInputs<TInputs, 'Headers'>>",
          "signature": "get Request(): WebApiRequest<WebApiCombinedInputs<TInputs, 'Parameter'>, TOutputs[keyof TOutputs], WebApiCombinedInputs<TInputs, 'Query'>, WebApiCombinedInputs<TInputs, 'Headers'>>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "parameter",
          "kind": "get",
          "type": "WebApiParameterValues<WebApiCombinedInputs<TInputs, 'Parameter'>>",
          "signature": "get parameter(): WebApiParameterValues<WebApiCombinedInputs<TInputs, 'Parameter'>>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Query",
          "kind": "get",
          "type": "WebApiQueryValues<WebApiCombinedInputs<TInputs, 'Query'>>",
          "signature": "get Query(): WebApiQueryValues<WebApiCombinedInputs<TInputs, 'Query'>>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Headers",
          "kind": "get",
          "type": "WebApiHeaderValues<WebApiCombinedInputs<TInputs, 'Headers'>>",
          "signature": "get Headers(): WebApiHeaderValues<WebApiCombinedInputs<TInputs, 'Headers'>>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Body",
          "kind": "get",
          "type": "WebApiBodySettings",
          "signature": "get Body(): WebApiBodySettings;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Authorization",
          "kind": "get",
          "type": "WebApiAuthorization | null",
          "signature": "get Authorization(): WebApiAuthorization | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Options",
          "kind": "get",
          "type": "WebApiRequestSettings",
          "signature": "get Options(): WebApiRequestSettings;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Response",
          "kind": "get",
          "type": "WebApiResponse<TOutputs[keyof TOutputs]>",
          "signature": "get Response(): WebApiResponse<TOutputs[keyof TOutputs]>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Method",
          "kind": "get",
          "type": "string",
          "signature": "get Method(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Endpoint",
          "kind": "get",
          "type": "string",
          "signature": "get Endpoint(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "ApiVersion",
          "kind": "get",
          "type": "number | null",
          "signature": "get ApiVersion(): number | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "RequestByName",
          "kind": "method",
          "type": "WebApiRequests<TOutputs, TInputs>[K]",
          "signature": "RequestByName<K extends keyof TOutputs & string>(name: K): WebApiRequests<TOutputs, TInputs>[K];",
          "parameters": [
            {
              "name": "name",
              "type": "K",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "RequestByName",
          "kind": "method",
          "type": "WebApiRequest",
          "signature": "RequestByName(name: string): WebApiRequest;",
          "parameters": [
            {
              "name": "name",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "ParamByName",
          "kind": "method",
          "type": "WebApiNamedParameter",
          "signature": "ParamByName(name: string): WebApiNamedParameter;",
          "parameters": [
            {
              "name": "name",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "ClearParameters",
          "kind": "method",
          "type": "void",
          "signature": "ClearParameters(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "operations",
          "kind": "get",
          "type": "readonly WebApiOperation[]",
          "signature": "get operations(): readonly WebApiOperation[];",
          "parameters": [],
          "description": "Saved operation metadata, safe for a Table or another consumer to inspect.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "data",
          "kind": "get",
          "type": "Readonly<Partial<TOutputs>>",
          "signature": "get data(): Readonly<Partial<TOutputs>>;",
          "parameters": [],
          "description": "Latest successful data, keyed by the configured operation name.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "status",
          "kind": "get",
          "type": "WebApiOperationStatus",
          "signature": "get status(): WebApiOperationStatus;",
          "parameters": [],
          "description": "State of the most recently executed operation.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "error",
          "kind": "get",
          "type": "unknown",
          "signature": "get error(): unknown;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "getOperationState",
          "kind": "method",
          "type": "WebApiOperationState<T>",
          "signature": "getOperationState<T = unknown>(operationName: string): WebApiOperationState<T>;",
          "parameters": [
            {
              "name": "operationName",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "subscribe",
          "kind": "method",
          "type": "() => void",
          "signature": "subscribe(listener: () => void): () => void;",
          "parameters": [
            {
              "name": "listener",
              "type": "() => void",
              "optional": false,
              "rest": false
            }
          ],
          "description": "Notifies runtime consumers whenever a named operation changes state.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "request",
          "kind": "method",
          "type": "Promise<T>",
          "signature": "request<T>(path: string, options?: WebApiRequestOptions): Promise<T>;",
          "parameters": [
            {
              "name": "path",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "WebApiRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "get",
          "kind": "method",
          "type": "Promise<T>",
          "signature": "get<T>(path: string, options?: WebApiRequestOptions): Promise<T>;",
          "parameters": [
            {
              "name": "path",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "WebApiRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "post",
          "kind": "method",
          "type": "Promise<T>",
          "signature": "post<T>(path: string, body?: unknown, options?: WebApiRequestOptions): Promise<T>;",
          "parameters": [
            {
              "name": "path",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "body",
              "type": "unknown",
              "optional": true,
              "rest": false
            },
            {
              "name": "options",
              "type": "WebApiRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "put",
          "kind": "method",
          "type": "Promise<T>",
          "signature": "put<T>(path: string, body?: unknown, options?: WebApiRequestOptions): Promise<T>;",
          "parameters": [
            {
              "name": "path",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "body",
              "type": "unknown",
              "optional": true,
              "rest": false
            },
            {
              "name": "options",
              "type": "WebApiRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "patch",
          "kind": "method",
          "type": "Promise<T>",
          "signature": "patch<T>(path: string, body?: unknown, options?: WebApiRequestOptions): Promise<T>;",
          "parameters": [
            {
              "name": "path",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "body",
              "type": "unknown",
              "optional": true,
              "rest": false
            },
            {
              "name": "options",
              "type": "WebApiRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "delete",
          "kind": "method",
          "type": "Promise<T>",
          "signature": "delete<T>(path: string, options?: WebApiRequestOptions): Promise<T>;",
          "parameters": [
            {
              "name": "path",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "WebApiRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "head",
          "kind": "method",
          "type": "Promise<void>",
          "signature": "head(path: string, options?: WebApiRequestOptions): Promise<void>;",
          "parameters": [
            {
              "name": "path",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "WebApiRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "options",
          "kind": "method",
          "type": "Promise<T>",
          "signature": "options<T>(path: string, options?: WebApiRequestOptions): Promise<T>;",
          "parameters": [
            {
              "name": "path",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "WebApiRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "execute",
          "kind": "method",
          "type": "Promise<TOutputs[K]>",
          "signature": "execute<K extends keyof TOutputs & string>(operationName: K, options?: WebApiRequestOptions): Promise<TOutputs[K]>;",
          "parameters": [
            {
              "name": "operationName",
              "type": "K",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "WebApiRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "execute",
          "kind": "method",
          "type": "Promise<TOutputs[keyof TOutputs]>",
          "signature": "execute(options?: WebApiRequestOptions): Promise<TOutputs[keyof TOutputs]>;",
          "parameters": [
            {
              "name": "options",
              "type": "WebApiRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "execute",
          "kind": "method",
          "type": "Promise<T>",
          "signature": "execute<T = unknown>(operationName: string, options?: WebApiRequestOptions): Promise<T>;",
          "parameters": [
            {
              "name": "operationName",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "WebApiRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "getOutputById",
          "kind": "method",
          "type": "T | undefined",
          "signature": "getOutputById<T = unknown>(operationName: string, schemaNodeIdOrPath: string): T | undefined;",
          "parameters": [
            {
              "name": "operationName",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "schemaNodeIdOrPath",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "Resolves any saved schema node from the latest result of one operation.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "getList",
          "kind": "method",
          "type": "readonly T[]",
          "signature": "getList<T = unknown>(operationName: string, schemaNodeIdOrPath: string): readonly T[];",
          "parameters": [
            {
              "name": "operationName",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "schemaNodeIdOrPath",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "Returns a saved list output, or an empty readonly list when it is unavailable.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": [
        "TOutputs extends object = Record<string, unknown>",
        "TInputs extends object = Record<string, WebApiDefaultInputs>",
        "TDefaultHeaders extends object = Record<string, string>"
      ]
    },
    {
      "name": "WebVideoUploadSelection",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebFileUploadSelection"
      ],
      "source": "export interface WebVideoUploadSelection extends WebFileUploadSelection {\n    /** Seconds, or null when the browser cannot decode this container/codec. */\n    readonly duration: number | null;\n}",
      "members": [
        {
          "name": "duration",
          "kind": "property",
          "type": "number | null",
          "signature": "readonly duration: number | null;",
          "parameters": [],
          "description": "Seconds, or null when the browser cannot decode this container/codec.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebVideoUploadConfiguration",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebNonvisualComponentOptions"
      ],
      "source": "export interface WebVideoUploadConfiguration extends WebNonvisualComponentOptions {\n    readonly accept?: string;\n    readonly enabled?: boolean;\n    readonly title?: string;\n    readonly descri?: string;\n    readonly isPublic?: boolean;\n    readonly chunkSizeBytes?: number;\n    /** MiB (1024² bytes). Null disables the local file-size limit. */\n    readonly maxFileSizeMB?: number | null;\n    /** Null disables the local duration limit. */\n    readonly maxDurationSeconds?: number | null;\n}",
      "members": [
        {
          "name": "accept",
          "kind": "property",
          "type": "string",
          "signature": "readonly accept?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "enabled",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly enabled?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "title",
          "kind": "property",
          "type": "string",
          "signature": "readonly title?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "descri",
          "kind": "property",
          "type": "string",
          "signature": "readonly descri?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "isPublic",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly isPublic?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "chunkSizeBytes",
          "kind": "property",
          "type": "number",
          "signature": "readonly chunkSizeBytes?: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "maxFileSizeMB",
          "kind": "property",
          "type": "number | null",
          "signature": "readonly maxFileSizeMB?: number | null;",
          "parameters": [],
          "description": "MiB (1024² bytes). Null disables the local file-size limit.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "maxDurationSeconds",
          "kind": "property",
          "type": "number | null",
          "signature": "readonly maxDurationSeconds?: number | null;",
          "parameters": [],
          "description": "Null disables the local duration limit.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebVideoUploadOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebVideoUploadOptions {\n    readonly title?: string;\n    readonly descri?: string;\n    readonly isPublic?: boolean;\n    readonly signal?: AbortSignal;\n}",
      "members": [
        {
          "name": "title",
          "kind": "property",
          "type": "string",
          "signature": "readonly title?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "descri",
          "kind": "property",
          "type": "string",
          "signature": "readonly descri?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "isPublic",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly isPublic?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "signal",
          "kind": "property",
          "type": "AbortSignal",
          "signature": "readonly signal?: AbortSignal;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebVideoUploadResumeOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebVideoUploadOptions"
      ],
      "source": "export interface WebVideoUploadResumeOptions extends WebVideoUploadOptions {\n    /** Supply a saved checkpoint after reload, after selecting the original file again. */\n    readonly resumeToken?: import(\"@webrad/restgo-sdk\").RestGoVideoResumeToken;\n}",
      "members": [
        {
          "name": "resumeToken",
          "kind": "property",
          "type": "import(\"@webrad/restgo-sdk\").RestGoVideoResumeToken",
          "signature": "readonly resumeToken?: import(\"@webrad/restgo-sdk\").RestGoVideoResumeToken;",
          "parameters": [],
          "description": "Supply a saved checkpoint after reload, after selecting the original file again.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebVideoUploadState",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebVideoUploadState = 'idle' | 'selecting' | 'selected' | 'hashing' | 'creating' | 'uploading' | 'paused' | 'finalizing' | 'uploaded' | 'waiting' | 'ready' | 'cancelling' | 'cancelled' | 'error';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebVideoUploadProgressEventDetail",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebVideoUploadProgressEventDetail = import(\"@webrad/restgo-sdk\").RestGoVideoProgress;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebVideoUploadProcessingEventDetail",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebVideoUploadProcessingEventDetail = import(\"@webrad/restgo-sdk\").RestGoVideoDetails;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebVideoUploadChangeEventDetail",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebVideoUploadChangeEventDetail = WebVideoUploadSelection | null;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebVideoUploadResult",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebVideoUploadResult = import(\"@webrad/restgo-sdk\").RestGoVideo;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebVideoUploadStateEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebVideoUploadStateEventDetail {\n    readonly previous: WebVideoUploadState;\n    readonly state: WebVideoUploadState;\n}",
      "members": [
        {
          "name": "previous",
          "kind": "property",
          "type": "WebVideoUploadState",
          "signature": "readonly previous: WebVideoUploadState;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "state",
          "kind": "property",
          "type": "WebVideoUploadState",
          "signature": "readonly state: WebVideoUploadState;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebVideoUploadCompleteEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebVideoUploadCompleteEventDetail {\n    readonly operation: 'upload' | 'processing' | 'cancel';\n    readonly video: import(\"@webrad/restgo-sdk\").RestGoVideo | null;\n    readonly error: Error | null;\n}",
      "members": [
        {
          "name": "operation",
          "kind": "property",
          "type": "'upload' | 'processing' | 'cancel'",
          "signature": "readonly operation: 'upload' | 'processing' | 'cancel';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "video",
          "kind": "property",
          "type": "import(\"@webrad/restgo-sdk\").RestGoVideo | null",
          "signature": "readonly video: import(\"@webrad/restgo-sdk\").RestGoVideo | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "error",
          "kind": "property",
          "type": "Error | null",
          "signature": "readonly error: Error | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebVideoUpload",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebNonvisualComponent"
      ],
      "source": "/** Nonvisual resumable uploader. Conversion runs on RestGo; waiting is explicit. */\nexport class WebVideoUpload extends WebNonvisualComponent {\n    #private;\n    title: string;\n    descri: string;\n    isPublic: boolean;\n    constructor(configuration?: WebVideoUploadConfiguration);\n    get accept(): string;\n    set accept(value: string);\n    get enabled(): boolean;\n    set enabled(value: boolean);\n    get maxFileSizeMB(): number | null;\n    set maxFileSizeMB(value: number | null);\n    get maxDurationSeconds(): number | null;\n    set maxDurationSeconds(value: number | null);\n    get chunkSizeBytes(): number;\n    set chunkSizeBytes(value: number);\n    get selectedFile(): File | null;\n    get selection(): WebVideoUploadSelection | null;\n    get uploadSession(): import(\"@webrad/restgo-sdk\").RestGoVideoUploadSession | null;\n    get resumeToken(): import(\"@webrad/restgo-sdk\").RestGoVideoResumeToken | null;\n    get video(): import(\"@webrad/restgo-sdk\").RestGoVideo | null;\n    get state(): WebVideoUploadState;\n    get confirmedBytes(): number;\n    get totalBytes(): number;\n    get percentage(): number | null;\n    get processingProgress(): number | null;\n    get error(): Error | null;\n    /** Opens the chooser from a user gesture. It never creates or sends an upload. */\n    OpenFile(): Promise<WebVideoUploadSelection | null>;\n    SendToRestGO(options?: WebVideoUploadOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoVideo>;\n    Resume(options?: WebVideoUploadResumeOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoVideo>;\n    /** Aborts only local upload I/O. The server session remains resumable. */\n    Pause(): void;\n    /** Explicitly cancels the open upload on RestGo. It does not cancel conversion jobs. */\n    CancelUpload(): Promise<void>;\n    WaitUntilReady(options?: import(\"@webrad/restgo-sdk\").RestGoVideoWaitOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoVideo>;\n    /** Clears local state and stops requests. No remote video/session is deleted. */\n    Clear(): void;\n    set onChange(handler: WebComponentEventHandler<this> | null);\n    set onProgress(handler: WebComponentEventHandler<this> | null);\n    set onStateChange(handler: WebComponentEventHandler<this> | null);\n    set onUploadComplete(handler: WebComponentEventHandler<this> | null);\n    set onProcessingProgress(handler: WebComponentEventHandler<this> | null);\n    set onReady(handler: WebComponentEventHandler<this> | null);\n    set onError(handler: WebComponentEventHandler<this> | null);\n    set onComplete(handler: WebComponentEventHandler<this> | null);\n    dispose(): void;\n}",
      "publicSource": "/** Nonvisual resumable uploader. Conversion runs on RestGo; waiting is explicit. */\nexport class WebVideoUpload extends WebNonvisualComponent {\n    title: string;\n    descri: string;\n    isPublic: boolean;\n    constructor(configuration?: WebVideoUploadConfiguration);\n    get accept(): string;\n    set accept(value: string);\n    get enabled(): boolean;\n    set enabled(value: boolean);\n    get maxFileSizeMB(): number | null;\n    set maxFileSizeMB(value: number | null);\n    get maxDurationSeconds(): number | null;\n    set maxDurationSeconds(value: number | null);\n    get chunkSizeBytes(): number;\n    set chunkSizeBytes(value: number);\n    get selectedFile(): File | null;\n    get selection(): WebVideoUploadSelection | null;\n    get uploadSession(): import(\"@webrad/restgo-sdk\").RestGoVideoUploadSession | null;\n    get resumeToken(): import(\"@webrad/restgo-sdk\").RestGoVideoResumeToken | null;\n    get video(): import(\"@webrad/restgo-sdk\").RestGoVideo | null;\n    get state(): WebVideoUploadState;\n    get confirmedBytes(): number;\n    get totalBytes(): number;\n    get percentage(): number | null;\n    get processingProgress(): number | null;\n    get error(): Error | null;\n    /** Opens the chooser from a user gesture. It never creates or sends an upload. */\n    OpenFile(): Promise<WebVideoUploadSelection | null>;\n    SendToRestGO(options?: WebVideoUploadOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoVideo>;\n    Resume(options?: WebVideoUploadResumeOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoVideo>;\n    /** Aborts only local upload I/O. The server session remains resumable. */\n    Pause(): void;\n    /** Explicitly cancels the open upload on RestGo. It does not cancel conversion jobs. */\n    CancelUpload(): Promise<void>;\n    WaitUntilReady(options?: import(\"@webrad/restgo-sdk\").RestGoVideoWaitOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoVideo>;\n    /** Clears local state and stops requests. No remote video/session is deleted. */\n    Clear(): void;\n    set onChange(handler: WebComponentEventHandler<this> | null);\n    set onProgress(handler: WebComponentEventHandler<this> | null);\n    set onStateChange(handler: WebComponentEventHandler<this> | null);\n    set onUploadComplete(handler: WebComponentEventHandler<this> | null);\n    set onProcessingProgress(handler: WebComponentEventHandler<this> | null);\n    set onReady(handler: WebComponentEventHandler<this> | null);\n    set onError(handler: WebComponentEventHandler<this> | null);\n    set onComplete(handler: WebComponentEventHandler<this> | null);\n    dispose(): void;\n}",
      "members": [
        {
          "name": "title",
          "kind": "property",
          "type": "string",
          "signature": "title: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "descri",
          "kind": "property",
          "type": "string",
          "signature": "descri: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "isPublic",
          "kind": "property",
          "type": "boolean",
          "signature": "isPublic: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "accept",
          "kind": "get",
          "type": "string",
          "signature": "get accept(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "enabled",
          "kind": "get",
          "type": "boolean",
          "signature": "get enabled(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "maxFileSizeMB",
          "kind": "get",
          "type": "number | null",
          "signature": "get maxFileSizeMB(): number | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "maxDurationSeconds",
          "kind": "get",
          "type": "number | null",
          "signature": "get maxDurationSeconds(): number | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "chunkSizeBytes",
          "kind": "get",
          "type": "number",
          "signature": "get chunkSizeBytes(): number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "selectedFile",
          "kind": "get",
          "type": "File | null",
          "signature": "get selectedFile(): File | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "selection",
          "kind": "get",
          "type": "WebVideoUploadSelection | null",
          "signature": "get selection(): WebVideoUploadSelection | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "uploadSession",
          "kind": "get",
          "type": "import(\"@webrad/restgo-sdk\").RestGoVideoUploadSession | null",
          "signature": "get uploadSession(): import(\"@webrad/restgo-sdk\").RestGoVideoUploadSession | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "resumeToken",
          "kind": "get",
          "type": "import(\"@webrad/restgo-sdk\").RestGoVideoResumeToken | null",
          "signature": "get resumeToken(): import(\"@webrad/restgo-sdk\").RestGoVideoResumeToken | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "video",
          "kind": "get",
          "type": "import(\"@webrad/restgo-sdk\").RestGoVideo | null",
          "signature": "get video(): import(\"@webrad/restgo-sdk\").RestGoVideo | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "state",
          "kind": "get",
          "type": "WebVideoUploadState",
          "signature": "get state(): WebVideoUploadState;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "confirmedBytes",
          "kind": "get",
          "type": "number",
          "signature": "get confirmedBytes(): number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "totalBytes",
          "kind": "get",
          "type": "number",
          "signature": "get totalBytes(): number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "percentage",
          "kind": "get",
          "type": "number | null",
          "signature": "get percentage(): number | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "processingProgress",
          "kind": "get",
          "type": "number | null",
          "signature": "get processingProgress(): number | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "error",
          "kind": "get",
          "type": "Error | null",
          "signature": "get error(): Error | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "OpenFile",
          "kind": "method",
          "type": "Promise<WebVideoUploadSelection | null>",
          "signature": "OpenFile(): Promise<WebVideoUploadSelection | null>;",
          "parameters": [],
          "description": "Opens the chooser from a user gesture. It never creates or sends an upload.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "SendToRestGO",
          "kind": "method",
          "type": "Promise<import(\"@webrad/restgo-sdk\").RestGoVideo>",
          "signature": "SendToRestGO(options?: WebVideoUploadOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoVideo>;",
          "parameters": [
            {
              "name": "options",
              "type": "WebVideoUploadOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Resume",
          "kind": "method",
          "type": "Promise<import(\"@webrad/restgo-sdk\").RestGoVideo>",
          "signature": "Resume(options?: WebVideoUploadResumeOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoVideo>;",
          "parameters": [
            {
              "name": "options",
              "type": "WebVideoUploadResumeOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Pause",
          "kind": "method",
          "type": "void",
          "signature": "Pause(): void;",
          "parameters": [],
          "description": "Aborts only local upload I/O. The server session remains resumable.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "CancelUpload",
          "kind": "method",
          "type": "Promise<void>",
          "signature": "CancelUpload(): Promise<void>;",
          "parameters": [],
          "description": "Explicitly cancels the open upload on RestGo. It does not cancel conversion jobs.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "WaitUntilReady",
          "kind": "method",
          "type": "Promise<import(\"@webrad/restgo-sdk\").RestGoVideo>",
          "signature": "WaitUntilReady(options?: import(\"@webrad/restgo-sdk\").RestGoVideoWaitOptions): Promise<import(\"@webrad/restgo-sdk\").RestGoVideo>;",
          "parameters": [
            {
              "name": "options",
              "type": "import(\"@webrad/restgo-sdk\").RestGoVideoWaitOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Clear",
          "kind": "method",
          "type": "void",
          "signature": "Clear(): void;",
          "parameters": [],
          "description": "Clears local state and stops requests. No remote video/session is deleted.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onChange",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onChange(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onProgress",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onProgress(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onStateChange",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onStateChange(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onUploadComplete",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onUploadComplete(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onProcessingProgress",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onProcessingProgress(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onReady",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onReady(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onError",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onError(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onComplete",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onComplete(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebVideoPlayerSource",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebVideoPlayerSource = {\n    readonly kind: 'restgo';\n    readonly videoId: string;\n} | {\n    readonly kind: 'url';\n    readonly url: string;\n    readonly format: 'hls' | 'dash';\n};",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebVideoPlayerState",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebVideoPlayerState = 'idle' | 'loading' | 'loaded' | 'playing' | 'paused' | 'ended' | 'error' | 'disposed';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebVideoPlayerQuality",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebVideoPlayerQuality = 'auto' | number;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebVideoPlayerObjectFit",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebVideoPlayerObjectFit = 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebVideoPlayerAspectRatio",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type WebVideoPlayerAspectRatio = 'none' | '16:9' | '9:16';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebVideoPlayerLoadOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebVideoPlayerLoadOptions {\n    readonly signal?: AbortSignal;\n    readonly startTime?: number;\n}",
      "members": [
        {
          "name": "signal",
          "kind": "property",
          "type": "AbortSignal",
          "signature": "readonly signal?: AbortSignal;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "startTime",
          "kind": "property",
          "type": "number",
          "signature": "readonly startTime?: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebVideoPlayerRestGoOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebVideoPlayerLoadOptions"
      ],
      "source": "export interface WebVideoPlayerRestGoOptions extends WebVideoPlayerLoadOptions {\n    readonly public?: boolean;\n}",
      "members": [
        {
          "name": "public",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly public?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebVideoPlayerUrlOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "WebVideoPlayerLoadOptions"
      ],
      "source": "export interface WebVideoPlayerUrlOptions extends WebVideoPlayerLoadOptions {\n    readonly format?: 'hls' | 'dash';\n}",
      "members": [
        {
          "name": "format",
          "kind": "property",
          "type": "'hls' | 'dash'",
          "signature": "readonly format?: 'hls' | 'dash';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebVideoPlayerAvailableQuality",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebVideoPlayerAvailableQuality {\n    readonly quality: number;\n    readonly width: number;\n    readonly height: number;\n    readonly codecs: string;\n}",
      "members": [
        {
          "name": "quality",
          "kind": "property",
          "type": "number",
          "signature": "readonly quality: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "width",
          "kind": "property",
          "type": "number",
          "signature": "readonly width: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "height",
          "kind": "property",
          "type": "number",
          "signature": "readonly height: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "codecs",
          "kind": "property",
          "type": "string",
          "signature": "readonly codecs: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebVideoPlayerLoadedEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebVideoPlayerLoadedEventDetail {\n    readonly source: WebVideoPlayerSource;\n    readonly duration: number;\n    readonly availableQualities: readonly WebVideoPlayerAvailableQuality[];\n}",
      "members": [
        {
          "name": "source",
          "kind": "property",
          "type": "WebVideoPlayerSource",
          "signature": "readonly source: WebVideoPlayerSource;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "duration",
          "kind": "property",
          "type": "number",
          "signature": "readonly duration: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "availableQualities",
          "kind": "property",
          "type": "readonly WebVideoPlayerAvailableQuality[]",
          "signature": "readonly availableQualities: readonly WebVideoPlayerAvailableQuality[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebVideoPlayerTimeEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebVideoPlayerTimeEventDetail {\n    readonly currentTime: number;\n    readonly duration: number;\n}",
      "members": [
        {
          "name": "currentTime",
          "kind": "property",
          "type": "number",
          "signature": "readonly currentTime: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "duration",
          "kind": "property",
          "type": "number",
          "signature": "readonly duration: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebVideoPlayerBufferingEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebVideoPlayerBufferingEventDetail {\n    readonly buffering: boolean;\n}",
      "members": [
        {
          "name": "buffering",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly buffering: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebVideoPlayerQualityEventDetail",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebVideoPlayerQualityEventDetail {\n    readonly requested: WebVideoPlayerQuality;\n    readonly current: number | null;\n}",
      "members": [
        {
          "name": "requested",
          "kind": "property",
          "type": "WebVideoPlayerQuality",
          "signature": "readonly requested: WebVideoPlayerQuality;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "current",
          "kind": "property",
          "type": "number | null",
          "signature": "readonly current: number | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebVideoPlayerBufferedRange",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface WebVideoPlayerBufferedRange {\n    readonly start: number;\n    readonly end: number;\n}",
      "members": [
        {
          "name": "start",
          "kind": "property",
          "type": "number",
          "signature": "readonly start: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "end",
          "kind": "property",
          "type": "number",
          "signature": "readonly end: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebVideoPlayer",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [
        "WebComponent"
      ],
      "source": "/** One real Shaka player per component element, shared by mounting and generated instances. */\nexport class WebVideoPlayer extends WebComponent {\n    #private;\n    constructor(element: HTMLElement);\n    get source(): WebVideoPlayerSource | null;\n    set source(value: WebVideoPlayerSource | null);\n    get controls(): boolean;\n    set controls(value: boolean);\n    get autoplay(): boolean;\n    set autoplay(value: boolean);\n    get muted(): boolean;\n    set muted(value: boolean);\n    get loop(): boolean;\n    set loop(value: boolean);\n    get playsInline(): boolean;\n    set playsInline(value: boolean);\n    get volume(): number;\n    set volume(value: number);\n    get playbackRate(): number;\n    set playbackRate(value: number);\n    get objectFit(): WebVideoPlayerObjectFit;\n    set objectFit(value: WebVideoPlayerObjectFit);\n    /** Fixed ratios derive height from the responsive width, overriding vertical sizing rules. */\n    get aspectRatio(): WebVideoPlayerAspectRatio;\n    set aspectRatio(value: WebVideoPlayerAspectRatio);\n    get poster(): string;\n    set poster(value: string);\n    get enabled(): boolean;\n    set enabled(value: boolean);\n    get quality(): WebVideoPlayerQuality;\n    set quality(value: WebVideoPlayerQuality);\n    get state(): WebVideoPlayerState;\n    get duration(): number;\n    get currentTime(): number;\n    get buffered(): readonly WebVideoPlayerBufferedRange[];\n    get availableQualities(): readonly WebVideoPlayerAvailableQuality[];\n    get currentQuality(): number | null;\n    get isPlaying(): boolean;\n    get error(): Error | null;\n    LoadRestGo(videoId: string, options?: WebVideoPlayerRestGoOptions): Promise<void>;\n    LoadUrl(url: string, options?: WebVideoPlayerUrlOptions): Promise<void>;\n    Play(): Promise<void>;\n    Pause(): void;\n    Stop(): void;\n    Seek(seconds: number): void;\n    SetQuality(value: WebVideoPlayerQuality): void;\n    Unload(): Promise<void>;\n    dispose(): void;\n    set onLoaded(handler: WebComponentEventHandler<this> | null);\n    set onPlay(handler: WebComponentEventHandler<this> | null);\n    set onPause(handler: WebComponentEventHandler<this> | null);\n    set onEnded(handler: WebComponentEventHandler<this> | null);\n    set onTimeUpdate(handler: WebComponentEventHandler<this> | null);\n    set onBuffering(handler: WebComponentEventHandler<this> | null);\n    set onQualityChange(handler: WebComponentEventHandler<this> | null);\n    set onError(handler: WebComponentEventHandler<this> | null);\n}",
      "publicSource": "/** One real Shaka player per component element, shared by mounting and generated instances. */\nexport class WebVideoPlayer extends WebComponent {\n    constructor(element: HTMLElement);\n    get source(): WebVideoPlayerSource | null;\n    set source(value: WebVideoPlayerSource | null);\n    get controls(): boolean;\n    set controls(value: boolean);\n    get autoplay(): boolean;\n    set autoplay(value: boolean);\n    get muted(): boolean;\n    set muted(value: boolean);\n    get loop(): boolean;\n    set loop(value: boolean);\n    get playsInline(): boolean;\n    set playsInline(value: boolean);\n    get volume(): number;\n    set volume(value: number);\n    get playbackRate(): number;\n    set playbackRate(value: number);\n    get objectFit(): WebVideoPlayerObjectFit;\n    set objectFit(value: WebVideoPlayerObjectFit);\n    /** Fixed ratios derive height from the responsive width, overriding vertical sizing rules. */\n    get aspectRatio(): WebVideoPlayerAspectRatio;\n    set aspectRatio(value: WebVideoPlayerAspectRatio);\n    get poster(): string;\n    set poster(value: string);\n    get enabled(): boolean;\n    set enabled(value: boolean);\n    get quality(): WebVideoPlayerQuality;\n    set quality(value: WebVideoPlayerQuality);\n    get state(): WebVideoPlayerState;\n    get duration(): number;\n    get currentTime(): number;\n    get buffered(): readonly WebVideoPlayerBufferedRange[];\n    get availableQualities(): readonly WebVideoPlayerAvailableQuality[];\n    get currentQuality(): number | null;\n    get isPlaying(): boolean;\n    get error(): Error | null;\n    LoadRestGo(videoId: string, options?: WebVideoPlayerRestGoOptions): Promise<void>;\n    LoadUrl(url: string, options?: WebVideoPlayerUrlOptions): Promise<void>;\n    Play(): Promise<void>;\n    Pause(): void;\n    Stop(): void;\n    Seek(seconds: number): void;\n    SetQuality(value: WebVideoPlayerQuality): void;\n    Unload(): Promise<void>;\n    dispose(): void;\n    set onLoaded(handler: WebComponentEventHandler<this> | null);\n    set onPlay(handler: WebComponentEventHandler<this> | null);\n    set onPause(handler: WebComponentEventHandler<this> | null);\n    set onEnded(handler: WebComponentEventHandler<this> | null);\n    set onTimeUpdate(handler: WebComponentEventHandler<this> | null);\n    set onBuffering(handler: WebComponentEventHandler<this> | null);\n    set onQualityChange(handler: WebComponentEventHandler<this> | null);\n    set onError(handler: WebComponentEventHandler<this> | null);\n}",
      "members": [
        {
          "name": "source",
          "kind": "get",
          "type": "WebVideoPlayerSource | null",
          "signature": "get source(): WebVideoPlayerSource | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "controls",
          "kind": "get",
          "type": "boolean",
          "signature": "get controls(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "autoplay",
          "kind": "get",
          "type": "boolean",
          "signature": "get autoplay(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "muted",
          "kind": "get",
          "type": "boolean",
          "signature": "get muted(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "loop",
          "kind": "get",
          "type": "boolean",
          "signature": "get loop(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "playsInline",
          "kind": "get",
          "type": "boolean",
          "signature": "get playsInline(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "volume",
          "kind": "get",
          "type": "number",
          "signature": "get volume(): number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "playbackRate",
          "kind": "get",
          "type": "number",
          "signature": "get playbackRate(): number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "objectFit",
          "kind": "get",
          "type": "WebVideoPlayerObjectFit",
          "signature": "get objectFit(): WebVideoPlayerObjectFit;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "aspectRatio",
          "kind": "get",
          "type": "WebVideoPlayerAspectRatio",
          "signature": "get aspectRatio(): WebVideoPlayerAspectRatio;",
          "parameters": [],
          "description": "Fixed ratios derive height from the responsive width, overriding vertical sizing rules.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "poster",
          "kind": "get",
          "type": "string",
          "signature": "get poster(): string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "enabled",
          "kind": "get",
          "type": "boolean",
          "signature": "get enabled(): boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "quality",
          "kind": "get",
          "type": "WebVideoPlayerQuality",
          "signature": "get quality(): WebVideoPlayerQuality;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "state",
          "kind": "get",
          "type": "WebVideoPlayerState",
          "signature": "get state(): WebVideoPlayerState;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "duration",
          "kind": "get",
          "type": "number",
          "signature": "get duration(): number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "currentTime",
          "kind": "get",
          "type": "number",
          "signature": "get currentTime(): number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "buffered",
          "kind": "get",
          "type": "readonly WebVideoPlayerBufferedRange[]",
          "signature": "get buffered(): readonly WebVideoPlayerBufferedRange[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "availableQualities",
          "kind": "get",
          "type": "readonly WebVideoPlayerAvailableQuality[]",
          "signature": "get availableQualities(): readonly WebVideoPlayerAvailableQuality[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "currentQuality",
          "kind": "get",
          "type": "number | null",
          "signature": "get currentQuality(): number | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "isPlaying",
          "kind": "get",
          "type": "boolean",
          "signature": "get isPlaying(): boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "error",
          "kind": "get",
          "type": "Error | null",
          "signature": "get error(): Error | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "LoadRestGo",
          "kind": "method",
          "type": "Promise<void>",
          "signature": "LoadRestGo(videoId: string, options?: WebVideoPlayerRestGoOptions): Promise<void>;",
          "parameters": [
            {
              "name": "videoId",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "WebVideoPlayerRestGoOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "LoadUrl",
          "kind": "method",
          "type": "Promise<void>",
          "signature": "LoadUrl(url: string, options?: WebVideoPlayerUrlOptions): Promise<void>;",
          "parameters": [
            {
              "name": "url",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "WebVideoPlayerUrlOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Play",
          "kind": "method",
          "type": "Promise<void>",
          "signature": "Play(): Promise<void>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Pause",
          "kind": "method",
          "type": "void",
          "signature": "Pause(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Stop",
          "kind": "method",
          "type": "void",
          "signature": "Stop(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Seek",
          "kind": "method",
          "type": "void",
          "signature": "Seek(seconds: number): void;",
          "parameters": [
            {
              "name": "seconds",
              "type": "number",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "SetQuality",
          "kind": "method",
          "type": "void",
          "signature": "SetQuality(value: WebVideoPlayerQuality): void;",
          "parameters": [
            {
              "name": "value",
              "type": "WebVideoPlayerQuality",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "Unload",
          "kind": "method",
          "type": "Promise<void>",
          "signature": "Unload(): Promise<void>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onLoaded",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onLoaded(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onPlay",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onPlay(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onPause",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onPause(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onEnded",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onEnded(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onTimeUpdate",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onTimeUpdate(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onBuffering",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onBuffering(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onQualityChange",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onQualityChange(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        },
        {
          "name": "onError",
          "kind": "set",
          "type": "WebComponentEventHandler<this> | null",
          "signature": "set onError(handler: WebComponentEventHandler<this> | null);",
          "parameters": [
            {
              "name": "handler",
              "type": "WebComponentEventHandler<this> | null",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": true,
          "readable": false,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RuntimeBounds",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface RuntimeBounds {\n    readonly x: number;\n    readonly y: number;\n    readonly width: number;\n    readonly height: number;\n}",
      "members": [
        {
          "name": "x",
          "kind": "property",
          "type": "number",
          "signature": "readonly x: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "y",
          "kind": "property",
          "type": "number",
          "signature": "readonly y: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "width",
          "kind": "property",
          "type": "number",
          "signature": "readonly width: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "height",
          "kind": "property",
          "type": "number",
          "signature": "readonly height: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RuntimeComponentNode",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface RuntimeComponentNode {\n    readonly embeddedStyleCatalog?: readonly RuntimeComponentStyle[];\n    readonly id: string;\n    readonly templateId?: string;\n    readonly reusableRoot?: boolean;\n    readonly reusableDefinitionId?: string;\n    readonly reusableInstanceId?: string;\n    readonly type: string;\n    readonly name: string;\n    readonly parentId: string | null;\n    readonly layout: RuntimeComponentLayout;\n    readonly bounds: RuntimeBounds;\n    readonly props: Readonly<Record<string, unknown>>;\n    readonly children: readonly string[];\n    readonly styleClassName?: string;\n}",
      "members": [
        {
          "name": "embeddedStyleCatalog",
          "kind": "property",
          "type": "readonly RuntimeComponentStyle[]",
          "signature": "readonly embeddedStyleCatalog?: readonly RuntimeComponentStyle[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "readonly id: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "templateId",
          "kind": "property",
          "type": "string",
          "signature": "readonly templateId?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "reusableRoot",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly reusableRoot?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "reusableDefinitionId",
          "kind": "property",
          "type": "string",
          "signature": "readonly reusableDefinitionId?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "reusableInstanceId",
          "kind": "property",
          "type": "string",
          "signature": "readonly reusableInstanceId?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "type",
          "kind": "property",
          "type": "string",
          "signature": "readonly type: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "parentId",
          "kind": "property",
          "type": "string | null",
          "signature": "readonly parentId: string | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "layout",
          "kind": "property",
          "type": "RuntimeComponentLayout",
          "signature": "readonly layout: RuntimeComponentLayout;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "bounds",
          "kind": "property",
          "type": "RuntimeBounds",
          "signature": "readonly bounds: RuntimeBounds;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "props",
          "kind": "property",
          "type": "Readonly<Record<string, unknown>>",
          "signature": "readonly props: Readonly<Record<string, unknown>>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "children",
          "kind": "property",
          "type": "readonly string[]",
          "signature": "readonly children: readonly string[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "styleClassName",
          "kind": "property",
          "type": "string",
          "signature": "readonly styleClassName?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RuntimeReusableElementModel",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface RuntimeReusableElementModel {\n    readonly id: string;\n    readonly name: string;\n    readonly caption: string;\n    readonly width: number;\n    readonly height: number;\n    readonly components: readonly RuntimeComponentNode[];\n    readonly rootComponentId: string;\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "readonly id: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "caption",
          "kind": "property",
          "type": "string",
          "signature": "readonly caption: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "width",
          "kind": "property",
          "type": "number",
          "signature": "readonly width: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "height",
          "kind": "property",
          "type": "number",
          "signature": "readonly height: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "components",
          "kind": "property",
          "type": "readonly RuntimeComponentNode[]",
          "signature": "readonly components: readonly RuntimeComponentNode[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "rootComponentId",
          "kind": "property",
          "type": "string",
          "signature": "readonly rootComponentId: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RuntimePageModel",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface RuntimePageModel {\n    readonly id: string;\n    readonly name: string;\n    readonly caption: string;\n    readonly width: number;\n    readonly height: number;\n    readonly components: readonly RuntimeComponentNode[];\n    readonly rootComponentId: string;\n    readonly reusableElements?: readonly RuntimeReusableElementModel[];\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "readonly id: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "caption",
          "kind": "property",
          "type": "string",
          "signature": "readonly caption: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "width",
          "kind": "property",
          "type": "number",
          "signature": "readonly width: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "height",
          "kind": "property",
          "type": "number",
          "signature": "readonly height: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "components",
          "kind": "property",
          "type": "readonly RuntimeComponentNode[]",
          "signature": "readonly components: readonly RuntimeComponentNode[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "rootComponentId",
          "kind": "property",
          "type": "string",
          "signature": "readonly rootComponentId: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "reusableElements",
          "kind": "property",
          "type": "readonly RuntimeReusableElementModel[]",
          "signature": "readonly reusableElements?: readonly RuntimeReusableElementModel[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RuntimeComponentAdapter",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface RuntimeComponentAdapter<T extends WebComponent = WebComponent> {\n    readonly createElement: (document: Document, node: RuntimeComponentNode) => HTMLElement;\n    readonly createComponent: (element: HTMLElement) => T;\n    readonly applyProperties?: (component: T, node: RuntimeComponentNode) => void;\n    readonly getChildrenHost?: (component: T, node: RuntimeComponentNode) => HTMLElement;\n    readonly participatesInLayout?: boolean;\n}",
      "members": [
        {
          "name": "createElement",
          "kind": "property",
          "type": "(document: Document, node: RuntimeComponentNode) => HTMLElement",
          "signature": "readonly createElement: (document: Document, node: RuntimeComponentNode) => HTMLElement;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "createComponent",
          "kind": "property",
          "type": "(element: HTMLElement) => T",
          "signature": "readonly createComponent: (element: HTMLElement) => T;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "applyProperties",
          "kind": "property",
          "type": "(component: T, node: RuntimeComponentNode) => void",
          "signature": "readonly applyProperties?: (component: T, node: RuntimeComponentNode) => void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "getChildrenHost",
          "kind": "property",
          "type": "(component: T, node: RuntimeComponentNode) => HTMLElement",
          "signature": "readonly getChildrenHost?: (component: T, node: RuntimeComponentNode) => HTMLElement;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "participatesInLayout",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly participatesInLayout?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": [
        "T extends WebComponent = WebComponent"
      ]
    },
    {
      "name": "RuntimeComponentRegistry",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [],
      "source": "export class RuntimeComponentRegistry {\n    register<T extends WebComponent>(type: string, adapter: RuntimeComponentAdapter<T>): this;\n    has(type: string): boolean;\n    require(type: string): RuntimeComponentAdapter;\n    create(document: Document, node: RuntimeComponentNode, menuFactories?: ReadonlyMap<string, RuntimeMenuFactory>): WebComponent;\n}",
      "publicSource": "export class RuntimeComponentRegistry {\n    register<T extends WebComponent>(type: string, adapter: RuntimeComponentAdapter<T>): this;\n    has(type: string): boolean;\n    require(type: string): RuntimeComponentAdapter;\n    create(document: Document, node: RuntimeComponentNode, menuFactories?: ReadonlyMap<string, RuntimeMenuFactory>): WebComponent;\n}",
      "members": [
        {
          "name": "register",
          "kind": "method",
          "type": "this",
          "signature": "register<T extends WebComponent>(type: string, adapter: RuntimeComponentAdapter<T>): this;",
          "parameters": [
            {
              "name": "type",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "adapter",
              "type": "RuntimeComponentAdapter<T>",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "has",
          "kind": "method",
          "type": "boolean",
          "signature": "has(type: string): boolean;",
          "parameters": [
            {
              "name": "type",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "require",
          "kind": "method",
          "type": "RuntimeComponentAdapter",
          "signature": "require(type: string): RuntimeComponentAdapter;",
          "parameters": [
            {
              "name": "type",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "create",
          "kind": "method",
          "type": "WebComponent",
          "signature": "create(document: Document, node: RuntimeComponentNode, menuFactories?: ReadonlyMap<string, RuntimeMenuFactory>): WebComponent;",
          "parameters": [
            {
              "name": "document",
              "type": "Document",
              "optional": false,
              "rest": false
            },
            {
              "name": "node",
              "type": "RuntimeComponentNode",
              "optional": false,
              "rest": false
            },
            {
              "name": "menuFactories",
              "type": "ReadonlyMap<string, RuntimeMenuFactory>",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "runtimeComponentRegistry",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const runtimeComponentRegistry: RuntimeComponentRegistry;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "expandReusableElements",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function expandReusableElements(model: RuntimePageModel): RuntimePageModel;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "MountedRuntimePage",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface MountedRuntimePage {\n    readonly element: HTMLElement;\n    readonly page: WebPage;\n    readonly components: ReadonlyMap<string, WebComponent>;\n    readonly reusableInstances: readonly MountedReusableElementInstance[];\n    dispose(): void;\n}",
      "members": [
        {
          "name": "element",
          "kind": "property",
          "type": "HTMLElement",
          "signature": "readonly element: HTMLElement;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "page",
          "kind": "property",
          "type": "WebPage",
          "signature": "readonly page: WebPage;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "components",
          "kind": "property",
          "type": "ReadonlyMap<string, WebComponent>",
          "signature": "readonly components: ReadonlyMap<string, WebComponent>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "reusableInstances",
          "kind": "property",
          "type": "readonly MountedReusableElementInstance[]",
          "signature": "readonly reusableInstances: readonly MountedReusableElementInstance[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "MountedReusableElementInstance",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface MountedReusableElementInstance {\n    readonly instanceId: string;\n    readonly reusableElementId: string;\n    readonly element: HTMLElement;\n    readonly componentIds: ReadonlyMap<string, string>;\n}",
      "members": [
        {
          "name": "instanceId",
          "kind": "property",
          "type": "string",
          "signature": "readonly instanceId: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "reusableElementId",
          "kind": "property",
          "type": "string",
          "signature": "readonly reusableElementId: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "element",
          "kind": "property",
          "type": "HTMLElement",
          "signature": "readonly element: HTMLElement;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "componentIds",
          "kind": "property",
          "type": "ReadonlyMap<string, string>",
          "signature": "readonly componentIds: ReadonlyMap<string, string>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "MountPageOptions",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface MountPageOptions {\n    readonly replaceHostContents?: boolean;\n    readonly registry?: RuntimeComponentRegistry;\n    readonly menuFactories?: ReadonlyMap<string, RuntimeMenuFactory>;\n}",
      "members": [
        {
          "name": "replaceHostContents",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly replaceHostContents?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "registry",
          "kind": "property",
          "type": "RuntimeComponentRegistry",
          "signature": "readonly registry?: RuntimeComponentRegistry;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "menuFactories",
          "kind": "property",
          "type": "ReadonlyMap<string, RuntimeMenuFactory>",
          "signature": "readonly menuFactories?: ReadonlyMap<string, RuntimeMenuFactory>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RuntimeMenuFactory",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type RuntimeMenuFactory = (element: HTMLElement) => WebMenu;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "mountPage",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function mountPage(model: RuntimePageModel, host?: HTMLElement, options?: MountPageOptions): MountedRuntimePage;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RuntimePageFactory",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "/** Creates the authored wrapper for a page after its visual DOM is mounted. */\nexport type RuntimePageFactory = (element: HTMLElement) => WebPage;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RuntimeReusableElementFactory",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "/** Creates authored classes for reusable placements after a page is mounted. */\nexport type RuntimeReusableElementFactory = (mounted: MountedRuntimePage) => readonly WebReusableElementInstance[];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RuntimePageRoute",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "/** One route that can be mounted by the browser-side page router. */\nexport interface RuntimePageRoute {\n    readonly id: string;\n    readonly name: string;\n    readonly model: RuntimePageModel;\n    readonly path?: string;\n    readonly parameters?: readonly PageParameterDefinition[];\n    readonly createPage: RuntimePageFactory;\n    readonly createReusableElements?: RuntimeReusableElementFactory;\n    readonly menuFactories?: ReadonlyMap<string, RuntimeMenuFactory>;\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "readonly id: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "model",
          "kind": "property",
          "type": "RuntimePageModel",
          "signature": "readonly model: RuntimePageModel;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "path",
          "kind": "property",
          "type": "string",
          "signature": "readonly path?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "parameters",
          "kind": "property",
          "type": "readonly PageParameterDefinition[]",
          "signature": "readonly parameters?: readonly PageParameterDefinition[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "createPage",
          "kind": "property",
          "type": "RuntimePageFactory",
          "signature": "readonly createPage: RuntimePageFactory;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "createReusableElements",
          "kind": "property",
          "type": "RuntimeReusableElementFactory",
          "signature": "readonly createReusableElements?: RuntimeReusableElementFactory;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "menuFactories",
          "kind": "property",
          "type": "ReadonlyMap<string, RuntimeMenuFactory>",
          "signature": "readonly menuFactories?: ReadonlyMap<string, RuntimeMenuFactory>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "WebPageRouter",
      "module": "@webrad/runtime",
      "kind": "class",
      "heritage": [],
      "source": "/** Mounts one authored project page at a time and resolves IDs or page names. */\nexport class WebPageRouter {\n    constructor(routes: readonly RuntimePageRoute[], host?: HTMLElement, options?: {\n        readonly mode?: 'history' | 'hash';\n        readonly basePath?: string;\n    });\n    readonly activePage: WebPage | null;\n    readonly activeRoute: RuntimePageRoute | null;\n    findRoute(destination: string): RuntimePageRoute | undefined;\n    start(entryDestination: string): WebPage;\n    navigateBrowser(destination: string | URL, options?: NavigateOptions): void;\n    navigate(destination: string): WebPage;\n    dispose(): void;\n}",
      "publicSource": "/** Mounts one authored project page at a time and resolves IDs or page names. */\nexport class WebPageRouter {\n    constructor(routes: readonly RuntimePageRoute[], host?: HTMLElement, options?: {\n        readonly mode?: 'history' | 'hash';\n        readonly basePath?: string;\n    });\n    readonly activePage: WebPage | null;\n    readonly activeRoute: RuntimePageRoute | null;\n    findRoute(destination: string): RuntimePageRoute | undefined;\n    start(entryDestination: string): WebPage;\n    navigateBrowser(destination: string | URL, options?: NavigateOptions): void;\n    navigate(destination: string): WebPage;\n    dispose(): void;\n}",
      "members": [
        {
          "name": "activePage",
          "kind": "property",
          "type": "WebPage | null",
          "signature": "readonly activePage: WebPage | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "activeRoute",
          "kind": "property",
          "type": "RuntimePageRoute | null",
          "signature": "readonly activeRoute: RuntimePageRoute | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "findRoute",
          "kind": "method",
          "type": "RuntimePageRoute | undefined",
          "signature": "findRoute(destination: string): RuntimePageRoute | undefined;",
          "parameters": [
            {
              "name": "destination",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "start",
          "kind": "method",
          "type": "WebPage",
          "signature": "start(entryDestination: string): WebPage;",
          "parameters": [
            {
              "name": "entryDestination",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "navigateBrowser",
          "kind": "method",
          "type": "void",
          "signature": "navigateBrowser(destination: string | URL, options?: NavigateOptions): void;",
          "parameters": [
            {
              "name": "destination",
              "type": "string | URL",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "NavigateOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "navigate",
          "kind": "method",
          "type": "WebPage",
          "signature": "navigate(destination: string): WebPage;",
          "parameters": [
            {
              "name": "destination",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "VisualPropertySource",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface VisualPropertySource {\n    readonly props: Readonly<Record<string, unknown>>;\n}",
      "members": [
        {
          "name": "props",
          "kind": "property",
          "type": "Readonly<Record<string, unknown>>",
          "signature": "readonly props: Readonly<Record<string, unknown>>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "projectPanelBackground",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function projectPanelBackground(props: Readonly<Record<string, unknown>>, styled?: boolean): {\n    '--wr-panel-background-image': string;\n    backgroundImage: string;\n    backgroundSize: string;\n    backgroundPosition: string;\n    backgroundRepeat: string;\n};",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "VisualComponentSource",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [
        "VisualPropertySource"
      ],
      "source": "export interface VisualComponentSource extends VisualPropertySource {\n    readonly type: string;\n    readonly bounds: {\n        readonly width: number;\n        readonly height: number;\n    };\n}",
      "members": [
        {
          "name": "type",
          "kind": "property",
          "type": "string",
          "signature": "readonly type: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "bounds",
          "kind": "property",
          "type": "{\n      readonly width: number;\n      readonly height: number;\n    }",
          "signature": "readonly bounds: {\n    readonly width: number;\n    readonly height: number;\n};",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "DataGridColumnTrackSource",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface DataGridColumnTrackSource {\n    readonly widthMode: 'fixed' | 'dynamic';\n    readonly width: number;\n    readonly minWidth: number;\n    readonly maxWidth: number | null;\n    readonly flex: number;\n}",
      "members": [
        {
          "name": "widthMode",
          "kind": "property",
          "type": "'fixed' | 'dynamic'",
          "signature": "readonly widthMode: 'fixed' | 'dynamic';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "width",
          "kind": "property",
          "type": "number",
          "signature": "readonly width: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "minWidth",
          "kind": "property",
          "type": "number",
          "signature": "readonly minWidth: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "maxWidth",
          "kind": "property",
          "type": "number | null",
          "signature": "readonly maxWidth: number | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "flex",
          "kind": "property",
          "type": "number",
          "signature": "readonly flex: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "ComponentStyleStateName",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type ComponentStyleStateName = 'base' | 'hover' | 'focus' | 'active' | 'disabled';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "StyleLengthUnit",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type StyleLengthUnit = 'px' | 'rem' | '%' | 'vw' | 'vh';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "StyleLengthValue",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface StyleLengthValue {\n    readonly value: number;\n    readonly unit: StyleLengthUnit;\n}",
      "members": [
        {
          "name": "value",
          "kind": "property",
          "type": "number",
          "signature": "readonly value: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "unit",
          "kind": "property",
          "type": "StyleLengthUnit",
          "signature": "readonly unit: StyleLengthUnit;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "LinearGradientDirection",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type LinearGradientDirection = 'to-right' | 'to-bottom-right' | 'to-bottom' | 'to-bottom-left' | 'to-left' | 'to-top-left' | 'to-top' | 'to-top-right';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "BackgroundGradientValue",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface BackgroundGradientValue {\n    readonly kind: 'linear';\n    readonly direction: LinearGradientDirection;\n    readonly from: string;\n    readonly to: string;\n}",
      "members": [
        {
          "name": "kind",
          "kind": "property",
          "type": "'linear'",
          "signature": "readonly kind: 'linear';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "direction",
          "kind": "property",
          "type": "LinearGradientDirection",
          "signature": "readonly direction: LinearGradientDirection;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "from",
          "kind": "property",
          "type": "string",
          "signature": "readonly from: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "to",
          "kind": "property",
          "type": "string",
          "signature": "readonly to: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "StylePropertyValue",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type StylePropertyValue = string | number | StyleLengthValue | BackgroundGradientValue;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "TailwindStyleProperties",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type TailwindStyleProperties = Readonly<Record<string, StylePropertyValue | undefined>>;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "TailwindStyleSource",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface TailwindStyleSource {\n    readonly componentType?: string;\n    readonly states: Readonly<Record<ComponentStyleStateName, TailwindStyleProperties>>;\n    readonly themeOverrides?: Readonly<Partial<Record<'light' | 'dark', Partial<Record<ComponentStyleStateName, TailwindStyleProperties>>>>>;\n}",
      "members": [
        {
          "name": "componentType",
          "kind": "property",
          "type": "string",
          "signature": "readonly componentType?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "states",
          "kind": "property",
          "type": "Readonly<Record<ComponentStyleStateName, TailwindStyleProperties>>",
          "signature": "readonly states: Readonly<Record<ComponentStyleStateName, TailwindStyleProperties>>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "themeOverrides",
          "kind": "property",
          "type": "Readonly<Partial<Record<'light' | 'dark', Partial<Record<ComponentStyleStateName, TailwindStyleProperties>>>>>",
          "signature": "readonly themeOverrides?: Readonly<Partial<Record<'light' | 'dark', Partial<Record<ComponentStyleStateName, TailwindStyleProperties>>>>>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RuntimeComponentStyle",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface RuntimeComponentStyle {\n    readonly id: string;\n    readonly componentType: string;\n    readonly preset?: string;\n    readonly className: string;\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "readonly id: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "componentType",
          "kind": "property",
          "type": "string",
          "signature": "readonly componentType: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "preset",
          "kind": "property",
          "type": "string",
          "signature": "readonly preset?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "className",
          "kind": "property",
          "type": "string",
          "signature": "readonly className: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "tokenizeTailwindClasses",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function tokenizeTailwindClasses(value: string): readonly string[];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "paletteColorId",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function paletteColorId(value: unknown): string | undefined;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "paletteColorReference",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function paletteColorReference(id: string): string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "resolveDataGridColumnTrackWidths",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function resolveDataGridColumnTrackWidths(columns: readonly DataGridColumnTrackSource[], availableWidth: number): readonly number[];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "resolveStylePropertyCandidate",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function resolveStylePropertyCandidate(propertyName: string, value: StylePropertyValue): string | undefined;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "resolveComponentStyleStateClassNames",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function resolveComponentStyleStateClassNames(properties: TailwindStyleProperties | null | undefined): readonly string[];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "resolveComponentStyleClassNames",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function resolveComponentStyleClassNames(style: TailwindStyleSource | null | undefined): readonly string[];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "resolveComponentStyleClassName",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function resolveComponentStyleClassName(style: TailwindStyleSource | null | undefined): string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "resolveComponentStylePreviewClassName",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function resolveComponentStylePreviewClassName(style: TailwindStyleSource | null | undefined, stateName: ComponentStyleStateName): string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "resolveThemedStyle",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function resolveThemedStyle(style: TailwindStyleSource, mode: ResolvedThemeMode): TailwindStyleSource;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "VisualSizingMode",
      "module": "@webrad/runtime",
      "kind": "type",
      "heritage": [],
      "source": "export type VisualSizingMode = 'bounds' | 'fill';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "ComponentVisualStyle",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface ComponentVisualStyle {\n    readonly width: string;\n    readonly height: string;\n    readonly backgroundColor?: string;\n    readonly color?: string;\n    readonly borderColor?: string;\n    readonly borderStyle?: 'solid';\n    readonly borderWidth?: string;\n}",
      "members": [
        {
          "name": "width",
          "kind": "property",
          "type": "string",
          "signature": "readonly width: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "height",
          "kind": "property",
          "type": "string",
          "signature": "readonly height: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "backgroundColor",
          "kind": "property",
          "type": "string",
          "signature": "readonly backgroundColor?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "color",
          "kind": "property",
          "type": "string",
          "signature": "readonly color?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "borderColor",
          "kind": "property",
          "type": "string",
          "signature": "readonly borderColor?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "borderStyle",
          "kind": "property",
          "type": "'solid'",
          "signature": "readonly borderStyle?: 'solid';",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "borderWidth",
          "kind": "property",
          "type": "string",
          "signature": "readonly borderWidth?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "ComponentVisualProjection",
      "module": "@webrad/runtime",
      "kind": "interface",
      "heritage": [],
      "source": "export interface ComponentVisualProjection {\n    readonly classNames: readonly string[];\n    readonly style: ComponentVisualStyle;\n    readonly visible: boolean;\n    readonly collapseWhenHidden: boolean;\n    readonly enabled: boolean;\n    readonly title?: string;\n    readonly tabIndex?: number;\n}",
      "members": [
        {
          "name": "classNames",
          "kind": "property",
          "type": "readonly string[]",
          "signature": "readonly classNames: readonly string[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "style",
          "kind": "property",
          "type": "ComponentVisualStyle",
          "signature": "readonly style: ComponentVisualStyle;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "visible",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly visible: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "collapseWhenHidden",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly collapseWhenHidden: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "enabled",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly enabled: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "title",
          "kind": "property",
          "type": "string",
          "signature": "readonly title?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "tabIndex",
          "kind": "property",
          "type": "number",
          "signature": "readonly tabIndex?: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "readStringProperty",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function readStringProperty(source: VisualPropertySource, name: string, fallback?: string): string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "readBooleanProperty",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function readBooleanProperty(source: VisualPropertySource, name: string, fallback?: boolean): boolean;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "readIntegerProperty",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function readIntegerProperty(source: VisualPropertySource, name: string): number | undefined;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "readIntegerProperty",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function readIntegerProperty(source: VisualPropertySource, name: string, fallback: number): number;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "readStringListProperty",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function readStringListProperty(source: VisualPropertySource, name: string): readonly string[];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "projectComponentVisual",
      "module": "@webrad/runtime",
      "kind": "function",
      "heritage": [],
      "source": "export function projectComponentVisual(source: VisualComponentSource, sizing?: VisualSizingMode): ComponentVisualProjection;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WEBRAD_COMPONENT_CSS",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const WEBRAD_COMPONENT_CSS: string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WEBRAD_PROJECT_CSS",
      "module": "@webrad/runtime",
      "kind": "variable",
      "heritage": [],
      "source": "export const WEBRAD_PROJECT_CSS: string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "WebImagePlaceholder",
      "module": "@webrad/runtime/image-display",
      "kind": "type",
      "heritage": [],
      "source": "export type WebImagePlaceholder = 'image' | 'user';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "imagePlaceholderSource",
      "module": "@webrad/runtime/image-display",
      "kind": "function",
      "heritage": [],
      "source": "export function imagePlaceholderSource(placeholder: WebImagePlaceholder): string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "bindImageResampling",
      "module": "@webrad/runtime/image-display",
      "kind": "function",
      "heritage": [],
      "source": "export function bindImageResampling(element: HTMLImageElement): () => void;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "Message",
      "module": "",
      "kind": "variable",
      "heritage": [],
      "source": "/** Globally available WebRAD dialog helper. */\ndeclare const Message: typeof import('@webrad/runtime').Message;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "Confirm",
      "module": "",
      "kind": "variable",
      "heritage": [],
      "source": "/** Globally available WebRAD confirmation helper. */\ndeclare const Confirm: typeof import('@webrad/runtime').Confirm;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "Navigate",
      "module": "",
      "kind": "variable",
      "heritage": [],
      "source": "/** Globally available WebRAD navigation helper. */\ndeclare const Navigate: typeof import('@webrad/runtime').Navigate;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "Theme",
      "module": "",
      "kind": "variable",
      "heritage": [],
      "source": "/** Application theme service, available without an import. */\ndeclare const Theme: typeof import('@webrad/runtime').Theme;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGO",
      "module": "",
      "kind": "variable",
      "heritage": [],
      "source": "/** The RestGO client configured in Project Settings, shared by all pages. */\ndeclare const RestGO: import('@webrad/restgo-sdk').RestGoClient;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "Sucess",
      "module": "",
      "kind": "variable",
      "heritage": [],
      "source": "declare const Sucess: typeof import('@webrad/runtime').Sucess;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "Alert",
      "module": "",
      "kind": "variable",
      "heritage": [],
      "source": "declare const Alert: typeof import('@webrad/runtime').Alert;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "Danger",
      "module": "",
      "kind": "variable",
      "heritage": [],
      "source": "declare const Danger: typeof import('@webrad/runtime').Danger;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "Notifier",
      "module": "",
      "kind": "variable",
      "heritage": [],
      "source": "declare const Notifier: typeof import('@webrad/runtime').Notifier;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoDynamicResult",
      "module": "@webrad/restgo-sdk",
      "kind": "type",
      "heritage": [],
      "source": "type RestGoDynamicResult<T> = RestGoResult<T> & RestGoDynamicMetadata;",
      "members": [],
      "typeParameters": [
        "T"
      ]
    },
    {
      "name": "RestGoHttpMethod",
      "module": "@webrad/restgo-sdk",
      "kind": "type",
      "heritage": [],
      "source": "type RestGoHttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoEndpointOptions",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoEndpointOptions {\n    database?: string;\n    version?: number;\n}",
      "members": [
        {
          "name": "database",
          "kind": "property",
          "type": "string",
          "signature": "database?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "version",
          "kind": "property",
          "type": "number",
          "signature": "version?: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoEndpoint",
      "module": "@webrad/restgo-sdk",
      "kind": "class",
      "heritage": [],
      "source": "class RestGoEndpoint<T = unknown> {\n    private readonly transport;\n    private readonly database;\n    private readonly name;\n    private readonly version?;\n    constructor(transport: RestGoTransport, database: string, name: string, version?: number | undefined);\n    get<U = T>(options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;\n    post<U = T>(body?: unknown, options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;\n    put<U = T>(body?: unknown, options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;\n    patch<U = T>(body?: unknown, options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;\n    delete<U = T>(body?: unknown, options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;\n    head(options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<null>>;\n    options<U = T>(options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;\n    request<U = T>(method: RestGoHttpMethod, body?: unknown, options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;\n}",
      "publicSource": "class RestGoEndpoint<T = unknown> {\n    constructor(transport: RestGoTransport, database: string, name: string, version?: number | undefined);\n    get<U = T>(options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;\n    post<U = T>(body?: unknown, options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;\n    put<U = T>(body?: unknown, options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;\n    patch<U = T>(body?: unknown, options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;\n    delete<U = T>(body?: unknown, options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;\n    head(options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<null>>;\n    options<U = T>(options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;\n    request<U = T>(method: RestGoHttpMethod, body?: unknown, options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;\n}",
      "members": [
        {
          "name": "get",
          "kind": "method",
          "type": "Promise<RestGoDynamicResult<U>>",
          "signature": "get<U = T>(options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;",
          "parameters": [
            {
              "name": "options",
              "type": "RestGoDynamicOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "post",
          "kind": "method",
          "type": "Promise<RestGoDynamicResult<U>>",
          "signature": "post<U = T>(body?: unknown, options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;",
          "parameters": [
            {
              "name": "body",
              "type": "unknown",
              "optional": true,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoDynamicOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "put",
          "kind": "method",
          "type": "Promise<RestGoDynamicResult<U>>",
          "signature": "put<U = T>(body?: unknown, options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;",
          "parameters": [
            {
              "name": "body",
              "type": "unknown",
              "optional": true,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoDynamicOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "patch",
          "kind": "method",
          "type": "Promise<RestGoDynamicResult<U>>",
          "signature": "patch<U = T>(body?: unknown, options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;",
          "parameters": [
            {
              "name": "body",
              "type": "unknown",
              "optional": true,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoDynamicOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "delete",
          "kind": "method",
          "type": "Promise<RestGoDynamicResult<U>>",
          "signature": "delete<U = T>(body?: unknown, options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;",
          "parameters": [
            {
              "name": "body",
              "type": "unknown",
              "optional": true,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoDynamicOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "head",
          "kind": "method",
          "type": "Promise<RestGoDynamicResult<null>>",
          "signature": "head(options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<null>>;",
          "parameters": [
            {
              "name": "options",
              "type": "RestGoDynamicOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "options",
          "kind": "method",
          "type": "Promise<RestGoDynamicResult<U>>",
          "signature": "options<U = T>(options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;",
          "parameters": [
            {
              "name": "options",
              "type": "RestGoDynamicOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "request",
          "kind": "method",
          "type": "Promise<RestGoDynamicResult<U>>",
          "signature": "request<U = T>(method: RestGoHttpMethod, body?: unknown, options?: RestGoDynamicOptions): Promise<RestGoDynamicResult<U>>;",
          "parameters": [
            {
              "name": "method",
              "type": "RestGoHttpMethod",
              "optional": false,
              "rest": false
            },
            {
              "name": "body",
              "type": "unknown",
              "optional": true,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoDynamicOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": [
        "T = unknown"
      ]
    },
    {
      "name": "RestGoDatabase",
      "module": "@webrad/restgo-sdk",
      "kind": "class",
      "heritage": [],
      "source": "class RestGoDatabase {\n    private readonly transport;\n    private readonly database;\n    constructor(transport: RestGoTransport, database: string);\n    endpoint<T = unknown>(name: string, options?: {\n        version?: number;\n    }): RestGoEndpoint<T>;\n}",
      "publicSource": "class RestGoDatabase {\n    constructor(transport: RestGoTransport, database: string);\n    endpoint<T = unknown>(name: string, options?: {\n        version?: number;\n    }): RestGoEndpoint<T>;\n}",
      "members": [
        {
          "name": "endpoint",
          "kind": "method",
          "type": "RestGoEndpoint<T>",
          "signature": "endpoint<T = unknown>(name: string, options?: {\n    version?: number;\n}): RestGoEndpoint<T>;",
          "parameters": [
            {
              "name": "name",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "{\n        version?: number;\n    }",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoApiClient",
      "module": "@webrad/restgo-sdk",
      "kind": "class",
      "heritage": [],
      "source": "/** Calls published endpoints. RestGo does not expose Supabase table/SQL operations. */\nclass RestGoApiClient {\n    private readonly transport;\n    constructor(transport: RestGoTransport);\n    from(database?: string): RestGoDatabase;\n    endpoint<T = unknown>(name: string, options?: RestGoEndpointOptions): RestGoEndpoint<T>;\n}",
      "publicSource": "/** Calls published endpoints. RestGo does not expose Supabase table/SQL operations. */\nclass RestGoApiClient {\n    constructor(transport: RestGoTransport);\n    from(database?: string): RestGoDatabase;\n    endpoint<T = unknown>(name: string, options?: RestGoEndpointOptions): RestGoEndpoint<T>;\n}",
      "members": [
        {
          "name": "from",
          "kind": "method",
          "type": "RestGoDatabase",
          "signature": "from(database?: string): RestGoDatabase;",
          "parameters": [
            {
              "name": "database",
              "type": "string",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "endpoint",
          "kind": "method",
          "type": "RestGoEndpoint<T>",
          "signature": "endpoint<T = unknown>(name: string, options?: RestGoEndpointOptions): RestGoEndpoint<T>;",
          "parameters": [
            {
              "name": "name",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoEndpointOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "AuthListener",
      "module": "@webrad/restgo-sdk",
      "kind": "type",
      "heritage": [],
      "source": "type AuthListener = (event: RestGoAuthEvent, session: RestGoSession | null) => void;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoAuthClient",
      "module": "@webrad/restgo-sdk",
      "kind": "class",
      "heritage": [],
      "source": "class RestGoAuthClient {\n    private readonly transport;\n    /** Startup checks persisted credentials with GET /auth/session. */\n    readonly ready: Promise<RestGoResult<RestGoSession | null>>;\n    private readonly store;\n    private current;\n    private restored;\n    private generation;\n    private readonly automatic;\n    private timer;\n    private refresh;\n    private retryAt;\n    private retryDelay;\n    private retryError;\n    private closing;\n    private disposed;\n    private readonly unsubscribeStorage;\n    private readonly listeners;\n    private validation;\n    constructor(transport: RestGoTransport, options: RestGoClientOptions);\n    /** Stop timers/listeners without revoking or deleting persisted credentials. */\n    dispose(): void;\n    /** Local snapshot; reading it does not issue a request or validate the session. */\n    get CurrentUser(): RestGoCurrentUser | null;\n    private stopTimer;\n    private schedule;\n    private synchronize;\n    /** POST /auth/refresh, with single-use rotation serialized across callers and tabs. */\n    refreshSession(): Promise<RestGoResult<RestGoSession>>;\n    private rotate;\n    private token;\n    private emit;\n    private apply;\n    private clear;\n    onAuthStateChange(callback: AuthListener): {\n        unsubscribe: () => void;\n    };\n    signInWithPassword(input: RestGoSignInInput): Promise<RestGoResult<RestGoSession>>;\n    private restoreAfterFailure;\n    /** Public registration. The server must allow anonymous signup. Does not start a session. */\n    signUp(input: RestGoSignUpInput): Promise<RestGoResult<RestGoManagedUser>>;\n    signOut(): Promise<RestGoResult<RestGoSuccess>>;\n    /** Always asks the server; JWT expiry metadata is not proof of an active session. */\n    getSession(): Promise<RestGoResult<RestGoSession | null>>;\n    private validate;\n    getUser(): Promise<RestGoResult<RestGoUser | null>>;\n    setSession(input: StoredSession): Promise<RestGoResult<RestGoSession>>;\n    resetPasswordForEmail(email: string, options?: {\n        url?: string;\n    }): Promise<RestGoResult<RestGoSuccess>>;\n    confirmPasswordReset(input: {\n        token: string;\n        password: string;\n    }): Promise<RestGoResult<RestGoSuccess>>;\n    confirmEmail(token: string): Promise<RestGoResult<RestGoSuccess>>;\n    updateUser(input: RestGoUpdateUserInput, options?: RestGoRequestOptions): Promise<RestGoResult<RestGoUpdateUserResult>>;\n    resendEmailConfirmation(options?: RestGoRequestOptions & {\n        url?: string;\n    }): Promise<RestGoResult<RestGoSuccess>>;\n    uploadAvatar(file: Blob, options?: {\n        name?: string;\n        signal?: AbortSignal;\n    }): Promise<RestGoResult<{\n        avatarUrl: string | null;\n    }>>;\n    deleteAvatar(options?: RestGoRequestOptions): Promise<RestGoResult<{\n        avatarUrl: string | null;\n    }>>;\n    private avatarRequest;\n    private cancelled;\n}",
      "publicSource": "class RestGoAuthClient {\n    /** Startup checks persisted credentials with GET /auth/session. */\n    readonly ready: Promise<RestGoResult<RestGoSession | null>>;\n    constructor(transport: RestGoTransport, options: RestGoClientOptions);\n    /** Stop timers/listeners without revoking or deleting persisted credentials. */\n    dispose(): void;\n    /** Local snapshot; reading it does not issue a request or validate the session. */\n    get CurrentUser(): RestGoCurrentUser | null;\n    /** POST /auth/refresh, with single-use rotation serialized across callers and tabs. */\n    refreshSession(): Promise<RestGoResult<RestGoSession>>;\n    onAuthStateChange(callback: AuthListener): {\n        unsubscribe: () => void;\n    };\n    signInWithPassword(input: RestGoSignInInput): Promise<RestGoResult<RestGoSession>>;\n    /** Public registration. The server must allow anonymous signup. Does not start a session. */\n    signUp(input: RestGoSignUpInput): Promise<RestGoResult<RestGoManagedUser>>;\n    signOut(): Promise<RestGoResult<RestGoSuccess>>;\n    /** Always asks the server; JWT expiry metadata is not proof of an active session. */\n    getSession(): Promise<RestGoResult<RestGoSession | null>>;\n    getUser(): Promise<RestGoResult<RestGoUser | null>>;\n    setSession(input: StoredSession): Promise<RestGoResult<RestGoSession>>;\n    resetPasswordForEmail(email: string, options?: {\n        url?: string;\n    }): Promise<RestGoResult<RestGoSuccess>>;\n    confirmPasswordReset(input: {\n        token: string;\n        password: string;\n    }): Promise<RestGoResult<RestGoSuccess>>;\n    confirmEmail(token: string): Promise<RestGoResult<RestGoSuccess>>;\n    updateUser(input: RestGoUpdateUserInput, options?: RestGoRequestOptions): Promise<RestGoResult<RestGoUpdateUserResult>>;\n    resendEmailConfirmation(options?: RestGoRequestOptions & {\n        url?: string;\n    }): Promise<RestGoResult<RestGoSuccess>>;\n    uploadAvatar(file: Blob, options?: {\n        name?: string;\n        signal?: AbortSignal;\n    }): Promise<RestGoResult<{\n        avatarUrl: string | null;\n    }>>;\n    deleteAvatar(options?: RestGoRequestOptions): Promise<RestGoResult<{\n        avatarUrl: string | null;\n    }>>;\n}",
      "members": [
        {
          "name": "ready",
          "kind": "property",
          "type": "Promise<RestGoResult<RestGoSession | null>>",
          "signature": "readonly ready: Promise<RestGoResult<RestGoSession | null>>;",
          "parameters": [],
          "description": "Startup checks persisted credentials with GET /auth/session.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "Stop timers/listeners without revoking or deleting persisted credentials.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "CurrentUser",
          "kind": "get",
          "type": "RestGoCurrentUser | null",
          "signature": "get CurrentUser(): RestGoCurrentUser | null;",
          "parameters": [],
          "description": "Local snapshot; reading it does not issue a request or validate the session.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "refreshSession",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoSession>>",
          "signature": "refreshSession(): Promise<RestGoResult<RestGoSession>>;",
          "parameters": [],
          "description": "POST /auth/refresh, with single-use rotation serialized across callers and tabs.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onAuthStateChange",
          "kind": "method",
          "type": "{\n        unsubscribe: () => void;\n    }",
          "signature": "onAuthStateChange(callback: AuthListener): {\n    unsubscribe: () => void;\n};",
          "parameters": [
            {
              "name": "callback",
              "type": "AuthListener",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "signInWithPassword",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoSession>>",
          "signature": "signInWithPassword(input: RestGoSignInInput): Promise<RestGoResult<RestGoSession>>;",
          "parameters": [
            {
              "name": "input",
              "type": "RestGoSignInInput",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "signUp",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoManagedUser>>",
          "signature": "signUp(input: RestGoSignUpInput): Promise<RestGoResult<RestGoManagedUser>>;",
          "parameters": [
            {
              "name": "input",
              "type": "RestGoSignUpInput",
              "optional": false,
              "rest": false
            }
          ],
          "description": "Public registration. The server must allow anonymous signup. Does not start a session.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "signOut",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoSuccess>>",
          "signature": "signOut(): Promise<RestGoResult<RestGoSuccess>>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "getSession",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoSession | null>>",
          "signature": "getSession(): Promise<RestGoResult<RestGoSession | null>>;",
          "parameters": [],
          "description": "Always asks the server; JWT expiry metadata is not proof of an active session.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "getUser",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoUser | null>>",
          "signature": "getUser(): Promise<RestGoResult<RestGoUser | null>>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "setSession",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoSession>>",
          "signature": "setSession(input: StoredSession): Promise<RestGoResult<RestGoSession>>;",
          "parameters": [
            {
              "name": "input",
              "type": "StoredSession",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "resetPasswordForEmail",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoSuccess>>",
          "signature": "resetPasswordForEmail(email: string, options?: {\n    url?: string;\n}): Promise<RestGoResult<RestGoSuccess>>;",
          "parameters": [
            {
              "name": "email",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "{\n        url?: string;\n    }",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "confirmPasswordReset",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoSuccess>>",
          "signature": "confirmPasswordReset(input: {\n    token: string;\n    password: string;\n}): Promise<RestGoResult<RestGoSuccess>>;",
          "parameters": [
            {
              "name": "input",
              "type": "{\n        token: string;\n        password: string;\n    }",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "confirmEmail",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoSuccess>>",
          "signature": "confirmEmail(token: string): Promise<RestGoResult<RestGoSuccess>>;",
          "parameters": [
            {
              "name": "token",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "updateUser",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoUpdateUserResult>>",
          "signature": "updateUser(input: RestGoUpdateUserInput, options?: RestGoRequestOptions): Promise<RestGoResult<RestGoUpdateUserResult>>;",
          "parameters": [
            {
              "name": "input",
              "type": "RestGoUpdateUserInput",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "resendEmailConfirmation",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoSuccess>>",
          "signature": "resendEmailConfirmation(options?: RestGoRequestOptions & {\n    url?: string;\n}): Promise<RestGoResult<RestGoSuccess>>;",
          "parameters": [
            {
              "name": "options",
              "type": "RestGoRequestOptions & {\n        url?: string;\n    }",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "uploadAvatar",
          "kind": "method",
          "type": "Promise<RestGoResult<{\n        avatarUrl: string | null;\n    }>>",
          "signature": "uploadAvatar(file: Blob, options?: {\n    name?: string;\n    signal?: AbortSignal;\n}): Promise<RestGoResult<{\n    avatarUrl: string | null;\n}>>;",
          "parameters": [
            {
              "name": "file",
              "type": "Blob",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "{\n        name?: string;\n        signal?: AbortSignal;\n    }",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "deleteAvatar",
          "kind": "method",
          "type": "Promise<RestGoResult<{\n        avatarUrl: string | null;\n    }>>",
          "signature": "deleteAvatar(options?: RestGoRequestOptions): Promise<RestGoResult<{\n    avatarUrl: string | null;\n}>>;",
          "parameters": [
            {
              "name": "options",
              "type": "RestGoRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoClient",
      "module": "@webrad/restgo-sdk",
      "kind": "class",
      "heritage": [],
      "source": "class RestGoClient {\n    readonly auth: RestGoAuthClient;\n    readonly storage: RestGoStorageClient;\n    readonly videos: RestGoVideosClient;\n    readonly payments: RestGoPaymentsClient;\n    readonly api: RestGoApiClient;\n    readonly baseUrl: string;\n    constructor(baseUrl: string, options?: RestGoClientOptions);\n    from<T = unknown>(endpoint: string, options?: RestGoEndpointOptions): RestGoEndpoint<T>;\n    /** Sign in with positional parameters and report whether this login succeeded. */\n    login(email: string, password: string, remember?: boolean): Promise<RestGoLoginResult>;\n    logout(): Promise<RestGoResult<RestGoSuccess>>;\n    getSession(): Promise<RestGoResult<RestGoSession | null>>;\n    getUser(): Promise<RestGoResult<RestGoUser | null>>;\n    /** Last server-confirmed identity, or null before authentication/restoration. */\n    get CurrentUser(): RestGoCurrentUser | null;\n    refreshSession(): Promise<RestGoResult<RestGoSession>>;\n    onAuthStateChange(callback: (event: RestGoAuthEvent, session: RestGoSession | null) => void): {\n        unsubscribe: () => void;\n    };\n    /** Release browser listeners and automatic renewal without logging the user out. */\n    dispose(): void;\n}",
      "publicSource": "class RestGoClient {\n    readonly auth: RestGoAuthClient;\n    readonly storage: RestGoStorageClient;\n    readonly videos: RestGoVideosClient;\n    readonly payments: RestGoPaymentsClient;\n    readonly api: RestGoApiClient;\n    readonly baseUrl: string;\n    constructor(baseUrl: string, options?: RestGoClientOptions);\n    from<T = unknown>(endpoint: string, options?: RestGoEndpointOptions): RestGoEndpoint<T>;\n    /** Sign in with positional parameters and report whether this login succeeded. */\n    login(email: string, password: string, remember?: boolean): Promise<RestGoLoginResult>;\n    logout(): Promise<RestGoResult<RestGoSuccess>>;\n    getSession(): Promise<RestGoResult<RestGoSession | null>>;\n    getUser(): Promise<RestGoResult<RestGoUser | null>>;\n    /** Last server-confirmed identity, or null before authentication/restoration. */\n    get CurrentUser(): RestGoCurrentUser | null;\n    refreshSession(): Promise<RestGoResult<RestGoSession>>;\n    onAuthStateChange(callback: (event: RestGoAuthEvent, session: RestGoSession | null) => void): {\n        unsubscribe: () => void;\n    };\n    /** Release browser listeners and automatic renewal without logging the user out. */\n    dispose(): void;\n}",
      "members": [
        {
          "name": "auth",
          "kind": "property",
          "type": "RestGoAuthClient",
          "signature": "readonly auth: RestGoAuthClient;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "storage",
          "kind": "property",
          "type": "RestGoStorageClient",
          "signature": "readonly storage: RestGoStorageClient;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "videos",
          "kind": "property",
          "type": "RestGoVideosClient",
          "signature": "readonly videos: RestGoVideosClient;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "payments",
          "kind": "property",
          "type": "RestGoPaymentsClient",
          "signature": "readonly payments: RestGoPaymentsClient;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "api",
          "kind": "property",
          "type": "RestGoApiClient",
          "signature": "readonly api: RestGoApiClient;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "baseUrl",
          "kind": "property",
          "type": "string",
          "signature": "readonly baseUrl: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "from",
          "kind": "method",
          "type": "RestGoEndpoint<T>",
          "signature": "from<T = unknown>(endpoint: string, options?: RestGoEndpointOptions): RestGoEndpoint<T>;",
          "parameters": [
            {
              "name": "endpoint",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoEndpointOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "login",
          "kind": "method",
          "type": "Promise<RestGoLoginResult>",
          "signature": "login(email: string, password: string, remember?: boolean): Promise<RestGoLoginResult>;",
          "parameters": [
            {
              "name": "email",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "password",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "remember",
              "type": "boolean",
              "optional": true,
              "rest": false
            }
          ],
          "description": "Sign in with positional parameters and report whether this login succeeded.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "logout",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoSuccess>>",
          "signature": "logout(): Promise<RestGoResult<RestGoSuccess>>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "getSession",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoSession | null>>",
          "signature": "getSession(): Promise<RestGoResult<RestGoSession | null>>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "getUser",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoUser | null>>",
          "signature": "getUser(): Promise<RestGoResult<RestGoUser | null>>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "CurrentUser",
          "kind": "get",
          "type": "RestGoCurrentUser | null",
          "signature": "get CurrentUser(): RestGoCurrentUser | null;",
          "parameters": [],
          "description": "Last server-confirmed identity, or null before authentication/restoration.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "refreshSession",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoSession>>",
          "signature": "refreshSession(): Promise<RestGoResult<RestGoSession>>;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onAuthStateChange",
          "kind": "method",
          "type": "{\n        unsubscribe: () => void;\n    }",
          "signature": "onAuthStateChange(callback: (event: RestGoAuthEvent, session: RestGoSession | null) => void): {\n    unsubscribe: () => void;\n};",
          "parameters": [
            {
              "name": "callback",
              "type": "(event: RestGoAuthEvent, session: RestGoSession | null) => void",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "dispose",
          "kind": "method",
          "type": "void",
          "signature": "dispose(): void;",
          "parameters": [],
          "description": "Release browser listeners and automatic renewal without logging the user out.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "createClient",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function createClient(baseUrl: string, options?: RestGoClientOptions): RestGoClient;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoErrorCode",
      "module": "@webrad/restgo-sdk",
      "kind": "type",
      "heritage": [],
      "source": "type RestGoErrorCode = 'HTTP_ERROR' | 'NETWORK_ERROR' | 'ABORTED' | 'INVALID_RESPONSE' | 'INVALID_ARGUMENT' | 'AUTH_REQUIRED' | 'API_TOKEN_REQUIRED' | 'REFRESH_LOCK_UNAVAILABLE' | 'AUTH_OPERATION_CANCELLED';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoError",
      "module": "@webrad/restgo-sdk",
      "kind": "class",
      "heritage": [
        "Error"
      ],
      "source": "class RestGoError extends Error {\n    readonly status: number;\n    readonly code: RestGoErrorCode;\n    readonly details: unknown;\n    readonly retryAfterMs: number | undefined;\n    constructor(message: string, code: RestGoErrorCode, status?: number, details?: unknown, retryAfterMs?: number);\n}",
      "publicSource": "class RestGoError extends Error {\n    readonly status: number;\n    readonly code: RestGoErrorCode;\n    readonly details: unknown;\n    readonly retryAfterMs: number | undefined;\n    constructor(message: string, code: RestGoErrorCode, status?: number, details?: unknown, retryAfterMs?: number);\n}",
      "members": [
        {
          "name": "status",
          "kind": "property",
          "type": "number",
          "signature": "readonly status: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "code",
          "kind": "property",
          "type": "RestGoErrorCode",
          "signature": "readonly code: RestGoErrorCode;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "details",
          "kind": "property",
          "type": "unknown",
          "signature": "readonly details: unknown;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "retryAfterMs",
          "kind": "property",
          "type": "number | undefined",
          "signature": "readonly retryAfterMs: number | undefined;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoResult",
      "module": "@webrad/restgo-sdk",
      "kind": "type",
      "heritage": [],
      "source": "type RestGoResult<T> = {\n    data: T;\n    error: null;\n} | {\n    data: null;\n    error: RestGoError;\n};",
      "members": [],
      "typeParameters": [
        "T"
      ]
    },
    {
      "name": "success",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function success<T>(data: T): RestGoResult<T>;",
      "members": [],
      "typeParameters": [
        "T"
      ]
    },
    {
      "name": "failure",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function failure(message: string, code: RestGoErrorCode, status?: number, details?: unknown, retryAfterMs?: number): {\n    data: null;\n    error: RestGoError;\n};",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "isRecord",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function isRecord(value: unknown): value is Record<string, unknown>;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoPaymentMode",
      "module": "@webrad/restgo-sdk",
      "kind": "type",
      "heritage": [],
      "source": "type RestGoPaymentMode = 'payment' | 'subscription';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoPaymentProvider",
      "module": "@webrad/restgo-sdk",
      "kind": "type",
      "heritage": [],
      "source": "type RestGoPaymentProvider = 'stripe' | 'asaas';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoCheckoutInput",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoCheckoutInput {\n    /** Keep database identifiers as strings, including PostgreSQL int8 values. */\n    readonly sourceKey: string;\n    readonly mode: RestGoPaymentMode;\n    /** Persist before the first POST and reuse for every retry of this attempt. */\n    readonly idempotencyKey: string;\n}",
      "members": [
        {
          "name": "sourceKey",
          "kind": "property",
          "type": "string",
          "signature": "readonly sourceKey: string;",
          "parameters": [],
          "description": "Keep database identifiers as strings, including PostgreSQL int8 values.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "mode",
          "kind": "property",
          "type": "RestGoPaymentMode",
          "signature": "readonly mode: RestGoPaymentMode;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "idempotencyKey",
          "kind": "property",
          "type": "string",
          "signature": "readonly idempotencyKey: string;",
          "parameters": [],
          "description": "Persist before the first POST and reuse for every retry of this attempt.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoPaymentProviderState",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoPaymentProviderState {\n    readonly status: string;\n    readonly paymentId?: string;\n    readonly subscriptionId?: string;\n    readonly customerId?: string;\n    readonly invoiceId?: string;\n    readonly periodEnd?: string;\n    readonly cancelAtPeriodEnd: boolean;\n    readonly everPaid?: boolean;\n    readonly eventType?: string;\n}",
      "members": [
        {
          "name": "status",
          "kind": "property",
          "type": "string",
          "signature": "readonly status: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "paymentId",
          "kind": "property",
          "type": "string",
          "signature": "readonly paymentId?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "subscriptionId",
          "kind": "property",
          "type": "string",
          "signature": "readonly subscriptionId?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "customerId",
          "kind": "property",
          "type": "string",
          "signature": "readonly customerId?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "invoiceId",
          "kind": "property",
          "type": "string",
          "signature": "readonly invoiceId?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "periodEnd",
          "kind": "property",
          "type": "string",
          "signature": "readonly periodEnd?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "cancelAtPeriodEnd",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly cancelAtPeriodEnd: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "everPaid",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly everPaid?: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "eventType",
          "kind": "property",
          "type": "string",
          "signature": "readonly eventType?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoPaymentOperation",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoPaymentOperation {\n    readonly id: string;\n    readonly mode: RestGoPaymentMode;\n    /** Financial state. Unknown future states are preserved, never treated as success. */\n    readonly status: string;\n    /** Preparation state, independent of financial confirmation. */\n    readonly checkoutState: string;\n    readonly checkoutUrl?: string;\n    readonly synchronizationPending: boolean;\n    readonly synchronizationError?: string;\n    readonly providerName: RestGoPaymentProvider;\n    readonly provider: RestGoPaymentProviderState;\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "readonly id: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "mode",
          "kind": "property",
          "type": "RestGoPaymentMode",
          "signature": "readonly mode: RestGoPaymentMode;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "status",
          "kind": "property",
          "type": "string",
          "signature": "readonly status: string;",
          "parameters": [],
          "description": "Financial state. Unknown future states are preserved, never treated as success.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "checkoutState",
          "kind": "property",
          "type": "string",
          "signature": "readonly checkoutState: string;",
          "parameters": [],
          "description": "Preparation state, independent of financial confirmation.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "checkoutUrl",
          "kind": "property",
          "type": "string",
          "signature": "readonly checkoutUrl?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "synchronizationPending",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly synchronizationPending: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "synchronizationError",
          "kind": "property",
          "type": "string",
          "signature": "readonly synchronizationError?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "providerName",
          "kind": "property",
          "type": "RestGoPaymentProvider",
          "signature": "readonly providerName: RestGoPaymentProvider;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "provider",
          "kind": "property",
          "type": "RestGoPaymentProviderState",
          "signature": "readonly provider: RestGoPaymentProviderState;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoPaymentOperationList",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoPaymentOperationList {\n    readonly data: readonly RestGoPaymentOperation[];\n    /** Empty string means the last page. Ordering is by UUID, not creation time. */\n    readonly nextCursor: string;\n}",
      "members": [
        {
          "name": "data",
          "kind": "property",
          "type": "readonly RestGoPaymentOperation[]",
          "signature": "readonly data: readonly RestGoPaymentOperation[];",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "nextCursor",
          "kind": "property",
          "type": "string",
          "signature": "readonly nextCursor: string;",
          "parameters": [],
          "description": "Empty string means the last page. Ordering is by UUID, not creation time.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoPaymentRequestOptions",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoPaymentRequestOptions {\n    readonly signal?: AbortSignal;\n}",
      "members": [
        {
          "name": "signal",
          "kind": "property",
          "type": "AbortSignal",
          "signature": "readonly signal?: AbortSignal;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoPaymentListOptions",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [
        "RestGoPaymentRequestOptions"
      ],
      "source": "interface RestGoPaymentListOptions extends RestGoPaymentRequestOptions {\n    readonly before?: string;\n}",
      "members": [
        {
          "name": "before",
          "kind": "property",
          "type": "string",
          "signature": "readonly before?: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "isRestGoPaymentUUID",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function isRestGoPaymentUUID(value: unknown): value is string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "isRestGoPaymentMode",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function isRestGoPaymentMode(value: unknown): value is RestGoPaymentMode;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "isRestGoGatewaySlug",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function isRestGoGatewaySlug(value: unknown): value is string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "isRestGoCheckoutURL",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "/** Hosted checkouts must never execute an arbitrary URL scheme or URL credentials. */\nfunction isRestGoCheckoutURL(value: unknown): value is string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "isRestGoCheckoutInput",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function isRestGoCheckoutInput(value: unknown): value is RestGoCheckoutInput;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "isRestGoPaymentOperation",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function isRestGoPaymentOperation(value: unknown): value is RestGoPaymentOperation;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "isRestGoPaymentOperationList",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function isRestGoPaymentOperationList(value: unknown): value is RestGoPaymentOperationList;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoPaymentGatewayClient",
      "module": "@webrad/restgo-sdk",
      "kind": "class",
      "heritage": [],
      "source": "/** Customer-only payment routes. Gateway administration stays on the server. */\nclass RestGoPaymentGatewayClient {\n    private readonly transport;\n    readonly slug: string;\n    constructor(transport: RestGoTransport, slug: string);\n    createCheckout(input: RestGoCheckoutInput, options?: RestGoPaymentRequestOptions): Promise<RestGoResult<RestGoPaymentOperation>>;\n    getOperation(id: string, options?: RestGoPaymentRequestOptions): Promise<RestGoResult<RestGoPaymentOperation>>;\n    listOperations(options?: RestGoPaymentListOptions): Promise<RestGoResult<RestGoPaymentOperationList>>;\n    cancelSubscription(id: string, options?: RestGoPaymentRequestOptions): Promise<RestGoResult<RestGoPaymentOperation>>;\n    private invalidId;\n    private operation;\n    private request;\n}",
      "publicSource": "/** Customer-only payment routes. Gateway administration stays on the server. */\nclass RestGoPaymentGatewayClient {\n    readonly slug: string;\n    constructor(transport: RestGoTransport, slug: string);\n    createCheckout(input: RestGoCheckoutInput, options?: RestGoPaymentRequestOptions): Promise<RestGoResult<RestGoPaymentOperation>>;\n    getOperation(id: string, options?: RestGoPaymentRequestOptions): Promise<RestGoResult<RestGoPaymentOperation>>;\n    listOperations(options?: RestGoPaymentListOptions): Promise<RestGoResult<RestGoPaymentOperationList>>;\n    cancelSubscription(id: string, options?: RestGoPaymentRequestOptions): Promise<RestGoResult<RestGoPaymentOperation>>;\n}",
      "members": [
        {
          "name": "slug",
          "kind": "property",
          "type": "string",
          "signature": "readonly slug: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "createCheckout",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoPaymentOperation>>",
          "signature": "createCheckout(input: RestGoCheckoutInput, options?: RestGoPaymentRequestOptions): Promise<RestGoResult<RestGoPaymentOperation>>;",
          "parameters": [
            {
              "name": "input",
              "type": "RestGoCheckoutInput",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoPaymentRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "getOperation",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoPaymentOperation>>",
          "signature": "getOperation(id: string, options?: RestGoPaymentRequestOptions): Promise<RestGoResult<RestGoPaymentOperation>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoPaymentRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "listOperations",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoPaymentOperationList>>",
          "signature": "listOperations(options?: RestGoPaymentListOptions): Promise<RestGoResult<RestGoPaymentOperationList>>;",
          "parameters": [
            {
              "name": "options",
              "type": "RestGoPaymentListOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "cancelSubscription",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoPaymentOperation>>",
          "signature": "cancelSubscription(id: string, options?: RestGoPaymentRequestOptions): Promise<RestGoResult<RestGoPaymentOperation>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoPaymentRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoPaymentsClient",
      "module": "@webrad/restgo-sdk",
      "kind": "class",
      "heritage": [],
      "source": "class RestGoPaymentsClient {\n    private readonly transport;\n    constructor(transport: RestGoTransport);\n    gateway(slug: string): RestGoPaymentGatewayClient;\n}",
      "publicSource": "class RestGoPaymentsClient {\n    constructor(transport: RestGoTransport);\n    gateway(slug: string): RestGoPaymentGatewayClient;\n}",
      "members": [
        {
          "name": "gateway",
          "kind": "method",
          "type": "RestGoPaymentGatewayClient",
          "signature": "gateway(slug: string): RestGoPaymentGatewayClient;",
          "parameters": [
            {
              "name": "slug",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "StoredSession",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface StoredSession {\n    token: string;\n    expiresAt: string;\n    refreshToken?: string;\n    refreshExpiresAt?: string;\n}",
      "members": [
        {
          "name": "token",
          "kind": "property",
          "type": "string",
          "signature": "token: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "expiresAt",
          "kind": "property",
          "type": "string",
          "signature": "expiresAt: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "refreshToken",
          "kind": "property",
          "type": "string",
          "signature": "refreshToken?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "refreshExpiresAt",
          "kind": "property",
          "type": "string",
          "signature": "refreshExpiresAt?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "isStoredSession",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function isStoredSession(value: unknown): value is StoredSession;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "credentials",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function credentials(value: StoredSession): StoredSession;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoSessionStore",
      "module": "@webrad/restgo-sdk",
      "kind": "class",
      "heritage": [],
      "source": "/** Storage is optional: browser privacy/security settings may deny all access. */\nclass RestGoSessionStore {\n    private readonly baseUrl;\n    private storage;\n    private readonly key;\n    private readonly shared;\n    constructor(baseUrl: string, options: RestGoClientOptions);\n    get persistent(): boolean;\n    /** Browser locks serialize single-use rotation across tabs; queues cover one realm. */\n    exclusive<T>(operation: () => Promise<RestGoResult<T>>, requireCrossTab?: boolean): Promise<RestGoResult<T>>;\n    subscribe(callback: () => void): () => void;\n    read(): StoredSession | null;\n    write(session: StoredSession | null, expectedToken?: string): void;\n}",
      "publicSource": "/** Storage is optional: browser privacy/security settings may deny all access. */\nclass RestGoSessionStore {\n    constructor(baseUrl: string, options: RestGoClientOptions);\n    get persistent(): boolean;\n    /** Browser locks serialize single-use rotation across tabs; queues cover one realm. */\n    exclusive<T>(operation: () => Promise<RestGoResult<T>>, requireCrossTab?: boolean): Promise<RestGoResult<T>>;\n    subscribe(callback: () => void): () => void;\n    read(): StoredSession | null;\n    write(session: StoredSession | null, expectedToken?: string): void;\n}",
      "members": [
        {
          "name": "persistent",
          "kind": "get",
          "type": "boolean",
          "signature": "get persistent(): boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "exclusive",
          "kind": "method",
          "type": "Promise<RestGoResult<T>>",
          "signature": "exclusive<T>(operation: () => Promise<RestGoResult<T>>, requireCrossTab?: boolean): Promise<RestGoResult<T>>;",
          "parameters": [
            {
              "name": "operation",
              "type": "() => Promise<RestGoResult<T>>",
              "optional": false,
              "rest": false
            },
            {
              "name": "requireCrossTab",
              "type": "boolean",
              "optional": true,
              "rest": false
            }
          ],
          "description": "Browser locks serialize single-use rotation across tabs; queues cover one realm.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "subscribe",
          "kind": "method",
          "type": "() => void",
          "signature": "subscribe(callback: () => void): () => void;",
          "parameters": [
            {
              "name": "callback",
              "type": "() => void",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "read",
          "kind": "method",
          "type": "StoredSession | null",
          "signature": "read(): StoredSession | null;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "write",
          "kind": "method",
          "type": "void",
          "signature": "write(session: StoredSession | null, expectedToken?: string): void;",
          "parameters": [
            {
              "name": "session",
              "type": "StoredSession | null",
              "optional": false,
              "rest": false
            },
            {
              "name": "expectedToken",
              "type": "string",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoStorageClient",
      "module": "@webrad/restgo-sdk",
      "kind": "class",
      "heritage": [],
      "source": "class RestGoStorageClient {\n    private readonly transport;\n    constructor(transport: RestGoTransport);\n    list(options?: RestGoListOptions): Promise<RestGoResult<RestGoList<RestGoStoredFile>>>;\n    upload(file: Blob, options?: RestGoFileOptions): Promise<RestGoResult<RestGoStoredFile>>;\n    get(id: string, options?: {\n        signal?: AbortSignal;\n    }): Promise<RestGoResult<RestGoStoredFile>>;\n    update(id: string, input: RestGoFileUpdate): Promise<RestGoResult<RestGoStoredFile>>;\n    remove(id: string, options?: {\n        signal?: AbortSignal;\n    }): Promise<RestGoResult<null>>;\n    private fileRequest;\n    download(id: string, options?: {\n        range?: string;\n        public?: boolean;\n        signal?: AbortSignal;\n    }): Promise<RestGoResult<Blob>>;\n    /** Constructs a URL; public access still depends on the file's isPublic metadata. */\n    getPublicUrl(id: string): RestGoResult<{\n        publicUrl: string;\n    }>;\n    usage(options?: {\n        signal?: AbortSignal;\n    }): Promise<RestGoResult<RestGoStorageUsage>>;\n}",
      "publicSource": "class RestGoStorageClient {\n    constructor(transport: RestGoTransport);\n    list(options?: RestGoListOptions): Promise<RestGoResult<RestGoList<RestGoStoredFile>>>;\n    upload(file: Blob, options?: RestGoFileOptions): Promise<RestGoResult<RestGoStoredFile>>;\n    get(id: string, options?: {\n        signal?: AbortSignal;\n    }): Promise<RestGoResult<RestGoStoredFile>>;\n    update(id: string, input: RestGoFileUpdate): Promise<RestGoResult<RestGoStoredFile>>;\n    remove(id: string, options?: {\n        signal?: AbortSignal;\n    }): Promise<RestGoResult<null>>;\n    download(id: string, options?: {\n        range?: string;\n        public?: boolean;\n        signal?: AbortSignal;\n    }): Promise<RestGoResult<Blob>>;\n    /** Constructs a URL; public access still depends on the file's isPublic metadata. */\n    getPublicUrl(id: string): RestGoResult<{\n        publicUrl: string;\n    }>;\n    usage(options?: {\n        signal?: AbortSignal;\n    }): Promise<RestGoResult<RestGoStorageUsage>>;\n}",
      "members": [
        {
          "name": "list",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoList<RestGoStoredFile>>>",
          "signature": "list(options?: RestGoListOptions): Promise<RestGoResult<RestGoList<RestGoStoredFile>>>;",
          "parameters": [
            {
              "name": "options",
              "type": "RestGoListOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "upload",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoStoredFile>>",
          "signature": "upload(file: Blob, options?: RestGoFileOptions): Promise<RestGoResult<RestGoStoredFile>>;",
          "parameters": [
            {
              "name": "file",
              "type": "Blob",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoFileOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "get",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoStoredFile>>",
          "signature": "get(id: string, options?: {\n    signal?: AbortSignal;\n}): Promise<RestGoResult<RestGoStoredFile>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "{\n        signal?: AbortSignal;\n    }",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "update",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoStoredFile>>",
          "signature": "update(id: string, input: RestGoFileUpdate): Promise<RestGoResult<RestGoStoredFile>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "input",
              "type": "RestGoFileUpdate",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "remove",
          "kind": "method",
          "type": "Promise<RestGoResult<null>>",
          "signature": "remove(id: string, options?: {\n    signal?: AbortSignal;\n}): Promise<RestGoResult<null>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "{\n        signal?: AbortSignal;\n    }",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "download",
          "kind": "method",
          "type": "Promise<RestGoResult<Blob>>",
          "signature": "download(id: string, options?: {\n    range?: string;\n    public?: boolean;\n    signal?: AbortSignal;\n}): Promise<RestGoResult<Blob>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "{\n        range?: string;\n        public?: boolean;\n        signal?: AbortSignal;\n    }",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "getPublicUrl",
          "kind": "method",
          "type": "RestGoResult<{\n        publicUrl: string;\n    }>",
          "signature": "getPublicUrl(id: string): RestGoResult<{\n    publicUrl: string;\n}>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "Constructs a URL; public access still depends on the file's isPublic metadata.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "usage",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoStorageUsage>>",
          "signature": "usage(options?: {\n    signal?: AbortSignal;\n}): Promise<RestGoResult<RestGoStorageUsage>>;",
          "parameters": [
            {
              "name": "options",
              "type": "{\n        signal?: AbortSignal;\n    }",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "TransportRequest",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [
        "RestGoRequestOptions"
      ],
      "source": "interface TransportRequest extends RestGoRequestOptions {\n    method?: string;\n    body?: unknown;\n    auth?: RestGoCredentialMode;\n    token?: string;\n    responseType?: 'json' | 'blob' | 'response';\n    /** A 401 from this endpoint definitively rejects the user session. */\n    sessionAuthority?: boolean;\n    skipUnauthorized?: boolean;\n    onUploadProgress?: (progress: RestGoUploadProgress) => void;\n    /** Send a Blob as binary without changing its explicit Content-Type. */\n    binary?: boolean;\n    /** Resumable writes must reconcile their offset after session renewal. */\n    retryUnauthorized?: boolean;\n}",
      "members": [
        {
          "name": "method",
          "kind": "property",
          "type": "string",
          "signature": "method?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "body",
          "kind": "property",
          "type": "unknown",
          "signature": "body?: unknown;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "auth",
          "kind": "property",
          "type": "RestGoCredentialMode",
          "signature": "auth?: RestGoCredentialMode;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "token",
          "kind": "property",
          "type": "string",
          "signature": "token?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "responseType",
          "kind": "property",
          "type": "'json' | 'blob' | 'response'",
          "signature": "responseType?: 'json' | 'blob' | 'response';",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "sessionAuthority",
          "kind": "property",
          "type": "boolean",
          "signature": "sessionAuthority?: boolean;",
          "parameters": [],
          "description": "A 401 from this endpoint definitively rejects the user session.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "skipUnauthorized",
          "kind": "property",
          "type": "boolean",
          "signature": "skipUnauthorized?: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onUploadProgress",
          "kind": "property",
          "type": "(progress: RestGoUploadProgress) => void",
          "signature": "onUploadProgress?: (progress: RestGoUploadProgress) => void;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "binary",
          "kind": "property",
          "type": "boolean",
          "signature": "binary?: boolean;",
          "parameters": [],
          "description": "Send a Blob as binary without changing its explicit Content-Type.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "retryUnauthorized",
          "kind": "property",
          "type": "boolean",
          "signature": "retryUnauthorized?: boolean;",
          "parameters": [],
          "description": "Resumable writes must reconcile their offset after session renewal.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoTransport",
      "module": "@webrad/restgo-sdk",
      "kind": "class",
      "heritage": [],
      "source": "class RestGoTransport {\n    readonly baseUrl: string;\n    readonly apiVersion: number;\n    readonly defaultDatabase: string;\n    readonly apiToken: string | undefined;\n    private readonly fetcher;\n    private readonly customFetch;\n    session: () => RestGoSession | null;\n    sessionVersion: () => number;\n    prepareSession: () => Promise<RestGoResult<null>>;\n    unauthorized: (token: string, authoritative: boolean) => Promise<RestGoResult<RestGoSession | null>>;\n    constructor(baseUrl: string, options: RestGoClientOptions);\n    url(path: string, options?: RestGoRequestOptions): string;\n    request<T>(path: string, options?: TransportRequest): Promise<RestGoResult<T>>;\n}",
      "publicSource": "class RestGoTransport {\n    readonly baseUrl: string;\n    readonly apiVersion: number;\n    readonly defaultDatabase: string;\n    readonly apiToken: string | undefined;\n    session: () => RestGoSession | null;\n    sessionVersion: () => number;\n    prepareSession: () => Promise<RestGoResult<null>>;\n    unauthorized: (token: string, authoritative: boolean) => Promise<RestGoResult<RestGoSession | null>>;\n    constructor(baseUrl: string, options: RestGoClientOptions);\n    url(path: string, options?: RestGoRequestOptions): string;\n    request<T>(path: string, options?: TransportRequest): Promise<RestGoResult<T>>;\n}",
      "members": [
        {
          "name": "baseUrl",
          "kind": "property",
          "type": "string",
          "signature": "readonly baseUrl: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "apiVersion",
          "kind": "property",
          "type": "number",
          "signature": "readonly apiVersion: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "defaultDatabase",
          "kind": "property",
          "type": "string",
          "signature": "readonly defaultDatabase: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "apiToken",
          "kind": "property",
          "type": "string | undefined",
          "signature": "readonly apiToken: string | undefined;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "session",
          "kind": "property",
          "type": "() => RestGoSession | null",
          "signature": "session: () => RestGoSession | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "sessionVersion",
          "kind": "property",
          "type": "() => number",
          "signature": "sessionVersion: () => number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "prepareSession",
          "kind": "property",
          "type": "() => Promise<RestGoResult<null>>",
          "signature": "prepareSession: () => Promise<RestGoResult<null>>;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "unauthorized",
          "kind": "property",
          "type": "(token: string, authoritative: boolean) => Promise<RestGoResult<RestGoSession | null>>",
          "signature": "unauthorized: (token: string, authoritative: boolean) => Promise<RestGoResult<RestGoSession | null>>;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "url",
          "kind": "method",
          "type": "string",
          "signature": "url(path: string, options?: RestGoRequestOptions): string;",
          "parameters": [
            {
              "name": "path",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "request",
          "kind": "method",
          "type": "Promise<RestGoResult<T>>",
          "signature": "request<T>(path: string, options?: TransportRequest): Promise<RestGoResult<T>>;",
          "parameters": [
            {
              "name": "path",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "TransportRequest",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoSessionStorage",
      "module": "@webrad/restgo-sdk",
      "kind": "type",
      "heritage": [],
      "source": "type RestGoSessionStorage = 'local' | 'session' | 'memory';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoSessionStorageAdapter",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "/** Browser-safe durable storage supplied by an embedding host. */\ninterface RestGoSessionStorageAdapter {\n    getItem(key: string): string | null;\n    setItem(key: string, value: string): void;\n    removeItem(key: string): void;\n    subscribe?(callback: () => void): () => void;\n}",
      "members": [
        {
          "name": "getItem",
          "kind": "method",
          "type": "string | null",
          "signature": "getItem(key: string): string | null;",
          "parameters": [
            {
              "name": "key",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "setItem",
          "kind": "method",
          "type": "void",
          "signature": "setItem(key: string, value: string): void;",
          "parameters": [
            {
              "name": "key",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "value",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "removeItem",
          "kind": "method",
          "type": "void",
          "signature": "removeItem(key: string): void;",
          "parameters": [
            {
              "name": "key",
              "type": "string",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "subscribe",
          "kind": "method",
          "type": "() => void",
          "signature": "subscribe?(callback: () => void): () => void;",
          "parameters": [
            {
              "name": "callback",
              "type": "() => void",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoClientOptions",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoClientOptions {\n    persistSession?: boolean;\n    /** Renew before JWT expiry and retry a rejected session request once. Defaults to true. */\n    autoRefreshToken?: boolean;\n    sessionStorage?: RestGoSessionStorage;\n    storageKey?: string;\n    /** Used only with persistent local sessions; never changes session/memory semantics. */\n    storage?: RestGoSessionStorageAdapter;\n    apiVersion?: number;\n    defaultDatabase?: string;\n    fetch?: typeof fetch;\n    /** An active RestGo API token. Never supply RESTGO_AUTHORIZATION here. */\n    apiToken?: string;\n}",
      "members": [
        {
          "name": "persistSession",
          "kind": "property",
          "type": "boolean",
          "signature": "persistSession?: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "autoRefreshToken",
          "kind": "property",
          "type": "boolean",
          "signature": "autoRefreshToken?: boolean;",
          "parameters": [],
          "description": "Renew before JWT expiry and retry a rejected session request once. Defaults to true.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "sessionStorage",
          "kind": "property",
          "type": "RestGoSessionStorage",
          "signature": "sessionStorage?: RestGoSessionStorage;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "storageKey",
          "kind": "property",
          "type": "string",
          "signature": "storageKey?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "storage",
          "kind": "property",
          "type": "RestGoSessionStorageAdapter",
          "signature": "storage?: RestGoSessionStorageAdapter;",
          "parameters": [],
          "description": "Used only with persistent local sessions; never changes session/memory semantics.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "apiVersion",
          "kind": "property",
          "type": "number",
          "signature": "apiVersion?: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "defaultDatabase",
          "kind": "property",
          "type": "string",
          "signature": "defaultDatabase?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "fetch",
          "kind": "property",
          "type": "typeof fetch",
          "signature": "fetch?: typeof fetch;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "apiToken",
          "kind": "property",
          "type": "string",
          "signature": "apiToken?: string;",
          "parameters": [],
          "description": "An active RestGo API token. Never supply RESTGO_AUTHORIZATION here.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoUser",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoUser {\n    id: string;\n    email: string;\n    fullName: string;\n    avatarUrl: string | null;\n    active: boolean;\n    emailConfirmed: boolean;\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "id: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "email",
          "kind": "property",
          "type": "string",
          "signature": "email: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "fullName",
          "kind": "property",
          "type": "string",
          "signature": "fullName: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "avatarUrl",
          "kind": "property",
          "type": "string | null",
          "signature": "avatarUrl: string | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "active",
          "kind": "property",
          "type": "boolean",
          "signature": "active: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "emailConfirmed",
          "kind": "property",
          "type": "boolean",
          "signature": "emailConfirmed: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoCurrentUser",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "/** Readonly projection of the last server-confirmed user identity. */\ninterface RestGoCurrentUser {\n    readonly nome: string;\n    readonly email: string;\n    readonly id: string;\n    readonly emailconfirmed: boolean;\n    readonly ativo: boolean;\n}",
      "members": [
        {
          "name": "nome",
          "kind": "property",
          "type": "string",
          "signature": "readonly nome: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "email",
          "kind": "property",
          "type": "string",
          "signature": "readonly email: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "readonly id: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "emailconfirmed",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly emailconfirmed: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "ativo",
          "kind": "property",
          "type": "boolean",
          "signature": "readonly ativo: boolean;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoManagedUser",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [
        "Omit<RestGoUser, 'avatarUrl'>"
      ],
      "source": "interface RestGoManagedUser extends Omit<RestGoUser, 'avatarUrl'> {\n    avatarUrl?: string;\n    createdAt: string;\n    updatedAt: string;\n}",
      "members": [
        {
          "name": "avatarUrl",
          "kind": "property",
          "type": "string",
          "signature": "avatarUrl?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "createdAt",
          "kind": "property",
          "type": "string",
          "signature": "createdAt: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "updatedAt",
          "kind": "property",
          "type": "string",
          "signature": "updatedAt: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoSession",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoSession {\n    token: string;\n    /** Used to schedule renewal; the server remains the authority on session validity. */\n    expiresAt: string;\n    /** Both refresh fields are absent for legacy JWT-only sessions. */\n    refreshToken?: string;\n    refreshExpiresAt?: string;\n    user: RestGoUser;\n}",
      "members": [
        {
          "name": "token",
          "kind": "property",
          "type": "string",
          "signature": "token: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "expiresAt",
          "kind": "property",
          "type": "string",
          "signature": "expiresAt: string;",
          "parameters": [],
          "description": "Used to schedule renewal; the server remains the authority on session validity.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "refreshToken",
          "kind": "property",
          "type": "string",
          "signature": "refreshToken?: string;",
          "parameters": [],
          "description": "Both refresh fields are absent for legacy JWT-only sessions.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "refreshExpiresAt",
          "kind": "property",
          "type": "string",
          "signature": "refreshExpiresAt?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "user",
          "kind": "property",
          "type": "RestGoUser",
          "signature": "user: RestGoUser;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoLoginResult",
      "module": "@webrad/restgo-sdk",
      "kind": "type",
      "heritage": [],
      "source": "/** Result of login; the boolean also narrows data and error in authored code. */\ntype RestGoLoginResult = {\n    sucess: true;\n    data: RestGoSession;\n    error: null;\n} | {\n    sucess: false;\n    data: null;\n    error: RestGoError;\n};",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoAuthEvent",
      "module": "@webrad/restgo-sdk",
      "kind": "type",
      "heritage": [],
      "source": "type RestGoAuthEvent = 'INITIAL_SESSION' | 'SIGNED_IN' | 'SIGNED_OUT' | 'SESSION_VALIDATED' | 'TOKEN_REFRESHED' | 'USER_UPDATED';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoSignInInput",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoSignInInput {\n    email: string;\n    password: string;\n    remember?: boolean;\n}",
      "members": [
        {
          "name": "email",
          "kind": "property",
          "type": "string",
          "signature": "email: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "password",
          "kind": "property",
          "type": "string",
          "signature": "password: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "remember",
          "kind": "property",
          "type": "boolean",
          "signature": "remember?: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoSignUpInput",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoSignUpInput {\n    email: string;\n    password: string;\n    fullName?: string;\n    active?: boolean;\n}",
      "members": [
        {
          "name": "email",
          "kind": "property",
          "type": "string",
          "signature": "email: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "password",
          "kind": "property",
          "type": "string",
          "signature": "password: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "fullName",
          "kind": "property",
          "type": "string",
          "signature": "fullName?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "active",
          "kind": "property",
          "type": "boolean",
          "signature": "active?: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoUpdateUserInput",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "/** Self-service fields; activation and confirmation remain server-controlled. */\ninterface RestGoUpdateUserInput {\n    fullName?: string;\n    email?: string;\n    password?: string;\n    /** Required when changing email or password. */\n    currentPassword?: string;\n    /** Optional absolute HTTP(S) destination for a confirmation email after a profile update. */\n    emailConfirmationUrl?: string;\n}",
      "members": [
        {
          "name": "fullName",
          "kind": "property",
          "type": "string",
          "signature": "fullName?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "email",
          "kind": "property",
          "type": "string",
          "signature": "email?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "password",
          "kind": "property",
          "type": "string",
          "signature": "password?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "currentPassword",
          "kind": "property",
          "type": "string",
          "signature": "currentPassword?: string;",
          "parameters": [],
          "description": "Required when changing email or password.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "emailConfirmationUrl",
          "kind": "property",
          "type": "string",
          "signature": "emailConfirmationUrl?: string;",
          "parameters": [],
          "description": "Optional absolute HTTP(S) destination for a confirmation email after a profile update.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoUpdateUserResult",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoUpdateUserResult {\n    user: RestGoUser;\n    /** Credential changes revoke all sessions and require a new login. */\n    sessionRevoked: boolean;\n}",
      "members": [
        {
          "name": "user",
          "kind": "property",
          "type": "RestGoUser",
          "signature": "user: RestGoUser;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "sessionRevoked",
          "kind": "property",
          "type": "boolean",
          "signature": "sessionRevoked: boolean;",
          "parameters": [],
          "description": "Credential changes revoke all sessions and require a new login.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoSuccess",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoSuccess {\n    success: boolean;\n    message?: string;\n}",
      "members": [
        {
          "name": "success",
          "kind": "property",
          "type": "boolean",
          "signature": "success: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "message",
          "kind": "property",
          "type": "string",
          "signature": "message?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoQueryValue",
      "module": "@webrad/restgo-sdk",
      "kind": "type",
      "heritage": [],
      "source": "type RestGoQueryValue = string | number | boolean | null | undefined;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoQuery",
      "module": "@webrad/restgo-sdk",
      "kind": "type",
      "heritage": [],
      "source": "type RestGoQuery = Record<string, RestGoQueryValue | readonly RestGoQueryValue[]>;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoCredentialMode",
      "module": "@webrad/restgo-sdk",
      "kind": "type",
      "heritage": [],
      "source": "type RestGoCredentialMode = 'auto' | 'session' | 'apiToken' | 'none';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoRequestOptions",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoRequestOptions {\n    query?: RestGoQuery;\n    signal?: AbortSignal;\n    headers?: HeadersInit;\n}",
      "members": [
        {
          "name": "query",
          "kind": "property",
          "type": "RestGoQuery",
          "signature": "query?: RestGoQuery;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "signal",
          "kind": "property",
          "type": "AbortSignal",
          "signature": "signal?: AbortSignal;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "headers",
          "kind": "property",
          "type": "HeadersInit",
          "signature": "headers?: HeadersInit;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoDynamicOptions",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [
        "RestGoRequestOptions"
      ],
      "source": "interface RestGoDynamicOptions extends RestGoRequestOptions {\n    auth?: RestGoCredentialMode;\n    version?: number;\n    pagination?: 'exact' | 'simple' | 'cursor';\n    cursorColumn?: string;\n    cursor?: string;\n    page?: number;\n}",
      "members": [
        {
          "name": "auth",
          "kind": "property",
          "type": "RestGoCredentialMode",
          "signature": "auth?: RestGoCredentialMode;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "version",
          "kind": "property",
          "type": "number",
          "signature": "version?: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "pagination",
          "kind": "property",
          "type": "'exact' | 'simple' | 'cursor'",
          "signature": "pagination?: 'exact' | 'simple' | 'cursor';",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "cursorColumn",
          "kind": "property",
          "type": "string",
          "signature": "cursorColumn?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "cursor",
          "kind": "property",
          "type": "string",
          "signature": "cursor?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "page",
          "kind": "property",
          "type": "number",
          "signature": "page?: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoDynamicMetadata",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoDynamicMetadata {\n    page?: number;\n    total_pages?: number;\n    has_more?: boolean;\n    next_cursor?: string;\n}",
      "members": [
        {
          "name": "page",
          "kind": "property",
          "type": "number",
          "signature": "page?: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "total_pages",
          "kind": "property",
          "type": "number",
          "signature": "total_pages?: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "has_more",
          "kind": "property",
          "type": "boolean",
          "signature": "has_more?: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "next_cursor",
          "kind": "property",
          "type": "string",
          "signature": "next_cursor?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoListOptions",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoListOptions {\n    page?: number;\n    pageSize?: number;\n    q?: string;\n    ownerId?: string;\n    signal?: AbortSignal;\n}",
      "members": [
        {
          "name": "page",
          "kind": "property",
          "type": "number",
          "signature": "page?: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "pageSize",
          "kind": "property",
          "type": "number",
          "signature": "pageSize?: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "q",
          "kind": "property",
          "type": "string",
          "signature": "q?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "ownerId",
          "kind": "property",
          "type": "string",
          "signature": "ownerId?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "signal",
          "kind": "property",
          "type": "AbortSignal",
          "signature": "signal?: AbortSignal;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoListPage",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoListPage<T> {\n    data: T[];\n    page: number;\n    page_size: number;\n    has_more: boolean;\n}",
      "members": [
        {
          "name": "data",
          "kind": "property",
          "type": "T[]",
          "signature": "data: T[];",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "page",
          "kind": "property",
          "type": "number",
          "signature": "page: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "page_size",
          "kind": "property",
          "type": "number",
          "signature": "page_size: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "has_more",
          "kind": "property",
          "type": "boolean",
          "signature": "has_more: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": [
        "T"
      ]
    },
    {
      "name": "RestGoList",
      "module": "@webrad/restgo-sdk",
      "kind": "type",
      "heritage": [],
      "source": "type RestGoList<T> = T[] | RestGoListPage<T>;",
      "members": [],
      "typeParameters": [
        "T"
      ]
    },
    {
      "name": "RestGoStoredFile",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoStoredFile {\n    id: string;\n    ownerId?: string;\n    ownerEmail?: string;\n    originalName: string;\n    contentType: string;\n    sizeBytes: number;\n    isPublic: boolean;\n    createdAt: string;\n    updatedAt: string;\n    downloadUrl: string;\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "id: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "ownerId",
          "kind": "property",
          "type": "string",
          "signature": "ownerId?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "ownerEmail",
          "kind": "property",
          "type": "string",
          "signature": "ownerEmail?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "originalName",
          "kind": "property",
          "type": "string",
          "signature": "originalName: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "contentType",
          "kind": "property",
          "type": "string",
          "signature": "contentType: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "sizeBytes",
          "kind": "property",
          "type": "number",
          "signature": "sizeBytes: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "isPublic",
          "kind": "property",
          "type": "boolean",
          "signature": "isPublic: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "createdAt",
          "kind": "property",
          "type": "string",
          "signature": "createdAt: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "updatedAt",
          "kind": "property",
          "type": "string",
          "signature": "updatedAt: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "downloadUrl",
          "kind": "property",
          "type": "string",
          "signature": "downloadUrl: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoFileOptions",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoFileOptions {\n    name?: string;\n    isPublic?: boolean;\n    ownerId?: string;\n    signal?: AbortSignal;\n    /** Actual multipart upload progress. The percentage is null when it cannot be measured. */\n    onUploadProgress?: (progress: RestGoUploadProgress) => void;\n}",
      "members": [
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "name?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "isPublic",
          "kind": "property",
          "type": "boolean",
          "signature": "isPublic?: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "ownerId",
          "kind": "property",
          "type": "string",
          "signature": "ownerId?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "signal",
          "kind": "property",
          "type": "AbortSignal",
          "signature": "signal?: AbortSignal;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onUploadProgress",
          "kind": "property",
          "type": "(progress: RestGoUploadProgress) => void",
          "signature": "onUploadProgress?: (progress: RestGoUploadProgress) => void;",
          "parameters": [],
          "description": "Actual multipart upload progress. The percentage is null when it cannot be measured.",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoUploadProgress",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoUploadProgress {\n    loaded: number;\n    total: number | null;\n    percentage: number | null;\n    lengthComputable: boolean;\n}",
      "members": [
        {
          "name": "loaded",
          "kind": "property",
          "type": "number",
          "signature": "loaded: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "total",
          "kind": "property",
          "type": "number | null",
          "signature": "total: number | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "percentage",
          "kind": "property",
          "type": "number | null",
          "signature": "percentage: number | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "lengthComputable",
          "kind": "property",
          "type": "boolean",
          "signature": "lengthComputable: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoFileUpdate",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [
        "RestGoFileOptions"
      ],
      "source": "interface RestGoFileUpdate extends RestGoFileOptions {\n    file?: Blob;\n}",
      "members": [
        {
          "name": "file",
          "kind": "property",
          "type": "Blob",
          "signature": "file?: Blob;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoStorageUsage",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoStorageUsage {\n    usedBytes: number;\n    capacityBytes: number;\n    availableBytes: number;\n}",
      "members": [
        {
          "name": "usedBytes",
          "kind": "property",
          "type": "number",
          "signature": "usedBytes: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "capacityBytes",
          "kind": "property",
          "type": "number",
          "signature": "capacityBytes: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "availableBytes",
          "kind": "property",
          "type": "number",
          "signature": "availableBytes: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "UploadProgressCallback",
      "module": "@webrad/restgo-sdk",
      "kind": "type",
      "heritage": [],
      "source": "type UploadProgressCallback = (progress: RestGoUploadProgress) => void;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "supportsCrossOriginUpload",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "/** XHR omits ambient credentials only for requests that start across origins. */\nfunction supportsCrossOriginUpload(url: string): boolean;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "notifyUploadProgress",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function notifyUploadProgress(callback: UploadProgressCallback, progress: RestGoUploadProgress): void;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "requestWithUploadProgress",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "/**\n * Cross-origin XHR provides bytes sent by the browser without dashboard cookies.\n * Unlike fetch, XHR cannot prevent redirects before following them. Reject a changed\n * response URL so a redirected response cannot be accepted as RestGo metadata.\n */\nfunction requestWithUploadProgress(url: string, method: string, headers: Headers, body: FormData | Blob | string, signal: AbortSignal | undefined, callback: UploadProgressCallback, responseType: 'json' | 'blob' | undefined): Promise<Response>;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoStatus",
      "module": "@webrad/restgo-sdk",
      "kind": "type",
      "heritage": [],
      "source": "type RestGoVideoStatus = 'uploading' | 'pending' | 'processing' | 'ready' | 'failed' | 'deleting';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoUploadState",
      "module": "@webrad/restgo-sdk",
      "kind": "type",
      "heritage": [],
      "source": "type RestGoVideoUploadState = 'open' | 'completed' | 'cancelled';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoJobState",
      "module": "@webrad/restgo-sdk",
      "kind": "type",
      "heritage": [],
      "source": "type RestGoVideoJobState = 'pending' | 'processing' | 'ready' | 'failed' | 'cancelled';",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoUploadSession",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoVideoUploadSession {\n    id: string;\n    videoId: string;\n    offset: number;\n    sizeBytes: number;\n    state: RestGoVideoUploadState;\n    expiresAt: string;\n    maxChunkBytes: number;\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "id: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "videoId",
          "kind": "property",
          "type": "string",
          "signature": "videoId: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "offset",
          "kind": "property",
          "type": "number",
          "signature": "offset: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "sizeBytes",
          "kind": "property",
          "type": "number",
          "signature": "sizeBytes: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "state",
          "kind": "property",
          "type": "RestGoVideoUploadState",
          "signature": "state: RestGoVideoUploadState;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "expiresAt",
          "kind": "property",
          "type": "string",
          "signature": "expiresAt: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "maxChunkBytes",
          "kind": "property",
          "type": "number",
          "signature": "maxChunkBytes: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoSource",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoVideoSource {\n    width: number;\n    height: number;\n    codedWidth: number;\n    codedHeight: number;\n    rotation: number;\n    fps: number;\n    frameRate: string;\n    duration: number;\n    format: string;\n    codec: string;\n    hasAudio: boolean;\n    audioCodec?: string;\n    videoStream: number;\n    audioStream: number;\n    level: number;\n}",
      "members": [
        {
          "name": "width",
          "kind": "property",
          "type": "number",
          "signature": "width: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "height",
          "kind": "property",
          "type": "number",
          "signature": "height: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "codedWidth",
          "kind": "property",
          "type": "number",
          "signature": "codedWidth: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "codedHeight",
          "kind": "property",
          "type": "number",
          "signature": "codedHeight: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "rotation",
          "kind": "property",
          "type": "number",
          "signature": "rotation: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "fps",
          "kind": "property",
          "type": "number",
          "signature": "fps: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "frameRate",
          "kind": "property",
          "type": "string",
          "signature": "frameRate: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "duration",
          "kind": "property",
          "type": "number",
          "signature": "duration: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "format",
          "kind": "property",
          "type": "string",
          "signature": "format: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "codec",
          "kind": "property",
          "type": "string",
          "signature": "codec: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "hasAudio",
          "kind": "property",
          "type": "boolean",
          "signature": "hasAudio: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "audioCodec",
          "kind": "property",
          "type": "string",
          "signature": "audioCodec?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "videoStream",
          "kind": "property",
          "type": "number",
          "signature": "videoStream: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "audioStream",
          "kind": "property",
          "type": "number",
          "signature": "audioStream: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "level",
          "kind": "property",
          "type": "number",
          "signature": "level: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoVariant",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoVideoVariant {\n    quality: number;\n    width: number;\n    height: number;\n    fps: number;\n    frameRate: string;\n    bandwidth: number;\n    averageBandwidth: number;\n    codecs: string;\n}",
      "members": [
        {
          "name": "quality",
          "kind": "property",
          "type": "number",
          "signature": "quality: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "width",
          "kind": "property",
          "type": "number",
          "signature": "width: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "height",
          "kind": "property",
          "type": "number",
          "signature": "height: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "fps",
          "kind": "property",
          "type": "number",
          "signature": "fps: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "frameRate",
          "kind": "property",
          "type": "string",
          "signature": "frameRate: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "bandwidth",
          "kind": "property",
          "type": "number",
          "signature": "bandwidth: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "averageBandwidth",
          "kind": "property",
          "type": "number",
          "signature": "averageBandwidth: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "codecs",
          "kind": "property",
          "type": "string",
          "signature": "codecs: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoVideo",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoVideo {\n    id: string;\n    ownerId?: string;\n    title: string;\n    descri: string;\n    isPublic: boolean;\n    sizeBytes: number;\n    source: RestGoVideoSource;\n    originalRetained: boolean;\n    status: RestGoVideoStatus;\n    progress: number | null;\n    error: string;\n    generation?: string;\n    variants: RestGoVideoVariant[];\n    hasThumbnail: boolean;\n    createdAt: string;\n    updatedAt: string;\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "id: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "ownerId",
          "kind": "property",
          "type": "string",
          "signature": "ownerId?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "title",
          "kind": "property",
          "type": "string",
          "signature": "title: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "descri",
          "kind": "property",
          "type": "string",
          "signature": "descri: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "isPublic",
          "kind": "property",
          "type": "boolean",
          "signature": "isPublic: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "sizeBytes",
          "kind": "property",
          "type": "number",
          "signature": "sizeBytes: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "source",
          "kind": "property",
          "type": "RestGoVideoSource",
          "signature": "source: RestGoVideoSource;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "originalRetained",
          "kind": "property",
          "type": "boolean",
          "signature": "originalRetained: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "status",
          "kind": "property",
          "type": "RestGoVideoStatus",
          "signature": "status: RestGoVideoStatus;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "progress",
          "kind": "property",
          "type": "number | null",
          "signature": "progress: number | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "error",
          "kind": "property",
          "type": "string",
          "signature": "error: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "generation",
          "kind": "property",
          "type": "string",
          "signature": "generation?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "variants",
          "kind": "property",
          "type": "RestGoVideoVariant[]",
          "signature": "variants: RestGoVideoVariant[];",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "hasThumbnail",
          "kind": "property",
          "type": "boolean",
          "signature": "hasThumbnail: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "createdAt",
          "kind": "property",
          "type": "string",
          "signature": "createdAt: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "updatedAt",
          "kind": "property",
          "type": "string",
          "signature": "updatedAt: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoJob",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoVideoJob {\n    id: string;\n    state: RestGoVideoJobState;\n    error: string;\n    attempts: number;\n    options: Readonly<Record<string, unknown>>;\n    createdAt: string;\n    startedAt: string | null;\n    finishedAt: string | null;\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "id: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "state",
          "kind": "property",
          "type": "RestGoVideoJobState",
          "signature": "state: RestGoVideoJobState;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "error",
          "kind": "property",
          "type": "string",
          "signature": "error: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "attempts",
          "kind": "property",
          "type": "number",
          "signature": "attempts: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "options",
          "kind": "property",
          "type": "Readonly<Record<string, unknown>>",
          "signature": "options: Readonly<Record<string, unknown>>;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "createdAt",
          "kind": "property",
          "type": "string",
          "signature": "createdAt: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "startedAt",
          "kind": "property",
          "type": "string | null",
          "signature": "startedAt: string | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "finishedAt",
          "kind": "property",
          "type": "string | null",
          "signature": "finishedAt: string | null;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoDetails",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoVideoDetails {\n    video: RestGoVideo;\n    jobs: RestGoVideoJob[];\n}",
      "members": [
        {
          "name": "video",
          "kind": "property",
          "type": "RestGoVideo",
          "signature": "video: RestGoVideo;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "jobs",
          "kind": "property",
          "type": "RestGoVideoJob[]",
          "signature": "jobs: RestGoVideoJob[];",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoList",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoVideoList {\n    data: RestGoVideo[];\n    total: number;\n    limit: number;\n    offset: number;\n}",
      "members": [
        {
          "name": "data",
          "kind": "property",
          "type": "RestGoVideo[]",
          "signature": "data: RestGoVideo[];",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "total",
          "kind": "property",
          "type": "number",
          "signature": "total: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "limit",
          "kind": "property",
          "type": "number",
          "signature": "limit: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "offset",
          "kind": "property",
          "type": "number",
          "signature": "offset: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoHlsDescriptor",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoVideoHlsDescriptor {\n    id: string;\n    title: string;\n    isPublic: boolean;\n    masterUrl: string;\n    thumbnailUrl: string;\n    variants: RestGoVideoVariant[];\n    duration: number;\n    authentication: string;\n    masterAbsoluteUrl: string;\n    thumbnailAbsoluteUrl: string;\n}",
      "members": [
        {
          "name": "id",
          "kind": "property",
          "type": "string",
          "signature": "id: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "title",
          "kind": "property",
          "type": "string",
          "signature": "title: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "isPublic",
          "kind": "property",
          "type": "boolean",
          "signature": "isPublic: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "masterUrl",
          "kind": "property",
          "type": "string",
          "signature": "masterUrl: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "thumbnailUrl",
          "kind": "property",
          "type": "string",
          "signature": "thumbnailUrl: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "variants",
          "kind": "property",
          "type": "RestGoVideoVariant[]",
          "signature": "variants: RestGoVideoVariant[];",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "duration",
          "kind": "property",
          "type": "number",
          "signature": "duration: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "authentication",
          "kind": "property",
          "type": "string",
          "signature": "authentication: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "masterAbsoluteUrl",
          "kind": "property",
          "type": "string",
          "signature": "masterAbsoluteUrl: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "thumbnailAbsoluteUrl",
          "kind": "property",
          "type": "string",
          "signature": "thumbnailAbsoluteUrl: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoRequestOptions",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoVideoRequestOptions {\n    signal?: AbortSignal;\n}",
      "members": [
        {
          "name": "signal",
          "kind": "property",
          "type": "AbortSignal",
          "signature": "signal?: AbortSignal;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoCreateInput",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoVideoCreateInput {\n    filename: string;\n    sizeBytes: number;\n    title?: string;\n    descri?: string;\n    isPublic?: boolean;\n}",
      "members": [
        {
          "name": "filename",
          "kind": "property",
          "type": "string",
          "signature": "filename: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "sizeBytes",
          "kind": "property",
          "type": "number",
          "signature": "sizeBytes: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "title",
          "kind": "property",
          "type": "string",
          "signature": "title?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "descri",
          "kind": "property",
          "type": "string",
          "signature": "descri?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "isPublic",
          "kind": "property",
          "type": "boolean",
          "signature": "isPublic?: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoUpdate",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoVideoUpdate {\n    title: string;\n    descri: string;\n    isPublic: boolean;\n}",
      "members": [
        {
          "name": "title",
          "kind": "property",
          "type": "string",
          "signature": "title: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "descri",
          "kind": "property",
          "type": "string",
          "signature": "descri: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "isPublic",
          "kind": "property",
          "type": "boolean",
          "signature": "isPublic: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoListOptions",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [
        "RestGoVideoRequestOptions"
      ],
      "source": "interface RestGoVideoListOptions extends RestGoVideoRequestOptions {\n    limit?: number;\n    offset?: number;\n    q?: string;\n    status?: RestGoVideoStatus;\n}",
      "members": [
        {
          "name": "limit",
          "kind": "property",
          "type": "number",
          "signature": "limit?: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "offset",
          "kind": "property",
          "type": "number",
          "signature": "offset?: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "q",
          "kind": "property",
          "type": "string",
          "signature": "q?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "status",
          "kind": "property",
          "type": "RestGoVideoStatus",
          "signature": "status?: RestGoVideoStatus;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoChunkOptions",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [
        "RestGoVideoRequestOptions"
      ],
      "source": "interface RestGoVideoChunkOptions extends RestGoVideoRequestOptions {\n    offset: number;\n    checksum: string;\n    onUploadProgress?: (progress: RestGoUploadProgress) => void;\n}",
      "members": [
        {
          "name": "offset",
          "kind": "property",
          "type": "number",
          "signature": "offset: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "checksum",
          "kind": "property",
          "type": "string",
          "signature": "checksum: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onUploadProgress",
          "kind": "property",
          "type": "(progress: RestGoUploadProgress) => void",
          "signature": "onUploadProgress?: (progress: RestGoUploadProgress) => void;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoProgress",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "interface RestGoVideoProgress {\n    readonly confirmedBytes: number;\n    readonly totalBytes: number;\n    readonly percentage: number;\n    /** Transient network measurement, separate from confirmedBytes. */\n    readonly chunk: RestGoUploadProgress | null;\n}",
      "members": [
        {
          "name": "confirmedBytes",
          "kind": "property",
          "type": "number",
          "signature": "readonly confirmedBytes: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "totalBytes",
          "kind": "property",
          "type": "number",
          "signature": "readonly totalBytes: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "percentage",
          "kind": "property",
          "type": "number",
          "signature": "readonly percentage: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "chunk",
          "kind": "property",
          "type": "RestGoUploadProgress | null",
          "signature": "readonly chunk: RestGoUploadProgress | null;",
          "parameters": [],
          "description": "Transient network measurement, separate from confirmedBytes.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoResumeToken",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [],
      "source": "/** Serializable runtime checkpoint. No credential or File is included. */\ninterface RestGoVideoResumeToken {\n    readonly version: 1;\n    readonly baseUrl: string;\n    readonly ownerId: string;\n    readonly uploadId: string;\n    readonly videoId: string;\n    readonly name: string;\n    readonly sizeBytes: number;\n    readonly lastModified: number;\n    /** SHA-256 chain over consecutive 8 MiB parts of the complete file. */\n    readonly fingerprint: string;\n}",
      "members": [
        {
          "name": "version",
          "kind": "property",
          "type": "1",
          "signature": "readonly version: 1;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "baseUrl",
          "kind": "property",
          "type": "string",
          "signature": "readonly baseUrl: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "ownerId",
          "kind": "property",
          "type": "string",
          "signature": "readonly ownerId: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "uploadId",
          "kind": "property",
          "type": "string",
          "signature": "readonly uploadId: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "videoId",
          "kind": "property",
          "type": "string",
          "signature": "readonly videoId: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "name",
          "kind": "property",
          "type": "string",
          "signature": "readonly name: string;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "sizeBytes",
          "kind": "property",
          "type": "number",
          "signature": "readonly sizeBytes: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "lastModified",
          "kind": "property",
          "type": "number",
          "signature": "readonly lastModified: number;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "fingerprint",
          "kind": "property",
          "type": "string",
          "signature": "readonly fingerprint: string;",
          "parameters": [],
          "description": "SHA-256 chain over consecutive 8 MiB parts of the complete file.",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoUploadOptions",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [
        "RestGoVideoRequestOptions"
      ],
      "source": "interface RestGoVideoUploadOptions extends RestGoVideoRequestOptions {\n    title?: string;\n    descri?: string;\n    isPublic?: boolean;\n    chunkSizeBytes?: number;\n    maxRetries?: number;\n    onSession?: (session: RestGoVideoUploadSession) => void;\n    onResumeToken?: (token: RestGoVideoResumeToken) => void;\n    onProgress?: (progress: RestGoVideoProgress) => void;\n    onPhase?: (phase: 'hashing' | 'creating' | 'uploading' | 'finalizing') => void;\n}",
      "members": [
        {
          "name": "title",
          "kind": "property",
          "type": "string",
          "signature": "title?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "descri",
          "kind": "property",
          "type": "string",
          "signature": "descri?: string;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "isPublic",
          "kind": "property",
          "type": "boolean",
          "signature": "isPublic?: boolean;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "chunkSizeBytes",
          "kind": "property",
          "type": "number",
          "signature": "chunkSizeBytes?: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "maxRetries",
          "kind": "property",
          "type": "number",
          "signature": "maxRetries?: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onSession",
          "kind": "property",
          "type": "(session: RestGoVideoUploadSession) => void",
          "signature": "onSession?: (session: RestGoVideoUploadSession) => void;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onResumeToken",
          "kind": "property",
          "type": "(token: RestGoVideoResumeToken) => void",
          "signature": "onResumeToken?: (token: RestGoVideoResumeToken) => void;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onProgress",
          "kind": "property",
          "type": "(progress: RestGoVideoProgress) => void",
          "signature": "onProgress?: (progress: RestGoVideoProgress) => void;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onPhase",
          "kind": "property",
          "type": "(phase: 'hashing' | 'creating' | 'uploading' | 'finalizing') => void",
          "signature": "onPhase?: (phase: 'hashing' | 'creating' | 'uploading' | 'finalizing') => void;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoResumeOptions",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [
        "RestGoVideoUploadOptions"
      ],
      "source": "interface RestGoVideoResumeOptions extends RestGoVideoUploadOptions {\n    resumeToken: RestGoVideoResumeToken;\n}",
      "members": [
        {
          "name": "resumeToken",
          "kind": "property",
          "type": "RestGoVideoResumeToken",
          "signature": "resumeToken: RestGoVideoResumeToken;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoWaitOptions",
      "module": "@webrad/restgo-sdk",
      "kind": "interface",
      "heritage": [
        "RestGoVideoRequestOptions"
      ],
      "source": "interface RestGoVideoWaitOptions extends RestGoVideoRequestOptions {\n    intervalMs?: number;\n    timeoutMs?: number;\n    onProgress?: (details: RestGoVideoDetails) => void;\n}",
      "members": [
        {
          "name": "intervalMs",
          "kind": "property",
          "type": "number",
          "signature": "intervalMs?: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "timeoutMs",
          "kind": "property",
          "type": "number",
          "signature": "timeoutMs?: number;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "onProgress",
          "kind": "property",
          "type": "(details: RestGoVideoDetails) => void",
          "signature": "onProgress?: (details: RestGoVideoDetails) => void;",
          "parameters": [],
          "description": "",
          "writable": true,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "videoAbort",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function videoAbort(signal?: AbortSignal): void;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "videoDelay",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function videoDelay(ms: number, signal?: AbortSignal): Promise<void>;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "videoTransient",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function videoTransient(error: RestGoError): boolean;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "videoChecksum",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function videoChecksum(chunk: Blob, signal?: AbortSignal): Promise<string>;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "transferVideo",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function transferVideo(client: RestGoVideosClient, transport: RestGoTransport, file: File, options: RestGoVideoUploadOptions, resume?: RestGoVideoResumeOptions): Promise<RestGoResult<RestGoVideo>>;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "videoId",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function videoId(value: unknown): value is string;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "videoInteger",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function videoInteger(value: unknown, minimum?: number): value is number;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "videoNumber",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function videoNumber(value: unknown): value is number;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "videoSession",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function videoSession(value: unknown): value is RestGoVideoUploadSession;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "videoVariants",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function videoVariants(value: unknown): value is RestGoVideoVariant[];",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "videoRecord",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function videoRecord(value: unknown): value is RestGoVideo;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "videoDetails",
      "module": "@webrad/restgo-sdk",
      "kind": "function",
      "heritage": [],
      "source": "function videoDetails(value: unknown): value is RestGoVideoDetails;",
      "members": [],
      "typeParameters": []
    },
    {
      "name": "RestGoVideoUploadsClient",
      "module": "@webrad/restgo-sdk",
      "kind": "class",
      "heritage": [],
      "source": "class RestGoVideoUploadsClient {\n    private readonly transport;\n    constructor(transport: RestGoTransport);\n    create(input: RestGoVideoCreateInput, options?: RestGoVideoRequestOptions): Promise<RestGoResult<RestGoVideoUploadSession>>;\n    get(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<RestGoVideoUploadSession>>;\n    sendChunk(id: string, chunk: Blob, options: RestGoVideoChunkOptions): Promise<RestGoResult<RestGoVideoUploadSession>>;\n    complete(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<RestGoVideo>>;\n    cancel(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<{\n        status: 'deleting';\n    }>>;\n    private requestId;\n    private request;\n}",
      "publicSource": "class RestGoVideoUploadsClient {\n    constructor(transport: RestGoTransport);\n    create(input: RestGoVideoCreateInput, options?: RestGoVideoRequestOptions): Promise<RestGoResult<RestGoVideoUploadSession>>;\n    get(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<RestGoVideoUploadSession>>;\n    sendChunk(id: string, chunk: Blob, options: RestGoVideoChunkOptions): Promise<RestGoResult<RestGoVideoUploadSession>>;\n    complete(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<RestGoVideo>>;\n    cancel(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<{\n        status: 'deleting';\n    }>>;\n}",
      "members": [
        {
          "name": "create",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoVideoUploadSession>>",
          "signature": "create(input: RestGoVideoCreateInput, options?: RestGoVideoRequestOptions): Promise<RestGoResult<RestGoVideoUploadSession>>;",
          "parameters": [
            {
              "name": "input",
              "type": "RestGoVideoCreateInput",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoVideoRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "get",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoVideoUploadSession>>",
          "signature": "get(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<RestGoVideoUploadSession>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoVideoRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "sendChunk",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoVideoUploadSession>>",
          "signature": "sendChunk(id: string, chunk: Blob, options: RestGoVideoChunkOptions): Promise<RestGoResult<RestGoVideoUploadSession>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "chunk",
              "type": "Blob",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoVideoChunkOptions",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "complete",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoVideo>>",
          "signature": "complete(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<RestGoVideo>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoVideoRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "cancel",
          "kind": "method",
          "type": "Promise<RestGoResult<{\n        status: 'deleting';\n    }>>",
          "signature": "cancel(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<{\n    status: 'deleting';\n}>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoVideoRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    },
    {
      "name": "RestGoVideosClient",
      "module": "@webrad/restgo-sdk",
      "kind": "class",
      "heritage": [],
      "source": "class RestGoVideosClient {\n    private readonly transport;\n    readonly uploads: RestGoVideoUploadsClient;\n    constructor(transport: RestGoTransport);\n    upload(file: File, options?: RestGoVideoUploadOptions): Promise<RestGoResult<RestGoVideo>>;\n    resumeUpload(id: string, file: File, options: RestGoVideoResumeOptions): Promise<RestGoResult<RestGoVideo>>;\n    list(options?: RestGoVideoListOptions): Promise<RestGoResult<RestGoVideoList>>;\n    get(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<RestGoVideoDetails>>;\n    update(id: string, input: RestGoVideoUpdate, options?: RestGoVideoRequestOptions): Promise<RestGoResult<RestGoVideo>>;\n    remove(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<{\n        id: string;\n        status: 'deleting';\n    }>>;\n    process(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<{\n        id: string;\n        jobId: string;\n        status: 'pending';\n    }>>;\n    reprocess(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<{\n        id: string;\n        jobId: string;\n        status: 'pending';\n    }>>;\n    cancelProcessing(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<{\n        id: string;\n        state: 'cancelled';\n    }>>;\n    getHls(id: string, options?: RestGoVideoRequestOptions & {\n        public?: boolean;\n    }): Promise<RestGoResult<RestGoVideoHlsDescriptor>>;\n    getThumbnail(id: string, options?: RestGoVideoRequestOptions & {\n        public?: boolean;\n    }): Promise<RestGoResult<Blob>>;\n    /** Browser media bridge: current shared session, one 401 renewal, no cookies or redirects. */\n    getMedia(id: string, uri: string, options?: RestGoVideoRequestOptions & {\n        public?: boolean;\n        range?: string;\n        method?: 'GET' | 'HEAD';\n    }): Promise<RestGoResult<Response>>;\n    waitUntilReady(id: string, options?: RestGoVideoWaitOptions): Promise<RestGoResult<RestGoVideo>>;\n    private job;\n    private request;\n}",
      "publicSource": "class RestGoVideosClient {\n    readonly uploads: RestGoVideoUploadsClient;\n    constructor(transport: RestGoTransport);\n    upload(file: File, options?: RestGoVideoUploadOptions): Promise<RestGoResult<RestGoVideo>>;\n    resumeUpload(id: string, file: File, options: RestGoVideoResumeOptions): Promise<RestGoResult<RestGoVideo>>;\n    list(options?: RestGoVideoListOptions): Promise<RestGoResult<RestGoVideoList>>;\n    get(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<RestGoVideoDetails>>;\n    update(id: string, input: RestGoVideoUpdate, options?: RestGoVideoRequestOptions): Promise<RestGoResult<RestGoVideo>>;\n    remove(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<{\n        id: string;\n        status: 'deleting';\n    }>>;\n    process(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<{\n        id: string;\n        jobId: string;\n        status: 'pending';\n    }>>;\n    reprocess(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<{\n        id: string;\n        jobId: string;\n        status: 'pending';\n    }>>;\n    cancelProcessing(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<{\n        id: string;\n        state: 'cancelled';\n    }>>;\n    getHls(id: string, options?: RestGoVideoRequestOptions & {\n        public?: boolean;\n    }): Promise<RestGoResult<RestGoVideoHlsDescriptor>>;\n    getThumbnail(id: string, options?: RestGoVideoRequestOptions & {\n        public?: boolean;\n    }): Promise<RestGoResult<Blob>>;\n    /** Browser media bridge: current shared session, one 401 renewal, no cookies or redirects. */\n    getMedia(id: string, uri: string, options?: RestGoVideoRequestOptions & {\n        public?: boolean;\n        range?: string;\n        method?: 'GET' | 'HEAD';\n    }): Promise<RestGoResult<Response>>;\n    waitUntilReady(id: string, options?: RestGoVideoWaitOptions): Promise<RestGoResult<RestGoVideo>>;\n}",
      "members": [
        {
          "name": "uploads",
          "kind": "property",
          "type": "RestGoVideoUploadsClient",
          "signature": "readonly uploads: RestGoVideoUploadsClient;",
          "parameters": [],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": true,
          "static": false
        },
        {
          "name": "upload",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoVideo>>",
          "signature": "upload(file: File, options?: RestGoVideoUploadOptions): Promise<RestGoResult<RestGoVideo>>;",
          "parameters": [
            {
              "name": "file",
              "type": "File",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoVideoUploadOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "resumeUpload",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoVideo>>",
          "signature": "resumeUpload(id: string, file: File, options: RestGoVideoResumeOptions): Promise<RestGoResult<RestGoVideo>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "file",
              "type": "File",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoVideoResumeOptions",
              "optional": false,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "list",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoVideoList>>",
          "signature": "list(options?: RestGoVideoListOptions): Promise<RestGoResult<RestGoVideoList>>;",
          "parameters": [
            {
              "name": "options",
              "type": "RestGoVideoListOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "get",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoVideoDetails>>",
          "signature": "get(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<RestGoVideoDetails>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoVideoRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "update",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoVideo>>",
          "signature": "update(id: string, input: RestGoVideoUpdate, options?: RestGoVideoRequestOptions): Promise<RestGoResult<RestGoVideo>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "input",
              "type": "RestGoVideoUpdate",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoVideoRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "remove",
          "kind": "method",
          "type": "Promise<RestGoResult<{\n        id: string;\n        status: 'deleting';\n    }>>",
          "signature": "remove(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<{\n    id: string;\n    status: 'deleting';\n}>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoVideoRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "process",
          "kind": "method",
          "type": "Promise<RestGoResult<{\n        id: string;\n        jobId: string;\n        status: 'pending';\n    }>>",
          "signature": "process(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<{\n    id: string;\n    jobId: string;\n    status: 'pending';\n}>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoVideoRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "reprocess",
          "kind": "method",
          "type": "Promise<RestGoResult<{\n        id: string;\n        jobId: string;\n        status: 'pending';\n    }>>",
          "signature": "reprocess(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<{\n    id: string;\n    jobId: string;\n    status: 'pending';\n}>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoVideoRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "cancelProcessing",
          "kind": "method",
          "type": "Promise<RestGoResult<{\n        id: string;\n        state: 'cancelled';\n    }>>",
          "signature": "cancelProcessing(id: string, options?: RestGoVideoRequestOptions): Promise<RestGoResult<{\n    id: string;\n    state: 'cancelled';\n}>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoVideoRequestOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "getHls",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoVideoHlsDescriptor>>",
          "signature": "getHls(id: string, options?: RestGoVideoRequestOptions & {\n    public?: boolean;\n}): Promise<RestGoResult<RestGoVideoHlsDescriptor>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoVideoRequestOptions & {\n        public?: boolean;\n    }",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "getThumbnail",
          "kind": "method",
          "type": "Promise<RestGoResult<Blob>>",
          "signature": "getThumbnail(id: string, options?: RestGoVideoRequestOptions & {\n    public?: boolean;\n}): Promise<RestGoResult<Blob>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoVideoRequestOptions & {\n        public?: boolean;\n    }",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "getMedia",
          "kind": "method",
          "type": "Promise<RestGoResult<Response>>",
          "signature": "getMedia(id: string, uri: string, options?: RestGoVideoRequestOptions & {\n    public?: boolean;\n    range?: string;\n    method?: 'GET' | 'HEAD';\n}): Promise<RestGoResult<Response>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "uri",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoVideoRequestOptions & {\n        public?: boolean;\n        range?: string;\n        method?: 'GET' | 'HEAD';\n    }",
              "optional": true,
              "rest": false
            }
          ],
          "description": "Browser media bridge: current shared session, one 401 renewal, no cookies or redirects.",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        },
        {
          "name": "waitUntilReady",
          "kind": "method",
          "type": "Promise<RestGoResult<RestGoVideo>>",
          "signature": "waitUntilReady(id: string, options?: RestGoVideoWaitOptions): Promise<RestGoResult<RestGoVideo>>;",
          "parameters": [
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "rest": false
            },
            {
              "name": "options",
              "type": "RestGoVideoWaitOptions",
              "optional": true,
              "rest": false
            }
          ],
          "description": "",
          "writable": false,
          "readable": true,
          "readonly": false,
          "static": false
        }
      ],
      "typeParameters": []
    }
  ],
  "language": "en",
  "guides": {
    "page": "# Page\n\nPage, browser tab title, navigation, and lifecycle events.\n\n```ts\n// OnCreate body.\nthis.browserTitle = 'Customers';\n// In OnShow, load the data needed each time the page is shown.\n// To navigate: Navigate('PageCustomers');\n// To close and remove the instance: this.close({ remove: true });\n```\n\n- **OnCreate**: instance initialization. **OnShow**: update on each display. **OnHide**: leaving the page. **OnResize**: size change.\n- Configure **Browser title** in the Inspector. Required index and 404 pages use /index and /404; other pages use their lowercase name as the automatic path.\n- Use Navigate('PageName') to navigate and close({ remove: true }) to dispose of the instance.\n- Configure typed destination parameters in **Navigation → Parameters → Configure Parameters**. Read them through params or this.params; OnParametersChanged handles changes on the current page.\n- **OnLogin**, **OnLogout**, and **OnUnauthenticated** depend on RestGO integration. Use OnUnauthenticated to redirect protected pages; a network failure does not confirm logout.\n",
    "panel": "# Panel\n\nContainer with a background, borders, image, and progress outline.\n\n```ts\nPanel1.caption = 'Processing';\nPanel1.backgroundImage = 'assets/imported/background.jpg';\nPanel1.backgroundSize = 'cover';\nPanel1.backgroundPosition = 'center';\nPanel1.backgroundRepeat = 'no-repeat';\nPanel1.progressEnabled = true;\nPanel1.progressValue = 42;\nPanel1.show();\n```\n\n- Drag children into the Panel and choose a layout in the Inspector.\n- caption identifies the container for accessibility. Use a Label to display a title.\n- Background image: backgroundImage, backgroundSize, backgroundPosition, and backgroundRepeat.\n- The progress outline appears with progressEnabled = true and progressValue between 0 and 100, excluding the endpoints.\n- To overlay content, use placement = 'floating' and configure anchors.\n",
    "group": "# Group\n\nTransparent container for arranging components and layout.\n\n```ts\nGroup1.margin = 16;\nGroup1.marginTop = 8;\nGroup1.alignSelf = 'stretch';\nGroup1.visible = true;\nGroup1.collapseWhenHidden = true;\nGroup1.show();\n```\n\n- Group components that should share layout, dimensions, or visibility.\n- Choose Fixed, Align to parent, Row, or Column to arrange children.\n- collapseWhenHidden removes occupied space when visible = false.\n",
    "reusable-element": "# Reusable Element\n\nA reusable element instance, in the normal flow or floating.\n\n```ts\nReusable1.placement = 'floating';\nReusable1.floatingHorizontalAnchor = 'right';\nReusable1.floatingVerticalAnchor = 'bottom';\nReusable1.floatingZIndex = 100;\nReusable1.show();\n```\n\n- Create the definition in Reusable elements and select it in the instance’s Inspector.\n- Link events and write logic in the definition’s TypeScript file.\n- Use placement to choose normal flow or a floating layer; configure anchors and floatingZIndex as needed.\n- Children belong to the definition’s scope and do not automatically become public host properties.\n",
    "label": "# Label\n\nText with automatic sizing.\n\n```ts\nLabel1.caption = 'Total: $150.00';\nLabel1.autoSize = true;\nLabel1.color = '#58b9f5';\nLabel1.visible = true;\n```\n\n- caption and text access the same content.\n- autoSize fits the dimensions to the text. Disable it for dimensions controlled by layout.\n- Configure typography and color in the Inspector or style editor.\n",
    "html": "# HTML\n\nDisplay HTML and CSS or embed an external HTTPS document.\n\n```ts\nHtml1.title = 'Welcome information';\nHtml1.html = '<style>body { margin: 0; font-family: sans-serif; } article { padding: 16px; }</style>'\n  + '<article><h2>Welcome</h2><p>Content with its own styling.</p></article>';\nHtml1.aspectRatio = '16:9';\nHtml1.onLoad = (sender) => { console.log(sender.title); };\n// Html1.clear();\n```\n\n## Configure HTML\n\n1. Drag **HTML** from **Builder → Standard** onto the page or reusable component.\n2. In **Content → HTML**, enter a fragment or a complete HTML document. The editor preserves line breaks and indentation.\n3. Set **Accessibility → Title** to describe the embedded content.\n4. Configure dimensions and **Size & position → Aspect ratio**. A fixed ratio derives height from width.\n\nHTML elements are edited inside the markup, rather than as Designer child components. Outer styles apply to the frame. Declare fonts, colors, spacing, and CSS inside the embedded document.\n\n## Inline content and external embeds\n\nInline markup supports HTML and CSS. Its sandbox disables scripts, inline JavaScript handlers, form submission, popups, and top navigation. Relative URLs follow the host URL; asset references inside the string are not automatically rewritten or included in exports.\n\nFor an external player, paste a single cross-origin HTTPS iframe into **HTML**, with only optional surrounding whitespace or comments. WebRAD uses it as the component frame, preserving the provider's origin and permitted script/media behavior. Configure the component's dimensions or aspect ratio in the Inspector. Mixed markup continues to use the inline sandbox.\n\nExternal content requires network access and the provider's embedding permission. Serve the exported application over HTTP(S). Use **F9 Preview** to interact with it; Designer frames remain inert.\n\n## Code and loading\n\n- html reads or replaces the content. Assigning the same string preserves the current document.\n- title changes the accessible name; clear() empties the content.\n- **OnLoad** runs when the embedded document finishes loading. Events inside that document remain inside it.\n- Runtime changes affect the current instance; edit the Inspector to save content in the project.\n",
    "edit": "# Edit\n\nSingle-line input with a type, value, and editing events.\n\n```ts\nEdit1.inputType = 'email';\nEdit1.placeholder = 'you@example.com';\nEdit1.readOnly = false;\nEdit1.value = 'ana@example.com';\nEdit1.onInput = (sender) => {\n  Message(sender.value.trim());\n};\nEdit1.focus({ preventScroll: true });\n// Edit1.clear();\n```\n\n- inputType accepts text, password, email, number, search, tel, and url.\n- **OnInput** tracks typing; **OnChange** tracks confirmation by the browser.\n- Use readOnly to prevent editing, clear() to clear, and focus() to focus.\n\n## Input masks\n\n1. Select the Edit and open **Input mask** in the Inspector. Turn on **Enable mask** and enter a pattern in **Mask**.\n2. Use 0 for a digit, a for a Unicode letter, * for a letter or number, and # for any character. Other characters are literals. Escape a token or grammar character with a backslash to make it literal.\n3. Use [optional] groups, {count} or {min,max} repetitions, and | alternatives. For example, (00) 0000[0]-0000 accepts a phone number with an optional extra digit.\n4. Set **Letter case** to none, upper, or lower. **Custom tokens** accepts a JSON object of single-character rules, for example {\"H\":{\"pattern\":\"[0-9A-Fa-f]\",\"transform\":\"upper\"}}. Custom rules can override built-in tokens.\n\nvalue contains the formatted text, while rawValue contains accepted characters without mask literals. Assign rawValue when the input has no literals. maskComplete indicates whether required positions are filled; maskError reports an invalid pattern. Incomplete values remain editable, so check maskComplete before submitting. Invalid patterns disable masking until corrected. With a mask enabled, number, email, and url inputs use a text element to allow literals and editing.\n\nRuntime changes affect the current instance; use the Inspector to save the configuration in the project.\n",
    "date": "# Date\n\nLocal date or date and time input with a calendar, display mask, and validation.\n\n```ts\nDate1.mode = 'date';\nDate1.dateFormat = 'dd/MM/yyyy';\nDate1.required = true;\nDate1.min = '2026-01-01';\nDate1.max = '2026-12-31';\nDate1.value = '2026-11-04';\nDate1.onChange = (sender) => {\n  if (sender.valid) console.log(sender.value, sender.text);\n};\n```\n\n## Configure a date field\n\n1. Add **Date** from the palette and select it in the Designer.\n2. In the Inspector, choose **Mode**: date or datetime. Set **Date format** to dd/MM/yyyy, MM/dd/yyyy, or yyyy-MM-dd; enable **Show seconds** for datetime when needed.\n3. Set the accessible label, optional placeholder, required and read-only settings, and whether to show the calendar. Configure value, min, and max using local ISO values; the limits are inclusive.\n4. Link **OnInput** for typing and **OnChange** for a committed change in Interaction. The calendar can also be opened with Alt+Down or showPicker().\n\n## Values and validation\n\nThe displayed mask follows the selected format and mode. value uses YYYY-MM-DD or local YYYY-MM-DDTHH:mm[:ss], independent of the display format. These are local calendar fields with no time zone or UTC conversion. text contains the displayed draft, including incomplete or impossible dates; value is empty for such drafts. date returns a local Date at the start of the day, while datetime includes the time; both return null for invalid or incomplete input.\n\nUse valid or checkValidity() before processing input and reportValidity() to show the browser's validation message. required, min, and max participate in validation. clear() clears the field and setNow() uses the current local date and time. Runtime assignments affect the current instance; configure the Inspector to save project defaults.\n",
    "text-area": "# Text Area\n\nMultiline text input.\n\n```ts\nTextArea1.rows = 6;\nTextArea1.placeholder = 'Describe your request';\nTextArea1.readOnly = false;\nTextArea1.value = 'First line\\nSecond line';\nTextArea1.onChange = (sender) => { Message(sender.value); };\n// TextArea1.clear();\n```\n\n- Configure rows, placeholder, readOnly, and spellCheck.\n- **OnInput** tracks typing; **OnChange** tracks confirmation by the browser.\n- Use value to read or write text and clear() to clear it.\n",
    "button": "# Button\n\nButton with a caption, icon, and click event.\n\n```ts\nButton1.caption = 'Save';\nButton1.enabled = true;\nButton1.onClick = async (sender) => {\n  sender.enabled = false;\n  try { Message('Saved'); }\n  finally { sender.enabled = true; }\n};\n// Button1.click();\n```\n\n- Configure caption and icon in the Inspector.\n- Link the action in **Interaction → OnClick**. Use enabled to prevent further activation during a task.\n- click() activates the button from code. For a button with only a Lucide icon, use [Icon](/docs/icon).\n",
    "check-box": "# Check Box\n\nBoolean selection with a caption and enabled state.\n\n```ts\nCheckBox1.caption = 'I accept the terms';\nCheckBox1.checked = false;\nCheckBox1.enabled = true;\nCheckBox1.onChange = (sender) => {\n  Message(sender.checked ? 'Accepted' : 'Not accepted');\n};\n```\n\n- caption describes the option; checked stores the boolean state.\n- Read sender.checked in OnChange.\n- enabled = false prevents user editing.\n",
    "toggle": "# Toggle\n\nBoolean switch without a caption.\n\n```ts\nToggle1.checked = true;\nToggle1.onChange = (sender) => {\n  Message(sender.checked ? 'Enabled' : 'Disabled');\n};\n// Toggle1.click();\n```\n\n- checked stores the state; OnChange reports a user change.\n- click() simulates activation. enabled = false prevents interaction.\n- Add a Label beside it when visible text is needed.\n",
    "icon": "# Icon\n\nLucide icon, displayed statically or as a button without a caption.\n\n```ts\nIcon1.icon = 'settings';\nIcon1.mode = 'button';\nIcon1.accessibleLabel = 'Settings';\nIcon1.strokeWidth = 2;\nIcon1.onClick = () => { Message('Open settings'); };\n// Icon1.click();\n```\n\n- Choose the icon in the Inspector’s Lucide picker; the name is also typed in Monaco.\n- **Mode = icon** displays the image. **Mode = button** supports clicks, focus, Enter, and Space.\n- Configure accessibleLabel, strokeWidth, dimensions, and color. The component does not display a caption.\n- Link OnClick in Interaction to execute the action.\n",
    "menu": "# Menu\n\nNavigation with submenus, search, and a drawer for small screens.\n\n```ts\nMenu1.items = [\n  { id: 'home', label: 'Home', icon: 'house' },\n  { id: 'records', label: 'Records', icon: 'folder', children: [\n    { id: 'customers', label: 'Customers', icon: 'users' },\n  ] },\n];\nMenu1.selectedItemId = 'home';\nMenu1.expandItem('records');\nMenu1.updateItem('customers', { badge: '3' });\n```\n\n- Open the configurator from the Menu in the Designer. Arrange items, submenus, icons, badges, brand, and user.\n- Choose vertical or horizontal orientation. The menu floats; anchors and margins define its position.\n- Below mobileBreakpoint, the menu uses a drawer. Configure drawerWidth, drawerSide, and closeOnSelect.\n- page navigates to a page ID; href opens a link. Items with children and no destination expand their submenu.\n- OnItemClick receives item, itemId, and path. OnItemToggle receives itemId and expanded; use it for submenus without an action.\n- searchable enables search. searchMode = 'filter' filters items; 'event' retains items and emits OnSearch with detail.text.\n- collapsed controls the compact version; open(), close(), and toggle() control opening. themeToggle displays the theme control.\n",
    "login": "# Login\n\nRestGo email/password login, registration, and password recovery in a Panel or Popup.\n\n```ts\n// Enable and configure the project RestGo connection first.\nLogin1.email = 'user@example.com';\nLogin1.remember = false;\nLogin1.showLogin();\nLogin1.controls.email.focus();\n// Login1.showRegistration();\n// Login1.showRecovery();\n// Login1.close();\n```\n\n## Configure Login\n\n1. Enable **RestGo integration** and configure **Connection** for the project.\n2. Drag **Login** from **Authentication** onto a page or reusable component.\n3. Double-click it or choose **Login configuration → Configure Login** in the Inspector.\n4. In **Behavior**, choose **Panel** or **Popup**, the initial form, registration, Remember me, password visibility, and closing behavior.\n5. In **Fields** and **Texts**, edit labels, placeholders, and feedback. English and Brazilian Portuguese presets replace the draft text.\n6. In **Styles**, assign existing compatible project Styles to the internal controls. Use the ordinary Styles workspace to edit their appearance.\n7. Configure **Recovery**, review Desktop/Mobile and form previews, and save the modal.\n\nThe internal fields and buttons are managed by the modal. Each placement keeps its own form state. Panel follows ordinary container layout; Popup opens a modal dialog. Disable **Open Popup when the component is shown** to open it explicitly with showLogin(), showRegistration(), or showRecovery().\n\n## Authentication and registration\n\nPublic registration must be enabled on the RestGo server. Activation, password policy, and permission to log in follow that server's settings. By default, successful registration returns to sign-in with the email retained. **Sign in after registration** requests login after account creation.\n\nRemember me requests the corresponding session lifetime. Browser persistence follows the project's Connection settings. **OnLogin** also reports server-validated restored sessions. Use **Interaction → OnLogin** to navigate after authentication.\n\n## Password recovery\n\nEnable recovery to show **Forgot your password?**. The email form requests a reset link. Its success message does not confirm that an account exists or that email was delivered.\n\nThe email returns to the application or the configured HTTP(S) return URL. That destination needs a Login with recovery enabled. With automatic links enabled, the component opens the new-password form. A successful reset returns to sign-in; it does not start a session. Expired links and server errors appear in the form.\n\n## Runtime behavior\n\n- email and remember prefill the form; busy and open are read-only state.\n- showLogin(), showRegistration(), and showRecovery() select and open a form. submit() sends the current form; close() dismisses it.\n- controls exposes typed runtime controls. Obtain these references again after changing the view or configuration.\n- Events contain user/status data without passwords or tokens. **OnRegister** confirms account creation; **OnLogin** confirms authentication.\n- Changing configuration in code affects that instance. Save in the modal to persist project changes.\n",
    "progress-bar": "# Progress Bar\n\nLinear or circular progress with a range, value, and calculated percentage.\n\n```ts\nProgressBar1.setRange(0, 200);\nProgressBar1.value = 50;\nProgressBar1.showValue = true;\nProgressBar1.increment(10);\nMessage(ProgressBar1.percentage);\n// ProgressBar1.reset();\n```\n\n- format accepts bars (bar), dunnet (ring), and circus (circle).\n- setRange(min, max) sets the range; value sets progress. percentage is calculated.\n- showValue displays the percentage; increment() advances and reset() returns to the minimum.\n",
    "combo-box": "# Combo Box\n\nSingle selection with static items or an API response.\n\n```ts\nComboBox1.items = [\n  { value: 'sp', label: 'São Paulo' },\n  { value: 'rj', label: 'Rio de Janeiro' },\n];\nComboBox1.value = 'sp';\nComboBox1.onChange = (sender) => { Message(sender.value); };\n// To use an API, configure the source in the Inspector.\n```\n\n- Items in code use value, label, and optional disabled; a string list uses its text as the value.\n- For remote data, configure API Client, operation, list, and fields in the source editor.\n- Read value or selectedIndex in OnChange.\n",
    "image": "# Image\n\nImage, alternative text, fit, and placeholder.\n\n```ts\nImage1.placeholder = 'user';\nImage1.alt = 'Profile photo';\nImage1.objectFit = 'cover';\nImage1.src = 'assets/imported/profile.png';\nImage1.bindEvent('OnLoad', () => { console.log('Image loaded'); });\nImage1.bindEvent('OnError', () => { Image1.src = ''; });\n```\n\n- Import the image in Assets and use its path in src.\n- objectFit accepts contain, cover, fill, none, and scale-down.\n- Set alt to describe the image. placeholder accepts image or user when src is empty or fails.\n- OnLoad and OnError track loading.\n",
    "list-box": "# List Box\n\nSingle or multiple selection list with values independent of the display text.\n\n```ts\nListBox1.items = [\n  { value: 'read', label: 'Read' },\n  { value: 'write', label: 'Write' },\n];\nListBox1.multiple = true;\nListBox1.selectedValues = ['read', 'write'];\nListBox1.onChange = (sender) => { Message(sender.selectedValues.join(', ')); };\n```\n\n- Each item uses value and label; strings are also accepted.\n- multiple = false uses value or selectedIndex. multiple = true uses selectedValues.\n- Read the selection in OnChange.\n",
    "data-grid": "# Data Grid\n\nAPI-bound table with five cell types.\n\n```ts\nDataGrid1.configuration = {\n  ...DataGrid1.configuration,\n  showHeader: true,\n  stickyHeader: true,\n  stripedRows: true,\n  wrapText: true,\n  emptyMessage: 'No records',\n};\n// Configure the source and columns in the editor.\nawait ApiClient1.execute('Load');\n```\n\n- Open the grid editor and select API Client, operation, and response list.\n- listPath and fieldPath use JSON Pointer, such as /data and /name.\n- Cells accept text, image, button, checkbox, or toggle; configure width, alignment, and row height.\n- OnCellClick provides rowIndex, columnIndex, column, value, and getValue() to read another row field.\n- Headers and footers can be sticky. Configure emptyMessage for empty lists.\n",
    "repeating-group": "# Repeating Group\n\nRepeats a component template for each API item.\n\n```ts\nRepeatingGroup1.repeatingGroupConfig = {\n  ...RepeatingGroup1.repeatingGroupConfig,\n  gap: 12,\n  rowHeightMode: 'dynamic',\n  emptyMessage: 'No items',\n};\nawait ApiClient1.execute('Load');\nMessage(RepeatingGroup1.rowCount);\n```\n\n- Configure the API operation and listPath in the editor; children form a template for each item.\n- On each child, use **Current row** in the Inspector to bind a property to a field.\n- Child events receive CurrentRow typed by the operation schema. Use this context to act on the correct item.\n- Configure gap and fixed or dynamic height. rowCount and getRow(index) let you inspect mounted rows.\n",
    "popup": "# Popup\n\nModal or non-modal browser dialog.\n\n```ts\nPopup1.modal = true;\nPopup1.show();\n// In the confirmation button event:\n// Popup1.close('confirmed');\n// In OnClose, read Popup1.returnValue.\n```\n\n- Add dialog components in the Designer tray.\n- modal = true blocks the page when opened with show(); false allows interaction outside the dialog.\n- close('result') closes with a return value; hide() only closes.\n- **OnShow** tracks opening; **OnHide** and **OnClose** track closing; **OnCancel** tracks Escape in a modal dialog.\n",
    "api-client": "# API Client\n\nHTTP requests with parameters, authentication, and typed responses.\n\n```ts\n// Configure a Load operation with the id parameter.\nconst request = ApiClient1.RequestByName('Load');\nrequest.parameter.id = 42;\ntry {\n  const result = await request.execute();\n  console.log(result);\n} catch (error) {\n  Message(error instanceof Error ? error.message : String(error));\n}\n// The generated typed accessor also supports ApiClient1.Load.execute().\n```\n\n- Open the editor and create operations with a name, method, endpoint, parameters, and response schema.\n- Use the generated accessor, such as ApiClient1.Load.parameter.id and ApiClient1.Load.execute(), or RequestByName('Load').\n- Placeholders such as <id> in paths or bodies use parameter values. Query, Headers, and Body configure the remaining inputs.\n- **Import from RestGo** imports published APIs. **Refresh** synchronizes imported clients while preserving their IDs and names.\n- Choose **Custom API**, **RestGo JWT Authentication**, **RestGO API Token**, or **RestGO Public** to match the API. Each client uses one authentication mode.\n- To test JWT in the editor, use Development login in RestGo integration → Connection or enter Test JWT.\n- get/post/put/patch/delete support direct calls. status, error, Response, and events track the result.\n\n## Authorization for a Custom API\n\n1. Open the API Client editor, select a request, and open **Authorization**.\n2. In **Apply to**, choose **Client defaults** to configure a shared default or **This request** to override it. A request can choose **Inherit from client**; the client can choose **Use manual headers**.\n3. Select **No auth**, **Basic Auth**, **Bearer Token**, or **API Key**. For Basic enter username and password; for Bearer enter the token without the Bearer prefix or whitespace. For API Key specify its name, value, and Header or Query parameter destination. Save the configuration.\n4. Execute the configured operation from an event, for example ApiClient1.Load.execute(), or use ApiClient1.execute('Load'). A per-call authorization option overrides the request setting, which overrides the client default. With manual headers and no explicit authorization, existing Authorization headers are retained. Explicit authorization replaces the Authorization header; **No auth** removes it. An API key replaces the configured header or query parameter of the same name.\n\nCredentials saved in the editor are stored in the project and included in generated browser applications. Use credentials intended for client-side use; masking a field in the editor does not make it secret. Code can assign ApiClient1.Connection.Authorization for the client, ApiClient1.Request.Authorization for the active request, or pass an authorization option per call. RestGo connection modes manage authorization automatically and do not accept these Custom API authorization settings. Browser CORS and server policies still apply.\n",
    "timer": "# Timer\n\nNonvisual timer with single or repeated execution.\n\n```ts\nTimer1.time = 1000;\nTimer1.loop = true;\nTimer1.onTimer = (sender) => {\n  Message(sender.tickCount);\n  if (sender.tickCount >= 5) sender.Stop();\n};\nTimer1.Start();\n// Timer1.Stop();\n// Timer1.Restart();\n```\n\n- Configure **Time (ms)**, **Loop**, and **Enabled** in the nonvisual component tray.\n- time accepts an integer between 1 and 2147483647 ms. Changing time while running restarts the current interval.\n- Start() starts and resets tickCount; called while running, it preserves the count. Stop() stops; Restart() stops and starts again.\n- loop = false runs once. OnTimer receives detail.tick; OnStart and OnStop track state.\n- Each page or reusable component has its own instance; disposal cancels the timer.\n",
    "payments": "# Payments\n\nOpen a Stripe or Asaas payment or subscription checkout with one call.\n\n```ts\n// In the payment button's async OnClick handler.\n// Edit1 contains the purchase source key from your application backend.\nawait Payments1.Pay(Edit1.value);\n```\n\n## Configure once\n\n1. In RestGo, configure and activate a Stripe or Asaas gateway, its payment source, credentials, webhooks, and HTTP(S) success/cancel URLs. The trusted application backend creates the purchase.\n2. In WebRAD, enable **RestGo integration → Connection → Application SDK** and configure the instance URL. The customer must sign in through Authentication; the component uses that shared session.\n3. Add **Payments** from **Nonvisual**. Select **Payments1** and set **Gateway slug** to the configured gateway's slug.\n4. Add an **Edit** named **Edit1** and a **Button** named **Button1**. Open the button's **Interaction** tab and double-click **OnClick**. Paste the quick-start statement into the generated method body.\n\nEdit1 contains a purchase **source key**, such as 123, kept as a string. Price, currency, ownership and recurrence come from the configured RestGo source. The input is not a provider payment ID or an amount. Keys returned as PostgreSQL int8 values must stay strings to preserve precision.\n\nBoth Payments1 and this.Payments1 refer to the concrete typed component in the page or reusable. Type Payments1. and use **Ctrl+Space** for Monaco completion. Public method names are case-sensitive.\n\n## Pay with one call\n\nTo pay a known purchase from an async button handler:\n\n```ts\nawait Payments1.Pay('123');\n```\n\nTo use the purchase key entered in Edit1:\n\n```ts\nawait this.Payments1.Pay(this.Edit1.value);\n```\n\nPay restores an existing customer session, recovers or prepares the attempt, preserves its idempotency key, creates the checkout when necessary, waits for its URL, saves the operation ID and opens the hosted provider checkout. The customer completes payment there. Normal button code needs no manual PrepareCheckout, WaitForCheckout, OpenCheckout, checkpoint storage or StopWatching calls.\n\n## Start a subscription\n\nUse this in the subscription button's async OnClick handler:\n\n```ts\nawait Payments1.Subscribe(Edit1.value);\n```\n\nThe purchase source must contain the configured subscription product and recurrence. To use the Inspector's **Mode** setting instead of choosing a method explicitly:\n\n```ts\nawait Payments1.Checkout(Edit1.value);\n```\n\nPay always selects payment, Subscribe selects subscription, and Checkout uses the configured mode. These calls return a RestGoPaymentOperation. If a saved operation is already confirmed, they return it without creating another charge or reopening checkout. Matching concurrent actions share one workflow; a conflicting action reports busy.\n\n## Confirm the payment\n\nSelect Payments1, open **Interaction**, and double-click **OnPaymentSucceeded**, the default event. In the generated handler body:\n\n```ts\nimport type { WebPayments, WebPaymentsCheckoutEventDetail } from '@webrad/runtime';\n// Keep the signature generated by Interaction; copy the body into that method.\nclass Example {\n  public async Payments1PaymentSucceeded(\n    sender: WebPayments,\n    event: CustomEvent<WebPaymentsCheckoutEventDetail>,\n  ): Promise<void> {\n    Message('Payment confirmed: ' + event.detail.operation.id);\n  }\n}\n```\n\nThis body belongs to the generated Payments event handler, whose event is a CustomEvent<WebPaymentsCheckoutEventDetail>. Use **OnSubscriptionActivated** for subscription confirmation and **OnSubscriptionCanceled** for cancellation or its scheduling. The full typed signatures appear in Events below.\n\nOpening checkout is not financial confirmation. checkoutState describes checkout preparation, status describes financial state, and synchronizationPending / synchronizationError describe updating the application's purchase source. A confirmed payment may still have a pending source update. Backend authorization and fulfillment remain authoritative.\n\nOn a return page or in a refresh action, code can wait for confirmation:\n\n```ts\nconst operation = await Payments1.WaitForConfirmation();\nMessage(operation.status);\n```\n\nTo also wait for the purchase's source update:\n\n```ts\nconst operation = await Payments1.WaitForConfirmation({\n  waitForSynchronization: true,\n});\nMessage(operation.status);\n```\n\nWaitForConfirmation understands payment success and subscription activation. A timeout is local and never changes the financial state or creates another charge. The backend continues processing after a local wait stops.\n\n## Return, refresh and recovery\n\nAutomatic resume restores this instance's saved attempt after session restoration, queries an already known operation ID and observes pending changes. It never creates a charge or redirects back to checkout. Automatic lookup uses the component's runtime ID, including reusable placement identity.\n\nOn another return page, or to recover explicitly:\n\n```ts\nconst operation = await Payments1.Resume();\nif (operation) Message(operation.status);\n```\n\nResume can use the selected attempt or the most recent saved attempt for the API, customer and gateway. To choose a purchase:\n\n```ts\nconst operation = await Payments1.Resume(Edit1.value);\nif (operation) Message(operation.status);\n```\n\nFor a subscription saved under a different Inspector mode:\n\n```ts\nconst operation = await Payments1.Resume(Edit1.value, { mode: 'subscription' });\nif (operation) Message(operation.status);\n```\n\nExplicit Resume can recover a lost creation response by replaying the original saved key and body. It never opens checkout. Refresh only queries a known operation and does not create one:\n\n```ts\nconst operation = await Payments1.Refresh();\nif (operation) Message(operation.status);\n```\n\nThe gateway uses fixed return URLs configured in RestGo. A redirect or success flag in the URL is not payment proof. Preview/F9 has changing loopback addresses; the configured return URL does not automatically return into that Preview. Hosted provider checkout is subject to browser/frame restrictions. Native custom-scheme return handling requires a separate platform/server contract.\n\n## History and cancellation\n\nLoad the first page from a history action:\n\n```ts\nconst items = await Payments1.LoadHistory();\nMessage(items.length);\n```\n\nLoad the next page from a separate Load more action:\n\n```ts\nconst items = await Payments1.LoadMore();\nMessage(items.length);\n```\n\nLoadHistory replaces history with one page. LoadMore appends and deduplicates records, returns the accumulated readonly array and does nothing on the final page. history, nextCursor, hasMore and **OnHistoryChange** support the application's list UI. Pages contain up to 50 operations ordered by UUID and omit checkout URLs. GetOperation(id) selects a history operation without inventing a purchase association; cross-device purchase lookup still requires an application-owned durable link.\n\nIn the cancel button's handler, after the customer chooses cancellation:\n\n```ts\nconst operation = await Payments1.CancelSubscription();\nMessage(operation.provider.cancelAtPeriodEnd\n  ? 'Cancellation scheduled for the paid period.'\n  : operation.status);\n```\n\nThe selected or resumed subscription supplies the operation ID automatically. Stripe schedules cancellation with the provider; Asaas removes recurrence while preserving the paid period in the normalized result. Inspect provider.periodEnd and provider.cancelAtPeriodEnd. Cancellation does not request a refund. Refresh, history and cancellation coordinate background observation internally.\n\n## Defaults and UI state\n\n**Auto resume**, **Auto watch** and **Persist attempts** default to true. **Poll interval (ms)** defaults to 2000 and **Poll timeout (ms)** to 60000. The timeout bounds local workflow/observation, not the purchase's financial lifetime. **Enabled** never initiates a charge by itself.\n\nUse state, busy and watching for activity; status and checkoutState for the selected operation; canOpenCheckout and canCancelSubscription for actions; and synchronizationPending / synchronizationError for source updates. **OnStateChange** and **OnHistoryChange** provide typed changes. Each page/reusable placement owns its runtime state and shares the project's RestGO customer session.\n\nDefault persistence stores recovery data before POST and before navigation, scoped to API, customer, gateway, source and mode. Browser storage and Web Locks, or a runtime-only custom storage adapter, preserve the same purchase key across participating instances/tabs. Tokens, provider secrets and checkout URLs are excluded. Browser records are not cross-device storage or Project Model configuration. Unavailable storage/locking or corrupt recovery data raises an error instead of silently generating another key. Disabling Persist attempts is an explicit advanced choice that makes the application responsible for durable recovery.\n\nClear, StopWatching, abort and disposal affect local state/work; they do not cancel the server transaction. Clear retains durable attempts. Logout, account changes and replacing the RestGO client cancel obsolete work and prevent late checkout opening.\n\n## Handle errors in one place\n\nUse try/catch in the click handler, or bind **OnError** in Interaction. Choose one place to display a message:\n\n```ts\ntry {\n  await Payments1.Pay(Edit1.value);\n} catch (error: unknown) {\n  Message(error instanceof Error ? error.message : String(error));\n}\n```\n\nHTTP failures retain RestGoError status, code and message; local workflow failures use WebPaymentsError.kind. An uncertain checkout keeps its original recovery data and requires observation/support. Neither a network failure nor an unknown financial status starts another charge automatically.\n\n## Advanced control\n\nPay, Subscribe and Checkout open checkout by default. An authored custom UI can opt out of navigation:\n\n```ts\nconst operation = await Payments1.Pay(Edit1.value, { openCheckout: false });\nMessage(operation.checkoutState);\n```\n\nThe existing lower-level APIs remain available. PrepareCheckout is synchronous, CreateCheckout sends a prepared attempt without opening checkout, and WaitForCheckout / OpenCheckout provide manual control. ExportCheckpoint / RestoreCheckpoint support custom recovery integration. Prefer the one-call actions for the standard flow.\n\nFor direct transport-level calls, see the [RestGO SDK payments API](/docs/restgo-sdk#payments). It uses the customer's Authentication JWT exclusively. Administrative and provider credentials stay in RestGo. The documentation's editable examples do not execute payments on this website.\n",
    "file-upload": "# File Upload\n\nSelect a file and upload it to RestGO Storage.\n\n```ts\n// Run from a user click.\nconst selection = await FileUpload1.OpenFile();\nif (!selection) return;\ntry {\n  const uploaded = await FileUpload1.SendToRestGO({ isPublic: false });\n  Message(uploaded.id);\n} catch (error) {\n  Message(error instanceof Error ? error.message : String(error));\n}\n```\n\n- Configure accept and isPublic in the Inspector.\n- Call OpenFile() from a click; cancellation returns null. selectedFile provides the chosen File.\n- SendToRestGO() requires configured integration and a user session. Clear() clears the selection.\n- OnChange receives the selection; OnProgress receives progress; OnSuccess, OnError, and OnComplete track the upload.\n- Private files require authenticated downloads; generating a URL does not change isPublic.\n",
    "video-upload": "# Video Upload\n\nUpload videos to RestGO with progress and resume support.\n\n```ts\nconst selection = await VideoUpload1.OpenFile();\nif (!selection) return;\nVideoUpload1.title = 'Presentation';\nVideoUpload1.descri = 'Product video';\nVideoUpload1.isPublic = false;\ntry {\n  const video = await VideoUpload1.SendToRestGO();\n  Message(video.id);\n  await VideoUpload1.WaitUntilReady({ timeoutMs: 600_000 });\n} catch (error) {\n  Message(error instanceof Error ? error.message : String(error));\n}\n// Pause(), Resume(), CancelUpload(), and Clear() control the upload.\n```\n\n- Configure accept, maxFileSizeMB, and maxDurationSeconds; null disables optional limits.\n- OpenFile() selects; SendToRestGO() uploads in chunks. percentage tracks uploading and processingProgress tracks conversion.\n- Pause() preserves the checkpoint. Resume() uses the same file; after reloading, select it again and pass the saved resumeToken.\n- CancelUpload() cancels the remote session. Clear() clears local state.\n- OnProgress, OnStateChange, OnUploadComplete, OnProcessingProgress, OnReady, OnError, and OnComplete track the stages.\n",
    "video-player": "# Video Player\n\nPlay RestGO videos and HLS/DASH manifests.\n\n```ts\nVideoPlayer1.aspectRatio = '16:9';\nVideoPlayer1.controls = true;\nVideoPlayer1.autoplay = false;\nVideoPlayer1.volume = 0.8;\ntry {\n  await VideoPlayer1.LoadRestGo('VIDEO-ID', { public: false });\n  await VideoPlayer1.Play();\n} catch (error) {\n  Message(error instanceof Error ? error.message : String(error));\n}\n// Alternative: LoadUrl('https://cdn.example.com/master.m3u8', { format: 'hls' }).\n```\n\n- Configure the source in the Inspector and confirm **Apply source**, or call LoadRestGo() or LoadUrl().\n- Use Play(), Pause(), Stop(), and Seek(seconds). SetQuality('auto') enables automatic selection; availableQualities lists the options.\n- Configure volume, muted, playbackRate, controls, loop, and aspectRatio for your interface.\n- Private RestGO video uses the current session. Video page URLs do not replace HLS/DASH manifests.\n- Unload() releases the source. OnLoaded, OnPlay, OnPause, OnEnded, and OnError track playback.\n",
    "charts": "# Charts\n\nResponsive charts with up to five API series, typed point events, and an accessible data table.\n\n```ts\nCharts1.chartsConfig = {\n  ...Charts1.chartsConfig,\n  type: 'bar',\n  title: 'Monthly sales',\n  valuePrefix: '$',\n  decimalPlaces: 2,\n};\nCharts1.data = [{\n  id: 'sales', name: 'Sales', color: '#58b9f5',\n  points: [{ label: 'January', value: 1200 }, { label: 'February', value: 1800 }],\n}];\nCharts1.onPointClick = (_sender, event) => {\n  Message(event.detail.label + ': ' + event.detail.value);\n};\n```\n\n## Configure a chart\n\n1. Add **Charts** from the palette. Double-click it or choose **Configure Charts** in the Inspector.\n2. Choose doughnut, pie, bar, horizontal bar, line, area, radar, or polar-area presentation.\n3. Set the title, subtitle, legend, grid, labels, stacking, and value formatting.\n4. In **Appearance → Fonts & colors**, choose the general/legend fonts, colors, and optional Lucide title icon.\n5. Configure up to five series. Each has its own name, color, API Client, endpoint, response list, label field, and numeric value field.\n6. Click **Save chart** to persist the configuration. Cancel or Escape discards the draft.\n\nPrepare the endpoint's response schema in API Client first. List and field selectors follow that schema. Paths use JSON Pointer, such as /data for the list and /name or /total for fields relative to one item.\n\n## Load and inspect data\n\nExecute the configured API operation from a page event. Charts observes that response and subsequent successful executions; each series may use a different client or endpoint. It also reads a successful response already available when the binding is attached.\n\nUse data for transient series supplied by code, or chartsConfig for presentation. clear() removes displayed points; an active API binding can populate them again on its next successful response. Runtime assignments do not change the saved project.\n\nInvalid or missing numeric measurements are omitted. Circular charts exclude negative measurements from the drawing and keep them in the data table. Cartesian charts support negative values. Empty responses display the configured empty message.\n\n## Point interaction\n\nLink **OnPointClick** in Interaction. event.detail contains label, value, seriesId, seriesName, and index. The same activation supports mouse, touch, Enter, and Space. selectedLabel, selectedValue, and selectedSeriesId expose the last selection.\n\nThe Designer and editor use an identified sample. Preview and exports show actual data or the empty state. The chart and accessible data table resize with the component.\n",
    "report-builder": "# ReportBuilder\n\nGenerate PDFs using a template, parameters, and API data.\n\n```ts\n// Declare Title as text in the report template.\nReportBuilder1.Parameters.SetValue('Title', 'Customer report');\nReportBuilder1.previewMode = 'modal';\nReportBuilder1.fileName = 'customers.pdf';\ntry {\n  const result = await ReportBuilder1.GeneratePDF({\n    parameters: { Title: 'Active customers' },\n    fileName: 'customers.pdf',\n  });\n  console.log(result.pageCount, result.blob.size);\n  // Generate() also displays the PDF at the chosen destination.\n} catch (error) {\n  Message(error instanceof Error ? error.message : String(error));\n}\n```\n\n- Open the report designer and configure pages, elements, data sources, and parameters.\n- Execute bound API operations before Generate() or GeneratePDF().\n- Parameters.Set/Get use typed template names; SetValue/GetValue support templates loaded at runtime.\n- LoadTemplate() loads JSON, a Blob, or a URL; SaveTemplate() exports JSON.\n- previewMode selects modal, new tab, or download. ClosePreview() closes the modal presentation.\n- OnGenerate allows parameter adjustments; OnSuccess delivers the result and OnError reports a failure.\n",
    "toast": "# Toast\n\nViewport notifications for success, attention, errors, and information.\n\n```ts\nToast1.Success('Saved successfully');\n```\n\n- Insert Toast from the nonvisual tray. Choose Duration, Position, state icons, and a Toast style in the Inspector.\n- Success(message), Alert(message), Danger(message), and Notifier(message) display text notifications. Clear() dismisses this instance's notifications.\n- Duration is in milliseconds; zero keeps notifications open. Notifications stack by position and are removed with their page or reusable placement.\n- OnShow and OnClose provide message and state through CustomEvent<WebToastEventDetail>. The public Success method uses the existing Sucess state identifier.\n",
    "restgo-sdk": "# RestGO SDK\n\n## Configuration\n\nOpen **RestGo integration → Connection → Application SDK** in the sidebar.\n\n1. Enable **Enable native RestGO integration** and enter **RestGO instance URL**.\n2. Enter **Default database slug** for a default database. **Application API token** is optional and takes the token without Bearer.\n3. Configure **Persist the user session**, **Session storage**, and **Session storage key**. Options are local storage, the current tab, or memory.\n4. Click **Save changes** and save the project.\n\nThe RestGO object is available in pages and reusable components. Disabled integration raises RestGoNotConfiguredError. The application token is included in Preview and Build; use a token suitable for the browser.\n\n## Login and current user\n\n```ts\nconst result = await RestGO.login('ana@example.com', 'user-password', true);\nif (!result.sucess) { Message(result.error.message); return; }\nMessage(result.data.user.fullName);\nNavigate('PageHome');\n```\n\nThe third argument, remember, is optional. Browser persistence follows integration settings. The public result field is named sucess.\n\n```ts\nawait RestGO.auth.ready;\nconst user = RestGO.CurrentUser;\nif (user) Message(user.nome);\n// user.email, user.id, user.emailconfirmed, and user.ativo are also read-only.\n```\n\nCurrentUser reads the last confirmed identity without a request. To fetch current data and validate the session, use getUser(); its result contains fullName, email, id, avatarUrl, active, and emailConfirmed. With no user, data is null.\n\n## Sign-up, recovery, and avatar\n\n| Action | Method |\n| --- | --- |\n| Sign-up | auth.signUp({ email, password, fullName }) |\n| Sign in with an object | auth.signInWithPassword({ email, password, remember }) |\n| Request password recovery | auth.resetPasswordForEmail(email, { url }) |\n| Confirm a new password | auth.confirmPasswordReset({ token, password }) |\n| Confirm email | auth.confirmEmail(token) |\n| Upload or remove an avatar | auth.uploadAvatar(file), auth.deleteAvatar() |\n| Sign out | logout() or auth.signOut() |\n\nSign-up does not log in automatically. The RestGO instance must allow public sign-up. Recovery and confirmation depend on links sent by the server. Avatar upload uses the session and updates the SDK identity.\n\n## Sessions and events\n\n- auth.ready waits for initial restoration. getSession() validates the session; refreshSession() renews credentials; logout() ends the session.\n- Automatic renewal uses the refresh token received at login. A network failure does not confirm logout.\n- onAuthStateChange() receives INITIAL_SESSION, SIGNED_IN, SIGNED_OUT, SESSION_VALIDATED, TOKEN_REFRESHED, or USER_UPDATED. Keep the subscription and call unsubscribe() when observation ends.\n- In **Interaction**, pages and reusable components offer OnLogin and OnLogout with detail.user. OnUnauthenticated allows redirection after the absence of a session is confirmed.\n\n```ts\nconst subscription = RestGO.onAuthStateChange((event, session) => {\n  console.log(event, session?.user.fullName);\n});\n// When observation ends: subscription.unsubscribe();\n```\n\n## Dynamic APIs\n\n```ts\nconst endpoint = RestGO.from<{ id: number; name: string }[]>('customers', {\n  database: 'main', version: 1,\n});\nconst result = await endpoint.get({ auth: 'session', page: 1, pagination: 'simple' });\nif (result.error) { Message(result.error.message); return; }\nconsole.log(result.data, result.has_more);\n```\n\nUse get, post, put, patch, delete, head, options, or request. query, headers, and signal are call options. Pagination accepts exact, simple, and cursor; in cursor mode, set cursorColumn and reuse next_cursor.\n\n| auth | Credential |\n| --- | --- |\n| session | User JWT; requires a session |\n| apiToken | Application token, without Bearer |\n| none | Public access, without Authorization |\n| auto | Current session; otherwise, the configured token |\n\nThe mode must match the endpoint’s publication settings. Login, sign-up, recovery, and confirmation use their public routes. Storage, videos, avatars, and payments use the user session.\n\n## Payments\n\nUse the [Payments component](/docs/payments) for the standard frontend flow. Configure its Gateway slug, sign in as the customer, and call one action from the button's async OnClick handler:\n\n```ts\nawait Payments1.Pay(Edit1.value);\n```\n\nFor a subscription, use Subscribe(Edit1.value); Checkout(Edit1.value) uses the Inspector's Mode. These component actions recover/persist the attempt, wait for checkout and open the provider automatically. Resume(), Refresh(), WaitForConfirmation(), CancelSubscription(), LoadHistory() and LoadMore() simplify management and return flows. Confirm financial success through RestGo rather than trusting a redirect.\n\nDirect SDK code uses RestGO.payments.gateway(slug), with createCheckout, getOperation, listOperations, and cancelSubscription. The four routes use the customer's Authentication JWT exclusively; there is no application-token fallback. SDK methods return RestGoResult and do not automatically navigate. Direct createCheckout callers must durably save and reuse the original sourceKey, mode and idempotencyKey before POST, then save the returned operation ID before navigation. HTTP 202 is a successful pending operation.\n\n```ts\nconst gateway = RestGO.payments.gateway('customer-payments');\nconst result = await gateway.listOperations();\nif (result.error) Message(result.error.message);\nelse console.log(result.data.data, result.data.nextCursor);\n```\n\nPrice, currency, ownership, recurrence, provider credentials and webhooks remain on RestGo. Choose the high-level Payments component unless transport-level control is required.\n\n## APIs in the IDE\n\n- In **RestGo integration → Connection**, the administrative connection manages endpoints. Its credential stays in the IDE, separate from the application token.\n- In **Endpoints**, configure and publish the API. **Published APIs** lists available routes.\n- In [API Client](/docs/api-client), **Import from RestGo** imports operations; **Refresh** synchronizes previously imported clients.\n- **Development login** authenticates JWT API tests in the editor. This session is separate from Preview or generated application login.\n\n## Storage and videos\n\nUse [File Upload](/docs/file-upload) and [Video Upload](/docs/video-upload) to select files and track uploads through the interface. The same operations are available in RestGO.storage and RestGO.videos.\n\n- **Storage**: list, upload, get, update, remove, download, getPublicUrl, and usage. download returns a Blob. isPublic controls privacy; getPublicUrl only constructs the URL.\n- **Videos**: upload, resumeUpload, list, get, update, and remove. Save resumeToken and select the same file to resume.\n- **Processing**: process, reprocess, cancelProcessing, and waitUntilReady. Waiting observes conversion without starting it.\n- **Media**: getHls, getThumbnail, and getMedia. For playback with controls and quality selection, use [Video Player](/docs/video-player).\n- **Manual chunks**: videos.uploads offers create, get, sendChunk, complete, and cancel. Prefer upload/resumeUpload when individual chunk control is not needed.\n\n## Results and failures\n\nSDK operations return { data, error }; login also returns sucess. Check error before using data. Errors include message, code, and status when available. Component methods such as ApiClient1.execute() and FileUpload1.SendToRestGO() reject their Promise on failure: use try/catch.\n",
    "interactions": "# Interactions and TypeScript code\n\nLink events to methods in the Inspector’s **Interaction** tab:\n\n1. Select the component in the Builder.\n2. Open **Interaction** and double-click the event.\n3. Edit the method created in the page or reusable component class.\n4. Use **F9** to run Preview.\n\nThe link is saved in the project. Creating a method with a similar name does not link the event. Preserve the name shown in Interaction.\n\n## Components, fields, and methods\n\nUse the name defined in the Builder: `Save.caption` or `this.Save.caption`. Fields, methods, getters, and setters in the same class also support direct access or `this`. The page or reusable component root is `this`.\n\nLocal variables and parameters with the same name take precedence. Direct access belongs to instance code; in callbacks, prefer arrow functions to preserve that context. Each reusable placement has its own components and state.\n\n## sender and event\n\nThe method receives `sender`, the typed component instance, and `event`. Data events use `CustomEvent` with typed `event.detail`. The IDE creates the appropriate signature and imports when you open an event.\n\nFor DOM events, narrow `Event` before accessing specific properties:\n\n```ts\nEdit1.bindEvent('OnKeyDown', (sender, event) => {\n  if (!(event instanceof KeyboardEvent)) return;\n  if (event.key === 'Enter') {\n    event.preventDefault();\n    Message(sender.value.trim());\n  }\n});\n```\n\nChanging a property in code does not guarantee an `input` or `change` event. To cancel a default action, call `event.preventDefault()` before any `await`.\n\n## Events in code\n\n`bindEvent` keeps one handler per event name on the instance. A new binding replaces the previous one, including a binding created through Interaction. The returned function removes the binding. Shortcuts such as `onClick` use the same mechanism.\n\n```ts\nconst unsubscribe = Button1.bindEvent('OnClick', (sender) => {\n  Message(sender.caption);\n});\nunsubscribe();\n\nButton1.onClick = (sender) => { Message(sender.caption); };\n// Remove the handler:\nButton1.onClick = null;\n```\n\n## CurrentRow in Repeating Group\n\nConfigure the list in Repeating Group and use **Current row** on template children to bind properties to item fields. Paths are JSON Pointers relative to the row, such as `/name` and `/id`. A Group organizes children; bind data to the Label, Edit, Image, or other visual control inside it.\n\nOpening a template child’s event adds the typed `CurrentRow` parameter:\n\n```ts\nconst id = CurrentRow.value.id;\nconst rowIndex = CurrentRow.index; // Zero-based.\nLabel1.text = String(id);\n```\n\nThe type of `value` comes from the bound operation’s response schema. In a row event, `Label1` and `this.Label1` resolve to that row’s component. The context and value remain associated with the event after `await`. Outside these events, generated access to a child uses the first row and fails if no rows exist; use `RepeatingGroup1.getRow(rowIndex)` to choose a row explicitly.\n\n## Page lifecycle\n\n| Event | When it occurs |\n| --- | --- |\n| OnCreate | First display of each page instance. |\n| OnShow | Page display. |\n| OnParametersChanged | Parameters changed while the same page remains active; params already contains the new values. |\n| OnHide | Page closing. |\n| OnResize | Page size change. |\n\nUse OnCreate for initialization and OnHide to release external subscriptions created by the page. Navigation disposes of the previous page and its instances. Do not register handlers again on every OnShow without removing the previous binding.\n\nWith RestGO configured, pages and reusable roots offer:\n\n| Event | Data |\n| --- | --- |\n| OnLogin | `event.detail.user` and `restored`; the latter indicates a restored session. |\n| OnLogout | `event.detail.user`, the last authenticated user. |\n| OnUnauthenticated | No user payload; the SDK confirmed the absence of a session. |\n\nOn a protected page, link OnUnauthenticated and use `Navigate('PageLogin')`. Keep the login page accessible without a session. Authentication observation follows visible pages and mounted reusable components and is released automatically.\n\n## Errors and disposal\n\nUse `try/catch` in asynchronous actions. API Client, uploads, player, and reports may reject Promises as well as emit events; the RestGO SDK normally returns `data/error`. Generated pages and reusable components already dispose of their components. Call `dispose()` only on instances whose lifecycle you created.\n",
    "layout": "# Layout, styles, and themes\n\nConfigure layout in the Inspector. The container arranges its children; each child defines how it occupies space in the parent.\n\n## Container layout\n\n| Container layout | Purpose |\n| --- | --- |\n| fixed | Position using Left/Top and dimensions. |\n| align-to-parent | Anchors and distances from the parent’s edges. |\n| row | Horizontal flow with Gap, alignment, and Wrap. |\n| column | Vertical flow with Gap and alignment. |\n\n**Padding** is the container’s internal space. **Gap** separates its children. **Margin top/right/bottom/left** defines each component’s external space; each side overrides the general Margin value.\n\n## Size and responsiveness\n\nIn **Responsive width** and **Responsive height**, choose:\n\n- **fixed**: uses the Width/Height dimension.\n- **stretch**: fills the available space along the axis.\n- **fit-content**: follows the content and rendered children.\n\nMinimum/Maximum constrain each axis; an empty maximum means no limit. In row/column, **Grow** distributes free space, **Shrink** allows a child to give up space, and **Item alignment** adjusts cross-axis alignment. **Auto** inherits the parent’s alignment. Fit-content preserves the content’s intrinsic size.\n\nIn align-to-parent, use **Horizontal anchor**, **Vertical anchor**, and edge insets. The Inspector disables positions or insets that the active layout does not use. Geometry values use pixels.\n\nUse **Responsive** in the Designer to change the working width and observe the result. The editing width does not create a layout rule: configure flow, Wrap, Stretch, and limits to adapt the interface.\n\n## Change properties in code\n\nAvailable TypeScript properties appear in each component’s reference. Structural Inspector settings do not automatically become code properties with the same name.\n\n```ts\nPanel1.width = 480;\nPanel1.marginTop = 8;\nPanel1.marginRight = 16;\nPanel1.alignSelf = 'stretch';\nPanel1.collapseWhenHidden = false;\nPanel1.hide();\nPanel1.show();\n```\n\n`visible` controls display; `collapseWhenHidden = true`, the default, removes hidden components from layout. Use `false` to reserve their space. `enabled` disables controls that support this state and exposes `aria-disabled` on others. On the Page root, `this.layoutMode` changes the container mode.\n\n## Floating Panels and reusable components\n\nOn a Panel, **Placement = floating** overlays content without reserving space and follows page scrolling. **Floating alignment** accepts `none`, `top`, `bottom`, `left`, `right`, and `client`. Alignment preserves Responsive width/height, limits, margins, and insets. To fill the page area, use `client` and Stretch on both axes.\n\nIn `none` mode, use horizontal/vertical anchors and offsets. **Floating layer** controls stacking order. `placement = 'in-flow'` returns the same Panel and its children to the original layout.\n\nDrag a definition from **Reusable Components** onto the page to create a placement; its reference and code are included automatically. Edit the definition to share its interface across placements. Configure size, margins, and positioning on each placement. Floating reusable components are pinned to the viewport, while floating Panels belong to the page’s scrollable area.\n\nPopup is a dialog outside the page flow. Use `Popup1.show()` and `Popup1.close()`; `modal = true` opens it in the browser’s modal layer. Arrange controls inside the Popup in the Designer.\n\n## Styles\n\nCreate or edit styles in **Styles** and assign them in the Inspector’s **Style** field. States: **Base**, **Hover**, **Focus**, **Active**, and **Disabled**. **Shared** keeps common values; **Light overrides** and **Dark overrides** change only the selected theme. Removing an override restores the shared value.\n\nFor local code adjustments, visual components expose `backgroundColor`, `color`, and `borderColor`. The component contract has no generic `style` property. Group is a transparent container for organization.\n\n## Application themes\n\nWhen creating a project, choose **Aurora**, **Prism**, **Flat**, or **WebRAD**. All offer Light/Dark and use Roboto as the default font. The preset supplies editable colors and styles.\n\nIn **Styles > Themes**, edit Light/Dark colors, choose the initial **Light**, **Dark**, or **System** mode, and enable remembering the user’s choice if needed. Confirm with **Save themes**.\n\nIn the color picker, choose **Theme color** to retain the theme binding. **Add color** creates a custom color with Light/Dark values; **Same** uses one value in both modes. Entering a fixed property color removes the binding. In existing projects, **Link Default styles and scrollbars when saving** applies bindings to Default styles and scrollbars.\n\n**Preview theme** in Styles and **Responsive > Application theme** in the Designer change the editing view. F9 Preview and the application use the saved initial mode or the user’s remembered choice. The IDE theme is independent.\n\n```ts\nTheme.mode = 'system'; // Also accepts 'light' and 'dark'.\nTheme.toggle();\nconst currentTheme = Theme.resolvedMode; // Read-only: 'light' or 'dark'.\nTheme.reset(); // Restore the initial mode and forget the saved choice.\n```\n\nTo assign a theme-bound color in code:\n\n```ts\nimport { themeColorReference } from '@webrad/runtime';\nPanel1.backgroundColor = themeColorReference('surface');\n```\n\n`customThemeColorReference(id)` from the same module references a custom color by its saved Themes ID.\n\nChanging themes preserves pages, components, and values. `Theme.onChange` accepts one handler; `Theme.subscribe(handler)` supports multiple handlers and returns an unsubscribe function. The typed event provides `mode`, `resolvedMode`, and previous values in `event.detail`. Release subscriptions when their owner is disposed.\n\n## Fonts and assets\n\nIn **Styles > Text > Font family**, choose **Roboto**, **Open Sans**, **JetBrains Mono**, **Inter**, **Lato**, **Montserrat**, **Poppins**, or **Nunito**. Weight and italic are separate properties. Fonts are bundled with the exported project and work without a CDN; preserve notices in `assets/licenses/fonts/` when publishing. Generic sans/serif/mono options use system fonts.\n\nImport files in Assets and use portable paths such as `assets/imported/profile.png`. External URLs depend on network access and service permissions. Use the same asset reference in the Designer and application.\n",
    "globals": "# Global functions and navigation\n\n`Message`, `Confirm`, `Navigate`, `RestGO`, `Theme`, and `Env` are available in project code. Additional classes and types come from `@webrad/runtime`; the RestGO SDK can be imported from `@webrad/restgo-sdk`.\n\n## Use a global function in an event\n\n1. Select a Button in the Designer.\n2. In **Interaction**, double-click **OnClick** to create and link the method.\n3. Copy the following body into that method and run **F9 Preview**.\n\n```ts\nif (!Confirm('Save these changes?')) return;\nMessage('Changes saved');\n```\n\nThese built-in functions need no import and no `this`. Use them in event methods and other authored application code.\n\n## Message and Confirm\n\n```ts\nMessage('Operation completed');\nif (!Confirm('Do you want to continue?')) return;\n```\n\nBoth convert the received value to text and use browser dialogs. `Confirm` returns a `boolean` synchronously.\n\n## Navigate\n\n`Navigate(destination, options?)` accepts a page name, ID, automatic route, URL string, or URL object. Internal navigation switches pages without reloading the application. Back/Forward restores the corresponding page.\n\n```ts\nNavigate('PageCustomers');\nNavigate('/pagecustomers');\nNavigate('PageLogin', { replace: true });\nNavigate('https://example.com/help', { newWindow: true });\n```\n\n`replace` replaces the current history entry. `newWindow` or `target` opens another context, subject to browser popup blocking. External URLs follow normal browser navigation.\n\n### Pass page parameters\n\nDeclare parameters on the destination page through **Properties → Navigation → Parameters → Configure Parameters**. For a Customers page with a required numeric `customerId` and optional boolean `showOrders`:\n\n```ts\nNavigate('Customers', {\n  params: { customerId: 42, showOrders: true },\n});\n```\n\nThe destination reads `params.customerId` or `this.params.customerId`. The IDE generates names and types from its declarations. Defaults and required values are checked when resolving navigation. A parameter change on the active page updates its context and emits **OnParametersChanged**.\n\nWith supplied parameters, `paramsHandling` defaults to `replace`; `merge` retains existing fields and applies the supplied values, while `preserve` keeps the current values. See the [page parameter manual](rotas-e-hospedagem#page-parameters) for defaults, direct links, and invalid values.\n\nConfigure paths, index/404 pages, History/Hash, and subfolder publishing in [Routing and hosting](/docs/rotas-e-hospedagem).\n\n## Titles and closing\n\nConfigure **Identity > Browser title** on the Page root or assign `this.browserTitle`. Empty values use the application name; the visible page’s title appears in the browser tab.\n\n`this.close()` closes the current page. `this.close({ remove: true })` also removes its structure. Popup has its own signature: `Popup1.close('confirmed')` stores the text in `Popup1.returnValue`.\n\n## Env, RestGO, and Theme\n\n`Env.VARIABLE_NAME` reads the environment value selected in Project Settings at compilation time. Values are strings, typed by the registered names and read-only. See [Global variables (Env)](global-variables) for creation, Development/Production selection, and examples.\n\n`RestGO` uses the connection enabled and configured in the project. `RestGO.CurrentUser` reads the last server-confirmed identity, or `null` before authentication/restoration. See [RestGO SDK](/docs/restgo-sdk) for authentication, data, and files.\n\n`Theme` controls the application theme; see [Layout, styles, and themes](/docs/layout) for configuration and events.\n\n## Create shared functions in a Unit\n\nTo reuse your own functions across pages and reusable components, create a Unit and import its exports where needed.\n\n1. Choose **Project → Add Unit** and name it **Formatting**.\n2. Open `units/Formatting.ts` and replace its sample content with:\n\n```ts project\nexport function formatCurrency(value: number): string {\n  return new Intl.NumberFormat('en-US', {\n    style: 'currency', currency: 'USD',\n  }).format(value);\n}\n```\n\nAdd the import above the existing class in a page's authored TypeScript file. Put the assignment in a linked event method:\n\n```ts project\nimport { formatCurrency } from '../units/Formatting';\n// Keep the page's existing imports and class.\n// Inside a linked event method; add Label1 in the Designer first:\nLabel1.caption = formatCurrency(150);\n```\n\nThe Label displays `$150.00`. Repeat the import in another page or reusable component to use the same implementation. The example assumes the importing file is one folder below the project root; adjust the relative path for its location.\n\nUnit exports use ordinary TypeScript imports. They become available by their imported names, without `this`. They do not automatically become built-in globals. Pass values into shared functions instead of relying on a particular page's component names. A helper used by just one page can remain a class method; both its direct name and `this.methodName` work in that instance's code.\n\nShared functions may be asynchronous. Declare a precise return type, await the call in an async event method, and handle errors there. For third-party functions, first install the package through [Packages and libraries](packages), then import it in the Unit or authored file that uses it.\n\n## Create instances directly\n\nUse Designer instances for interface components. Classes from `@webrad/runtime` can also wrap compatible DOM elements, but their constructors do not assemble the structure, styles, and bindings generated by WebRAD. Review the component signature before creating an instance in code.\n",
    "primeiros-passos": "# Getting started\n\n## Create a project\n\n1. Open **File → New Project** or press **Ctrl+N**.\n2. Choose **Blank project** to start from scratch or **Examples & Tutorial** for editable examples of components, reusable menus, APIs, and RestGO accounts across 13 pages.\n3. Choose a theme: **Aurora**, **Prism**, **Flat**, or **WebRAD**.\n4. Enter **Project name** and click **Create project**.\n5. Select the destination folder. The IDE creates a subfolder with the project name.\n\nTo reopen a project, use **File → Open Project…** or **Ctrl+O** and select the `.wrproj` file.\n\n## Build your first screen\n\n1. Open **index** in **Project Explorer → Pages**.\n2. Add components from the **Tool Palette**.\n3. Select a component and adjust its properties in the **Object Inspector**.\n4. In the **Interaction** tab, double-click an event to create and link its TypeScript method.\n5. Edit the method in the **Code** tab and save with **Ctrl+S**.\n6. Press **F9** or click **Preview** to compile and run.\n\nIn page code, access components using their Inspector names, such as `Button1.caption`. The page root is `this`.\n\nProjects include the required **index** and **404** pages. Edit their content; their names are reserved. Use **Project → Add Page** for additional screens.\n\n## Next steps\n\nOpen **Project Settings** in the **Project** panel to configure the name, environments, routes, and publishing. To export, open **Project → Build Application…** and choose **Web/PWA** or a native platform.\n",
    "ide-e-projetos": "# IDE and project structure\n\n## Panels\n\n| Area | Purpose |\n| --- | --- |\n| Project Explorer | Open, create, duplicate, and delete pages, reusable components, Models, Units, and assets; filter items with search. |\n| Project | Open **Styles** and **Project Settings**. |\n| Tool Palette | Add components and place reusable components. |\n| Designer | Build the interface and arrange components. |\n| Object Inspector | Change properties and link events in **Interaction**. |\n| Code | Edit TypeScript with suggestions, types, and diagnostics. |\n| Preview | Run the compiled application. |\n| Output and Problems | View messages and compilation errors. |\n| Debugger | Inspect execution and values while debugging. |\n\n## Project resources\n\n| Resource | Contents |\n| --- | --- |\n| .wrproj file | Settings and references to project documents. |\n| Pages | Visual model and TypeScript for each page. **index** is the entry page; **404** handles unknown routes. |\n| Reusable Components | Interface and code shared across placements; each instance maintains its own state. |\n| Models | TypeScript types and models in `models/`. |\n| Units | Shared functions and classes in `units/`. |\n| Assets | Images and other imported files. |\n| Styles | Project styles, visual states, and colors. |\n\nEdit the authored TypeScript. Files with `.generated` in their names are maintained by the IDE. Preserve the entire project folder when copying it or adding it to version control.\n\n**Project → Add Reusable Component** offers **Blank component** and **Responsive menu**. The menu template creates an editable definition that can be used across pages.\n\n## Menus\n\n| Menu | Commands |\n| --- | --- |\n| File | New Project, Open Project…, Close Project, Save, Save All, and Exit. |\n| Edit | Undo, Redo, Cut, Copy, Paste, and Delete, depending on the focused editor. |\n| Search | Find. |\n| View | Designer, Code, Preview, Project Explorer, Object Inspector, Tool Palette, Output, Debugger, and developer tools. |\n| Project | Add Page, Add Reusable Component, Add Model, Add Unit, Import Asset…, Packages, and Build Application…. |\n| Run | Run and debugging controls. |\n| Tools | Toggle Theme for the IDE’s appearance. |\n| Help | Documentation, Check for Updates..., and About WebRAD. |\n\n## Keyboard shortcuts\n\n| Action | Shortcut |\n| --- | --- |\n| New project / open project | Ctrl+N / Ctrl+O |\n| Save / save all | Ctrl+S / Ctrl+Shift+S |\n| Undo / redo | Ctrl+Z / Ctrl+Y |\n| Find | Ctrl+F |\n| Compile and run in Preview | F9 |\n| Start or continue debugging | F5 |\n| Step Over / Step Into / Step Out | F10 / F11 / Shift+F11 |\n| Stop / restart debugging | Shift+F5 / Ctrl+Shift+F5 |\n\nOn macOS, shortcuts with Ctrl use Command.\n",
    "configuracoes-do-projeto": "# Project settings\n\nOpen **Project Settings** in the **Project** panel. Make your changes, click **Apply changes**, then save the project with **Ctrl+S**.\n\n| Section | Settings |\n| --- | --- |\n| General | Application name, description, language, time zone, Designer grid, and scrollbar appearance. |\n| Environment variables | Global configuration exposed through Env, with separate Development and Production values; the environment used by Preview and Build. |\n| Icons | Browser and PWA installation icons, in SVG or PNG up to 1 MB. |\n| SEO and sharing | Canonical URL, keywords, indexing, title, description, and sharing image. |\n| Build and publishing | Browser routing, Application base path, Deploy directory, Deploy environment, minification, and source maps. |\n| Native Application | Package identity, window, mobile, platform, architecture, format, output folder, network, and signing references. |\n| PWA and metadata | Installation, short name, display mode, orientation, colors, and offline availability. |\n\n**Application name** is used as the browser title when the page’s **Browser title** is empty. Language sets the HTML language attribute. Time zone is a preference exposed to the application; it does not change the device clock.\n\n## Environments\n\nIn **Environment variables**, click **Add variable** and enter a name such as `API_BASE_URL`. Select Development to edit its development value, then Production to edit its production value. Use it in TypeScript:\n\n```ts\nconst apiUrl = Env.API_BASE_URL;\n```\n\nNames use uppercase letters, numbers, and underscores, starting with a letter. Values are strings. **Environment used for Preview and Build** selects the Preview environment; Web/PWA and native exports use **Deploy environment** in **Build and publishing**.\n\nThese values become part of the distributed JavaScript. Use public settings only; keep private passwords and tokens on the server.\n\nSee [Global variables (Env)](global-variables) for the complete manual, value conversion, and examples. See [Global functions](globals) for shared code and [Packages and libraries](packages) for NPM installation.\n\n## Icons and sharing\n\n**Icons** provides the favicon and installation icons. **Native Application** allows a different package icon and a separate mobile icon.\n\nIn **SEO and sharing**, use a PNG or JPEG up to 5 MB; the recommended size is 1200 × 630 px. Empty sharing titles and descriptions fall back to the application’s general information.\n\nMetadata is generated in HTML. Dynamic application content depends on JavaScript execution by the search engine or service opening the link.\n",
    "global-variables": "# Global variables (Env)\n\nProject Settings exposes environment variables through the read-only global `Env`. Each variable has separate **Development** and **Production** string values.\n\n## Create a variable\n\n1. Open **Project Settings** in the Project panel.\n2. Select **Environment variables**.\n3. Under **Environment used for Preview and Build**, choose **Development**.\n4. Click **Add variable**, enter `API_BASE_URL`, and set its value to `https://dev-api.example.com`.\n5. Switch the environment to **Production** and set the same variable to `https://api.example.com`. Switching environments changes which value is being edited; it keeps the other value.\n6. Select the environment you want for Preview, then click **Apply changes**.\n7. Save the project with **Ctrl+S**. Run Preview again to compile the selected values.\n\nNames are unique and case-sensitive. Start with an uppercase letter and use uppercase letters, numbers, and underscores. For example, `API_BASE_URL` is valid; `api-url` is not. Use the remove action on the variable row to delete it, then apply and save.\n\n## Read values in code\n\nAdd an API Client named **ApiClient1**. In a page event, use the configured value:\n\n```ts\nconst apiUrl = Env.API_BASE_URL;\nApiClient1.Connection.BaseURL = apiUrl;\nMessage(apiUrl);\n```\n\nUse `Env.API_BASE_URL` directly, without an import or `this`. Monaco suggests configured names and reports undeclared names. Env is read-only at runtime; edit the value in Project Settings and compile again to change the distributed setting.\n\n## Numbers and booleans\n\nAll values remain strings, including `\"25\"` and `\"false\"`. Add `PAGE_SIZE` and `ENABLE_REPORTS` in Project Settings before using this example:\n\n```ts\nconst pageSize = Number(Env.PAGE_SIZE);\nif (!Number.isInteger(pageSize) || pageSize < 1) {\n  throw new Error('PAGE_SIZE must be a positive integer.');\n}\nconst reportsEnabled = Env.ENABLE_REPORTS === 'true';\nconsole.log(pageSize, reportsEnabled);\n```\n\nChoose an explicit convention such as `true`/`false`. JavaScript treats every nonempty string, including `\"false\"`, as truthy.\n\n## Preview and exported applications\n\n| Where the application runs | Value selection |\n| --- | --- |\n| Preview in the IDE | **Environment variables → Environment used for Preview and Build**. |\n| Web/PWA export | **Build and publishing → Deploy environment**. |\n| Native export | **Build and publishing → Deploy environment**. |\n\nThe compiler includes the selected values in the application. Changing Project Settings after export requires a new export. They are visible in distributed JavaScript: use public URLs and feature settings here, and keep server credentials on the backend.\n\n## Other kinds of state\n\nFor a value that changes during use, declare a typed field on the page or reusable class. That field belongs to the instance. Use a shared Unit when several parts of the application need the same function; see [Global functions](globals). Env remains the configuration source for values selected before execution.\n\nSee [Project settings](configuracoes-do-projeto) for the other sections and [Packages and libraries](packages) for installing dependencies.\n",
    "packages": "# Packages and libraries\n\nInstall browser-compatible NPM libraries for use in Pages, Reusable Components, Models, and Units. Each project keeps its own dependencies.\n\n## Requirements\n\nInstall **Node.js 20 or newer** and **NPM 10 or newer**, available on the system PATH. This also applies to the packaged WebRAD IDE. Save the project before opening its package manager. Missing tools are reported in the dialog.\n\n## Install a library\n\n1. Open **Project → Packages** or **Packages** in Project Explorer.\n2. In **Search NPM registry**, enter a package name and click **Search**.\n3. Review the matching package and click **Install**.\n4. Wait for the operation to finish. The package appears in **Installed**, with its installed version.\n\nTo choose a version directly, use **Install by name**: enter the **Package name**, optionally fill **Version (optional)**, then click **Install**. Scoped names such as `@scope/package` are supported. Leave the version blank to install the registry's latest version.\n\nThe dialog shows requested, installed, and available latest versions, plus progress, process output, and errors. A cancelled installation can leave dependencies incomplete; use **Restore dependencies** before compiling again.\n\n## Example: format a date with dayjs\n\nInstall the package `dayjs`. Choose **Project → Add Unit**, name it **Clock**, and edit `units/Clock.ts`:\n\n```ts project\nimport dayjs from 'dayjs';\n\nexport function formattedNow(): string {\n  return dayjs().format('YYYY-MM-DD HH:mm:ss');\n}\n```\n\nIn a page's authored TypeScript file, add the import above the existing class. This example uses a Button named **Button1** and a Label named **Label1**:\n\n```ts project\nimport { formattedNow } from '../units/Clock';\n// Keep the page's existing imports and class.\n// Inside the linked Button1 OnClick method:\nLabel1.caption = formattedNow();\n```\n\nLink the button's **OnClick** in Interaction, copy the assignment into its method, and run **F9 Preview**. The Label displays the time when clicked. The relative import above assumes the authored page file is in `pages/`; adjust it if importing from another folder.\n\nProject and package examples depend on the named Unit or installed package. The documentation editor displays and lets you copy them; it does not install packages or run the application.\n\n## TypeScript support\n\nAfter installation, Monaco reads the package's declarations for completion, hover, signatures, and diagnostics. If a package has no declarations, install its corresponding `@types/package` when available.\n\nUse **Go to Definition** or Ctrl+click (Cmd+click on macOS) on an imported symbol to open installed declarations in a read-only viewer. F12 retains WebRAD's Design/Code switching behavior.\n\n## Update, remove, and restore\n\n| Action | Result |\n| --- | --- |\n| Update | Updates that direct dependency and its installed declarations. |\n| Remove | Removes the direct dependency. Remove or replace its imports in your source as well. |\n| Restore dependencies | Reinstalls the saved dependency tree; uses the lockfile when one exists. |\n\nSave the project after changing dependencies. Keep the entire project folder, including the `.wrproj`, `package.json`, and `package-lock.json`, when copying it or using version control. `node_modules` is local installation data. Opening or moving a project does not silently install packages; open Packages and restore them explicitly.\n\n## Preview and distribution\n\nPreview, Debug, Web/PWA, and native frontends use the project's installed packages. Imports are bundled with the application; compatible CSS imports join its stylesheet. Exported browser applications do not need Node.js or a server-side `node_modules` folder to run. Native applications execute these libraries in the Tauri WebView.\n\nChoose libraries that support the browser. Node-only modules such as `node:fs` and `child_process` are unavailable in application code. Network, CORS, workers, and other browser requirements still apply. Installation lifecycle scripts are disabled, so packages that require those scripts are unsupported by this manager.\n\nThe built-in module names `@webrad/*`, `pdf-lib`, `shaka-player`, and `@pdf-lib/standard-fonts` are reserved. Import their supplied APIs rather than trying to install replacement versions through Packages.\n\n## Common problems\n\n| Symptom | What to check |\n| --- | --- |\n| Node or NPM is unavailable | Install the required tools, make them available on PATH, and reopen the IDE if its environment needs refreshing. |\n| A saved dependency is missing | Use **Restore dependencies** in Packages. |\n| Cannot find a module | Check the name, installation result, and import path. |\n| Missing declaration error | Look for the library's own types or its matching `@types` package. |\n| An import fails after Remove | Remove or replace that import in the authored code. |\n| A library requests a Node API or install script | Use a browser-compatible alternative. |\n\nSee [Global functions](globals#create-shared-functions-in-a-unit) to organize shared application logic and [Web and PWA builds](build-web-pwa) to export it.\n",
    "rotas-e-hospedagem": "# Pages, routing, and hosting\n\nSelect the page root in the Designer and configure **Browser title** in the Inspector. Page paths are derived automatically from the page name.\n\n| Field | Behavior |\n| --- | --- |\n| Name | Name used in code and in `Navigate('PageName')`; also determines the lowercase URL path. |\n| Route path | Read-only automatic path: Customers becomes /customers; PageCustomers becomes /pagecustomers. |\n| Browser title | Browser tab text. Empty values use **Application name**. |\n\nRename an ordinary page to change its automatic path. There is no custom Route path field in the Inspector. Automatic paths must be valid and unique; assets is reserved. Use the page name or stable ID in Navigate when you want the router to resolve its path.\n\n**index** is the home page and uses **/index**. **404** uses **/404** and handles unknown addresses. You can change the content of both pages, but cannot rename or delete them.\n\n## History or Hash\n\nOpen **Project Settings → Build and publishing → Browser routing**.\n\n| Option | Example | Host configuration |\n| --- | --- | --- |\n| History (clean URLs) | `https://example.com/customers` | Serve the same index.html for application routes. |\n| Hash (static hosting compatibility) | `https://example.com/#/customers` | Standard static hosting without route rewriting. |\n\n**History** is the default. When opening a file through `file://`, the runtime automatically uses **Hash**.\n\nIn **Application base path**, use `/` for the domain root or `/myapp/` for a subfolder. The value starts and ends with `/`. Publish files in the matching subfolder and preserve access to assets.\n\n## Navigation in code\n\n```ts\nNavigate('Customers');\n// Replace the current history entry:\nNavigate('Login', { replace: true });\n```\n\nThe runtime also resolves registered internal paths. Back and Forward follow the selected routing mode. For dynamic titles, change `this.browserTitle` in the page class.\n\n## Page parameters\n\n1. Select the destination page root.\n2. Open **Properties → Navigation → Parameters → Configure Parameters**.\n3. Add each unique name, select string, number, or boolean, and choose whether it is required or has a default.\n4. Save the modal, then save the project.\n\nFor a page named **Customers**, declare required numeric customerId and optional boolean showOrders. From another page:\n\n```ts\nNavigate('Customers', {\n  params: { customerId: 42, showOrders: true },\n});\n```\n\nThe History URL is /customers?customerId=42&showOrders=true; Hash uses #/customers?customerId=42&showOrders=true. Read params.customerId or this.params.customerId in the destination's instance code. Monaco suggests the declared names and types. Values are immutable snapshots available before OnCreate.\n\nOptional parameters without a default may be undefined. A default makes an input optional to send and defined to read, including when Required is selected. Missing or invalid required values and repeated declared values raise PageParameterError. Invalid optional values use the default or undefined. Numbers must be finite decimal values; booleans use true or false. Direct links, refresh, new windows, and Back/Forward use the same declarations.\n\nSupplying params replaces the query by default. paramsHandling = 'merge' retains existing fields and applies new values; an explicit undefined removes a field. 'preserve' keeps the current query and ignores supplied values. With no supplied params, explicit query, or handling option, navigation retains the previous query.\n\nChanging only parameters on the active page retains its instance and emits **OnParametersChanged** without repeating OnCreate or OnShow. event.detail.previous and event.detail.params hold the old and new snapshots.\n\nAfter publishing, open a route directly and refresh the browser. A server 404 on that request means hosting needs an index.html fallback rule or Hash mode.\n",
    "build-web-pwa": "# Web and PWA builds\n\n**Preview/F9** runs the application inside the IDE. To generate files for publishing, use **Build Application**.\n\n## Export\n\n1. In **Project Settings → Build and publishing**, choose **Deploy environment**, minification, source maps, routing mode, and base path.\n2. In **Project Settings → Native Application → Build**, configure **Output Directory** and **Build Configuration**. Build Application also uses these fields when exporting Web/PWA.\n3. Open **Project → Build Application…**, select **Web/PWA**, and click **Build**.\n4. Wait for **Completed** and click **Open Output Folder**.\n5. Upload `index.html` and the generated folders to your host.\n\nOutput is saved in **Output Directory/project name**. A saved absolute folder is reused; without an authorized destination, the IDE opens the folder picker. Web/PWA uses the compiler included in WebRAD and does not require Rust, Tauri, or native SDKs.\n\n**Release** applies minification when **Minify JavaScript and CSS** is enabled. **Include source maps for troubleshooting** generates source maps. The frontend includes the code and resources used by the application.\n\n**Deploy directory** in Build and publishing belongs to the Deploy workflow; **Build Application** uses **Output Directory** in Native Application.\n\n## PWA\n\nIn **Project Settings → PWA and metadata**:\n\n1. Enable **Enable PWA installation**.\n2. Adjust **Short name**, **Display mode**, **Orientation**, **Theme color**, and **Background color**.\n3. Enable **Keep the application available offline** to retain application files after the first visit.\n4. Configure the name in **General** and the image in **Icons**.\n5. Generate **Web/PWA** again and host it over **HTTPS**.\n\nThe build generates PWA installation files and, when offline mode is enabled, a service worker. API services, login, uploads, and remote media still require a connection. Installation availability depends on the browser and device.\n\n## Before publishing\n\nConfirm the selected environment, direct links, asset loading, and backend connection on the final domain. For History, configure routes to fall back to index.html. For subfolder publishing, adjust **Application base path** before building.\n",
    "build-nativo": "# Native builds and GitHub Actions\n\nNative builds are **experimental**. WebRAD generates the frontend and a **Tauri 2** project. The application uses a system WebView while preserving TypeScript components and events. The IDE runs on Electron; generated native applications use Tauri.\n\n## Configure and build\n\n1. Open **Project Settings → Native Application**.\n2. In **Identification**, enter **Application Name**, **Application Identifier** in the format `com.company.app`, **Version** such as `1.0.0`, description, publisher, and icon.\n3. In **Build**, configure platform, architecture, **Debug/Release**, **Bundle Format**, and **Output Directory**.\n4. Adjust **Desktop**, **Mobile**, **Network**, and **Signing references** for the target.\n5. Save. Open **Project → Build Application…** and choose **Target Platform**.\n6. Review **Build Requirements**. Use **How to resolve** for pending items and **Check again** after installing tools.\n7. Click **Build**. Follow **Build logs** and **Diagnostics**; use **Cancel Build** to stop.\n8. After **Completed**, open the output or copy the artifact path.\n\nThe dialog selects the export platform; other options belong in **Project Settings**. Output updates **Output Directory/project name**. Public environment values come from **Build and publishing → Deploy environment**. Available prerequisites do not prove that the resulting application runs or can be distributed.\n\n## Targets\n\n| Platform | Local build host | Architectures | Outputs |\n| --- | --- | --- | --- |\n| Windows | Windows | Host, x64, x86, ARM64 | Executable (EXE), NSIS installer (EXE), MSI |\n| Linux | Linux | Host, x64, ARM64 | DEB, RPM, AppImage |\n| macOS | macOS | Host, Intel x64, Apple Silicon ARM64, Universal | APP, DMG |\n| Android | Host with compatible SDK/NDK | ARM64, ARMv7, x64, x86 | APK, AAB |\n| iOS | macOS | ARM64 device, ARM64 simulator, x64 simulator | iOS application; IPA for ARM64 devices |\n\nA plain EXE is an executable; NSIS/MSI are installers. AAB is an Android distribution package; use APK for direct installation. IPA requires a device target, signing, and provisioning.\n\n## Prerequisites\n\nAll native targets require **Rust/Cargo**, **rustup**, the target’s Rust toolchain, and **Tauri CLI 2**. The checklist requires Rust 1.77.2 or later; dependencies resolved during the build may require a newer version.\n\n| Target | Additional tools |\n| --- | --- |\n| Windows | Microsoft C++ Build Tools with Desktop development with C++, Windows SDK, and WebView2. MSI also uses VBScript support in the WiX toolchain. |\n| Linux | Compiler/linker, pkg-config, and development libraries for WebKitGTK 4.1, GTK3, OpenSSL, and Ayatana AppIndicator. AppImage uses patchelf. |\n| macOS | Xcode Command Line Tools and the selected Rust targets. |\n| Android | JDK 17+, Android SDK, Platform-Tools, Build-Tools, Command-line Tools, NDK, and Rust targets. Configure JAVA_HOME, ANDROID_HOME/ANDROID_SDK_ROOT, and NDK_HOME. |\n| iOS | Full Xcode, iOS SDK, CocoaPods, and Rust targets, on macOS. |\n\nThe IDE checks installed tools. Install the listed requirements and restart the IDE when its environment needs refreshing.\n\n## Network and signing\n\nIn **Allowed Network Origins**, add one exact HTTP(S) or WS(S) origin per line for services and media used in code. Application CSP and server CORS are separate settings; the backend must accept the WebView’s actual origin.\n\n**Signing references** stores references: Windows certificate thumbprint, Apple keychain identity/profile, Team ID, and environment variable names for the Android keystore. Certificates, key files, and passwords remain in the system or CI Secrets.\n\nPreview sessions are not transferred to the application. Log in through the WebView and confirm session persistence on the target.\n\n## Export to GitHub Actions\n\n1. Select a native platform in **Build Application**.\n2. Click **Export for GitHub Actions**.\n3. Add the exported content to your application repository.\n4. Review `.github/workflows/native-application.yml`, runners, and signing references.\n5. Configure Secrets/Environments and run the workflow on GitHub.\n\nThe export includes the compiled frontend and the Tauri project. It does not require a local native toolchain, but does not run the workflow or produce an installer. Export again after changing the WebRAD project. Use a Windows runner for Windows, Linux for Linux, and macOS for macOS/iOS.\n\n## Current limitations\n\nNative builds use the web runtime. They do not automatically add filesystem, camera, notification, or download plugins. Video, PDF, popups, storage, and web APIs need verification in the target WebView. Native packages do not use the PWA service worker.\n\n**Splash Screen** uses the platform’s default startup screen; custom images are not yet supported. Signing, notarization, installation, and store publishing require configuration and verification on the target. The available implementation does not certify every system and device.\n"
  }
}
