{
    "title": "Input Data",
    "description": "A horizontal navigation bar widget for creating top-level dashboard navigation. Use this widget to provide consistent navigation across dashboard pages with a clickable title and multiple navigation items. Each item can have an icon and routes to different dashboard sections. Supports customizable styling for font size, weight, and colors. Ideal for multi-page dashboards requiring clear navigation structure and branding.",
    "type": "object",
    "properties": {
        "title": {
            "title": "Title Settings",
            "description": "The main title/brand text displayed in the navigation bar, typically on the left side. Often used for logo text or application name.",
            "order": 1,
            "type": "string"
        },
        "route": {
            "title": "Title Navigation",
            "order": 3,
            "description": "The destination path when the title is clicked. Supports two dynamic substitution mechanisms: (1) Variable placeholders using double curly braces — define variables in the 'Title Navigation Variables' array below and reference them as {{variableName}} in the route string (e.g., '/device/{{deviceId}}/details' where a variable with label 'deviceId' provides the value). (2) Wildcard segments using a single asterisk '*' as a full path segment — each '*' is replaced at runtime by the segment at the same position from the current browser route (e.g., '/*/settings' navigates to the settings page while preserving the first segment of the current URL). The '*' must be the entire segment to be substituted; partial wildcards like 'test*' are treated as literal text. Routes starting with '/' are absolute; routes without a leading slash are relative to the current location.",
            "type": "string"
        },
        "variables": {
            "title": "Title Navigation Variables",
            "description": "Array of variable definitions for dynamic route segment substitution. Each variable has a label (used in the route string as {{label}}) and a value (the replacement text). Values can be static or bound to data columns for real-time updates.",
            "type": "array",
            "dataDrivenDisabled": true,
            "order": 4,
            "items": {
                "type": "object",
                "properties": {
                    "label": {
                        "title": "Label",
                        "description": "The variable name used in the route string. Reference this in your route using the {{label}} syntax. Use descriptive names like 'temperature', 'status', 'deviceName'.",
                        "type": "string",
                        "order": 1
                    },
                    "value": {
                        "title": "Value",
                        "description": "The replacement text that will appear in place of {{label}} in the rendered output. Can be a static value or bound to a data column for dynamic updates.",
                        "type": "string",
                        "order": 2
                    }
                }
            }
        },
        "style": {
            "title": "Item Style",
            "description": "Global styling options applied to all navigation items in the bar.",
            "order": 6,
            "type": "object",
            "properties": {
                "fontSize": {
                    "title": "Font Size",
                    "description": "Font size in pixels for navigation item labels.",
                    "order": 1,
                    "dataDrivenDisabled": true,
                    "type": "number"
                },
                "fontWeight": {
                    "title": "Font Weight",
                    "description": "Font weight for navigation items (100=thin, 400=normal, 700=bold, 900=black).",
                    "order": 3,
                    "dataDrivenDisabled": true,
                    "type": "number"
                },
                "color": {
                    "title": "Font Color",
                    "description": "Text color for navigation item labels.",
                    "order": 4,
                    "type": "color",
                    "dataDrivenDisabled": true
                },
                "backgroundColor": {
                    "title": "Background Color",
                    "description": "Background color of the navigation bar.",
                    "order": 4,
                    "type": "color",
                    "dataDrivenDisabled": true
                }
            }
        },
        "navItems": {
            "title": "Navigation Items",
            "description": "Array of clickable navigation links displayed in the navigation bar. Each item can have a label, icon, and destination route.",
            "order": 7,
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "label": {
                        "title": "Label",
                        "description": "The text displayed for this navigation item. Should be short and descriptive (e.g., 'Dashboard', 'Settings', 'Reports').",
                        "order": 1,
                        "type": "string"
                    },
                    "iconName": {
                        "title": "Icon Name",
                        "order": 2,
                        "description": "Material icon name to display alongside the label. Find icon names at https://fonts.google.com/icons (e.g., 'home', 'settings', 'dashboard', 'analytics').",
                        "dataDrivenDisabled": true,
                        "type": "string"
                    },
                    "route": {
                        "title": "Navigation Route",
                        "order": 3,
                        "description": "The destination path when this item is clicked. Supports two dynamic substitution mechanisms: (1) Variable placeholders using double curly braces — define variables in the 'Variables' array below and reference them as {{variableName}} in the route string (e.g., '/device/{{deviceId}}/details' where a variable with label 'deviceId' provides the value). (2) Wildcard segments using a single asterisk '*' as a full path segment — each '*' is replaced at runtime by the segment at the same position from the current browser route (e.g., '/*/settings' navigates to the settings page while preserving the first segment of the current URL). The '*' must be the entire segment to be substituted; partial wildcards like 'test*' are treated as literal text. Routes starting with '/' are absolute; routes without a leading slash are relative to the current location.",
                        "type": "string"
                    },
                    "variables": {
                        "title": "Navigation Variables",
                        "description": "Array of variable definitions for dynamic route segment substitution. Each variable has a label (used in the route string as {{label}}) and a value (the replacement text). Values can be static or bound to data columns for real-time updates.",
                        "type": "array",
                        "dataDrivenDisabled": true,
                        "order": 4,
                        "items": {
                            "type": "object",
                            "properties": {
                                "label": {
                                    "title": "Label",
                                    "description": "The variable name used in the route string. Reference this in your route using the {{label}} syntax. Use descriptive names like 'temperature', 'status', 'deviceName'.",
                                    "type": "string",
                                    "order": 1
                                },
                                "value": {
                                    "title": "Value",
                                    "description": "The replacement text that will appear in place of {{label}} in the rendered output. Can be a static value or bound to a data column for dynamic updates.",
                                    "type": "string",
                                    "order": 2
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
