{
  "name": "RadioGroup",
  "category": "Forms",
  "subcategory": "Selection",
  "description": "Grouped radio buttons with horizontal or vertical layout.",
  "thumbnail": "/preview-cards/radio-group.png",
  "hasDocsPage": true,
  "nugetPackage": "Lumeo",
  "files": [
    "UI/RadioGroup/RadioGroup.razor",
    "UI/RadioGroup/RadioGroupCard.razor",
    "UI/RadioGroup/RadioGroupItem.razor"
  ],
  "dependencies": [],
  "packageDependencies": [],
  "cssVars": [
    "--color-accent",
    "--color-border",
    "--color-destructive",
    "--color-muted",
    "--color-muted-foreground",
    "--color-primary",
    "--color-ring",
    "--radius"
  ],
  "api": {
    "name": "RadioGroup",
    "category": "Forms",
    "subcategory": "Selection",
    "description": "Grouped radio buttons with horizontal or vertical layout.",
    "nugetPackage": "Lumeo",
    "files": [
      "UI/RadioGroup/RadioGroup.razor",
      "UI/RadioGroup/RadioGroupCard.razor",
      "UI/RadioGroup/RadioGroupItem.razor"
    ],
    "namespace": "Lumeo",
    "inheritsFrom": null,
    "implements": [],
    "parameters": [
      {
        "name": "FormField",
        "type": "FormField.FormFieldContext?",
        "default": null,
        "description": null,
        "isCascading": true,
        "captureUnmatched": false
      },
      {
        "name": "Required",
        "type": "bool",
        "default": null,
        "description": null,
        "isCascading": false,
        "captureUnmatched": false
      },
      {
        "name": "Invalid",
        "type": "bool",
        "default": null,
        "description": null,
        "isCascading": false,
        "captureUnmatched": false
      },
      {
        "name": "ErrorText",
        "type": "string?",
        "default": null,
        "description": null,
        "isCascading": false,
        "captureUnmatched": false
      },
      {
        "name": "HelperText",
        "type": "string?",
        "default": null,
        "description": null,
        "isCascading": false,
        "captureUnmatched": false
      },
      {
        "name": "Label",
        "type": "string?",
        "default": null,
        "description": null,
        "isCascading": false,
        "captureUnmatched": false
      },
      {
        "name": "Name",
        "type": "string?",
        "default": null,
        "description": null,
        "isCascading": false,
        "captureUnmatched": false
      },
      {
        "name": "ChildContent",
        "type": "RenderFragment?",
        "default": null,
        "description": null,
        "isCascading": false,
        "captureUnmatched": false
      },
      {
        "name": "Value",
        "type": "string?",
        "default": null,
        "description": null,
        "isCascading": false,
        "captureUnmatched": false
      },
      {
        "name": "ValueChanged",
        "type": "EventCallback<string>",
        "default": null,
        "description": null,
        "isCascading": false,
        "captureUnmatched": false
      },
      {
        "name": "AriaLabel",
        "type": "string?",
        "default": null,
        "description": null,
        "isCascading": false,
        "captureUnmatched": false
      },
      {
        "name": "AriaLabelledBy",
        "type": "string?",
        "default": null,
        "description": null,
        "isCascading": false,
        "captureUnmatched": false
      },
      {
        "name": "Class",
        "type": "string?",
        "default": null,
        "description": null,
        "isCascading": false,
        "captureUnmatched": false
      },
      {
        "name": "AdditionalAttributes",
        "type": "Dictionary<string, object>?",
        "default": null,
        "description": null,
        "isCascading": false,
        "captureUnmatched": true
      }
    ],
    "events": [
      {
        "name": "ValueChanged",
        "type": "EventCallback<string>",
        "description": null
      }
    ],
    "enums": [],
    "records": [
      {
        "name": "RadioGroupContext",
        "signature": "RadioGroupContext(\n        string? Value,\n        EventCallback<string> OnSelect,\n        List<string> ItemValues,\n        Dictionary<string, string> ItemIds)",
        "description": null
      }
    ],
    "cssVars": [
      "--color-accent",
      "--color-border",
      "--color-destructive",
      "--color-muted",
      "--color-muted-foreground",
      "--color-primary",
      "--color-ring",
      "--radius"
    ],
    "examples": [
      {
        "title": "Default",
        "code": "<RadioGroup @bind-Value=\"_selected\">\n    <Flex Gap=\"2\" Align=\"center\">\n        <RadioGroupItem Value=\"default\" />\n        <Label>Default</Label>\n    </Flex>\n    <Flex Gap=\"2\" Align=\"center\">\n        <RadioGroupItem Value=\"comfortable\" />\n        <Label>Comfortable</Label>\n    </Flex>\n    <Flex Gap=\"2\" Align=\"center\">\n        <RadioGroupItem Value=\"compact\" />\n        <Label>Compact</Label>\n    </Flex>\n</RadioGroup>"
      },
      {
        "title": "Pricing Plan",
        "code": "<RadioGroup @bind-Value=\"_plan\" Class=\"grid grid-cols-3 gap-2\">\n    @foreach (var p in new[] { (\"free\", \"Free\", \"$0\"), (\"pro\", \"Pro\", \"$15\"), (\"team\", \"Team\", \"$49\") })\n    {\n        <label class=\"@($\"flex flex-col items-center rounded-md border p-3 cursor-pointer {(_plan == p.Item1 ? \\\"border-primary\\\" : \\\"border-muted\\\")}\")>\n            <RadioGroupItem Value=\"@p.Item1\" Class=\"sr-only\" />\n            <Lumeo.Text As=\"span\" Size=\"sm\" Weight=\"semibold\">@p.Item2</Lumeo.Text>\n            <Lumeo.Text As=\"span\" Size=\"xs\" Color=\"muted\">@p.Item3/mo</Lumeo.Text>\n        </label>\n    }\n</RadioGroup>"
      },
      {
        "title": "With Form Field",
        "code": "<FormField Name=\"plan\">\n    <FormItem>\n        <FormLabel>Notification preference</FormLabel>\n        <RadioGroup @bind-Value=\"_notification\">\n            <Flex Gap=\"2\" Align=\"center\">\n                <RadioGroupItem Value=\"all\" />\n                <Label>All notifications</Label>\n            </Flex>\n            <Flex Gap=\"2\" Align=\"center\">\n                <RadioGroupItem Value=\"mentions\" />\n                <Label>Mentions only</Label>\n            </Flex>\n        </RadioGroup>\n        <FormDescription>Choose how you want to be notified.</FormDescription>\n    </FormItem>\n</FormField>"
      }
    ],
    "subComponents": {
      "RadioGroupCard": {
        "componentName": "RadioGroupCard",
        "fileName": "RadioGroupCard.razor",
        "namespace": "Lumeo",
        "inheritsFrom": null,
        "implements": [],
        "parameters": [
          {
            "name": "Context",
            "type": "RadioGroup.RadioGroupContext",
            "default": "default!",
            "description": null,
            "isCascading": true,
            "captureUnmatched": false
          },
          {
            "name": "ChildContent",
            "type": "RenderFragment?",
            "default": null,
            "description": null,
            "isCascading": false,
            "captureUnmatched": false
          },
          {
            "name": "Value",
            "type": "string",
            "default": "\"\"",
            "description": null,
            "isCascading": false,
            "captureUnmatched": false
          },
          {
            "name": "Class",
            "type": "string?",
            "default": null,
            "description": null,
            "isCascading": false,
            "captureUnmatched": false
          },
          {
            "name": "AdditionalAttributes",
            "type": "Dictionary<string, object>?",
            "default": null,
            "description": null,
            "isCascading": false,
            "captureUnmatched": true
          }
        ],
        "events": [],
        "enums": [],
        "records": [],
        "parseFailed": false,
        "parseError": null
      },
      "RadioGroupItem": {
        "componentName": "RadioGroupItem",
        "fileName": "RadioGroupItem.razor",
        "namespace": "Lumeo",
        "inheritsFrom": null,
        "implements": [],
        "parameters": [
          {
            "name": "Context",
            "type": "RadioGroup.RadioGroupContext",
            "default": "default!",
            "description": null,
            "isCascading": true,
            "captureUnmatched": false
          },
          {
            "name": "Value",
            "type": "string",
            "default": "\"\"",
            "description": null,
            "isCascading": false,
            "captureUnmatched": false
          },
          {
            "name": "Disabled",
            "type": "bool",
            "default": null,
            "description": null,
            "isCascading": false,
            "captureUnmatched": false
          },
          {
            "name": "Description",
            "type": "string?",
            "default": null,
            "description": null,
            "isCascading": false,
            "captureUnmatched": false
          },
          {
            "name": "ChildContent",
            "type": "RenderFragment?",
            "default": null,
            "description": null,
            "isCascading": false,
            "captureUnmatched": false
          },
          {
            "name": "Class",
            "type": "string?",
            "default": null,
            "description": null,
            "isCascading": false,
            "captureUnmatched": false
          },
          {
            "name": "AdditionalAttributes",
            "type": "Dictionary<string, object>?",
            "default": null,
            "description": null,
            "isCascading": false,
            "captureUnmatched": true
          }
        ],
        "events": [],
        "enums": [],
        "records": [],
        "parseFailed": false,
        "parseError": null
      }
    },
    "parseFailed": false,
    "parseError": null
  },
  "$schema": "https://lumeo.nativ.sh/registry-component-schema.json",
  "key": "radio-group",
  "docsUrl": "https://lumeo.nativ.sh/components/radio-group",
  "sourceUrl": [
    {
      "file": "UI/RadioGroup/RadioGroup.razor",
      "url": "https://github.com/Brain2k-0005/Lumeo/tree/master/src/Lumeo/UI/RadioGroup/RadioGroup.razor"
    },
    {
      "file": "UI/RadioGroup/RadioGroupCard.razor",
      "url": "https://github.com/Brain2k-0005/Lumeo/tree/master/src/Lumeo/UI/RadioGroup/RadioGroupCard.razor"
    },
    {
      "file": "UI/RadioGroup/RadioGroupItem.razor",
      "url": "https://github.com/Brain2k-0005/Lumeo/tree/master/src/Lumeo/UI/RadioGroup/RadioGroupItem.razor"
    }
  ],
  "source": [
    {
      "path": "UI/RadioGroup/RadioGroup.razor",
      "content": "@namespace Lumeo\n\n@{\n    var context = new RadioGroupContext(Value, EventCallback.Factory.Create<string>(this, OnValueSelected), _itemValues, _itemIds);\n}\n\n@if (Label is not null && !InsideFormField)\n{\n    <label class=\"text-sm font-medium leading-none\">\n        @Label\n        @if (Required)\n        {\n            <span class=\"text-destructive ml-0.5\">*</span>\n        }\n    </label>\n}\n\n<div role=\"radiogroup\"\n     aria-label=\"@AriaLabel\"\n     aria-labelledby=\"@AriaLabelledBy\"\n     aria-required=\"@Required.ToString().ToLower()\"\n     aria-invalid=\"@EffectiveInvalid.ToString().ToLower()\"\n     class=\"@CssClass\"\n     @attributes=\"AdditionalAttributes\">\n    <CascadingValue Value=\"context\" IsFixed=\"false\">\n        @ChildContent\n    </CascadingValue>\n</div>\n\n@if (!InsideFormField)\n{\n    @if (EffectiveInvalid && ErrorText is not null)\n    {\n        <p class=\"text-xs text-destructive\">@ErrorText</p>\n    }\n    else if (HelperText is not null)\n    {\n        <p class=\"text-xs text-muted-foreground\">@HelperText</p>\n    }\n}\n\n@code {\n    [CascadingParameter] private FormField.FormFieldContext? FormField { get; set; }\n\n    [Parameter] public bool Required { get; set; }\n    [Parameter] public bool Invalid { get; set; }\n    [Parameter] public string? ErrorText { get; set; }\n    [Parameter] public string? HelperText { get; set; }\n    [Parameter] public string? Label { get; set; }\n    [Parameter] public string? Name { get; set; }\n\n    private bool EffectiveInvalid => Invalid || FormField?.HasError == true;\n    private bool InsideFormField => FormField is not null;\n\n    [Parameter] public RenderFragment? ChildContent { get; set; }\n    [Parameter] public string? Value { get; set; }\n    [Parameter] public EventCallback<string> ValueChanged { get; set; }\n    [Parameter] public string? AriaLabel { get; set; }\n    [Parameter] public string? AriaLabelledBy { get; set; }\n    [Parameter] public string? Class { get; set; }\n    [Parameter(CaptureUnmatchedValues = true)] public Dictionary<string, object>? AdditionalAttributes { get; set; }\n\n    private readonly List<string> _itemValues = new();\n    private readonly Dictionary<string, string> _itemIds = new();\n\n    private string CssClass => $\"grid gap-2 {(EffectiveInvalid ? \"text-destructive\" : \"\")} {Class}\".Trim();\n\n    private async Task OnValueSelected(string value)\n    {\n        Value = value;\n        await ValueChanged.InvokeAsync(value);\n    }\n\n    public record RadioGroupContext(\n        string? Value,\n        EventCallback<string> OnSelect,\n        List<string> ItemValues,\n        Dictionary<string, string> ItemIds);\n}\n"
    },
    {
      "path": "UI/RadioGroup/RadioGroupCard.razor",
      "content": "@namespace Lumeo\n\n<button type=\"button\"\n        id=\"@_itemId\"\n        role=\"radio\"\n        aria-checked=\"@IsSelected.ToString().ToLower()\"\n        tabindex=\"@Tabindex\"\n        class=\"@CssClass\"\n        @onclick=\"Select\"\n        @onkeydown=\"HandleKeyDown\"\n        @onkeydown:preventDefault=\"@_preventKey\"\n        @attributes=\"AdditionalAttributes\">\n    @ChildContent\n</button>\n\n@inject ComponentInteropService Interop\n\n@code {\n    [CascadingParameter] public RadioGroup.RadioGroupContext Context { get; set; } = default!;\n    [Parameter] public RenderFragment? ChildContent { get; set; }\n    [Parameter, EditorRequired] public string Value { get; set; } = \"\";\n    [Parameter] public string? Class { get; set; }\n    [Parameter(CaptureUnmatchedValues = true)] public Dictionary<string, object>? AdditionalAttributes { get; set; }\n\n    private readonly string _itemId = $\"radio-card-{Guid.NewGuid():N}\";\n    private bool IsSelected => Context.Value == Value;\n    private bool _preventKey;\n\n    private int Tabindex\n    {\n        get\n        {\n            if (Context.Value == Value) return 0;\n            if (string.IsNullOrEmpty(Context.Value) && Context.ItemValues.FirstOrDefault() == Value) return 0;\n            return -1;\n        }\n    }\n\n    private string CssClass => string.Join(\" \", new[] { \"flex cursor-pointer rounded-lg border-2 p-4 text-left transition-colors hover:bg-accent\", IsSelected ? \"border-primary bg-primary/5\" : \"border-border\", Class }.Where(s => !string.IsNullOrWhiteSpace(s)));\n\n    protected override void OnInitialized()\n    {\n        if (!Context.ItemValues.Contains(Value))\n            Context.ItemValues.Add(Value);\n        Context.ItemIds[Value] = _itemId;\n    }\n\n    private async Task Select() => await Context.OnSelect.InvokeAsync(Value);\n\n    private async Task HandleKeyDown(KeyboardEventArgs e)\n    {\n        var items = Context.ItemValues;\n        var idx = items.IndexOf(Value);\n\n        string? nextValue = e.Key switch\n        {\n            \"ArrowDown\" or \"ArrowRight\" => idx < items.Count - 1 ? items[idx + 1] : items[0],\n            \"ArrowUp\"   or \"ArrowLeft\"  => idx > 0 ? items[idx - 1] : items[^1],\n            _ => null\n        };\n\n        _preventKey = e.Key is \"ArrowDown\" or \"ArrowRight\" or \"ArrowUp\" or \"ArrowLeft\";\n\n        if (nextValue is not null)\n        {\n            await Context.OnSelect.InvokeAsync(nextValue);\n            if (Context.ItemIds.TryGetValue(nextValue, out var nextId))\n            {\n                await Interop.FocusElement(nextId);\n            }\n        }\n        else if (e.Key == \" \")\n        {\n            await Select();\n        }\n    }\n}\n"
    },
    {
      "path": "UI/RadioGroup/RadioGroupItem.razor",
      "content": "@namespace Lumeo\n\n@if (!string.IsNullOrEmpty(Description))\n{\n    <div class=\"flex items-start gap-2\">\n        <button type=\"button\"\n                id=\"@_itemId\"\n                role=\"radio\"\n                aria-checked=\"@IsSelected.ToString().ToLower()\"\n                tabindex=\"@Tabindex\"\n                class=\"@CssClass\"\n                @onclick=\"Select\"\n                @onkeydown=\"HandleKeyDown\"\n                @onkeydown:preventDefault=\"@_preventKey\"\n                disabled=\"@Disabled\"\n                @attributes=\"AdditionalAttributes\">\n            @if (IsSelected)\n            {\n                <span class=\"flex h-2 w-2 rounded-full bg-current\"></span>\n            }\n        </button>\n        <div class=\"grid gap-0.5 leading-none\">\n            @if (ChildContent is not null)\n            {\n                @ChildContent\n            }\n            <p class=\"text-xs text-muted-foreground mt-0.5\">@Description</p>\n        </div>\n    </div>\n}\nelse\n{\n    <button type=\"button\"\n            id=\"@_itemId\"\n            role=\"radio\"\n            aria-checked=\"@IsSelected.ToString().ToLower()\"\n            tabindex=\"@Tabindex\"\n            class=\"@CssClass\"\n            @onclick=\"Select\"\n            @onkeydown=\"HandleKeyDown\"\n            @onkeydown:preventDefault=\"@_preventKey\"\n            disabled=\"@Disabled\"\n            @attributes=\"AdditionalAttributes\">\n        @if (IsSelected)\n        {\n            <span class=\"flex h-2 w-2 rounded-full bg-current\"></span>\n        }\n    </button>\n}\n\n@inject ComponentInteropService Interop\n\n@code {\n    [CascadingParameter] public RadioGroup.RadioGroupContext Context { get; set; } = default!;\n    [Parameter, EditorRequired] public string Value { get; set; } = \"\";\n    [Parameter] public bool Disabled { get; set; }\n    [Parameter] public string? Description { get; set; }\n    [Parameter] public RenderFragment? ChildContent { get; set; }\n    [Parameter] public string? Class { get; set; }\n    [Parameter(CaptureUnmatchedValues = true)] public Dictionary<string, object>? AdditionalAttributes { get; set; }\n\n    private readonly string _itemId = $\"radio-{Guid.NewGuid():N}\";\n    private bool IsSelected => Context.Value == Value;\n    private bool _preventKey;\n\n    private int Tabindex\n    {\n        get\n        {\n            if (Context.Value == Value) return 0;\n            if (string.IsNullOrEmpty(Context.Value) && Context.ItemValues.FirstOrDefault() == Value) return 0;\n            return -1;\n        }\n    }\n\n    private string CssClass => $\"aspect-square h-4 w-4 shrink-0 cursor-pointer rounded-full border border-primary text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 flex items-center justify-center {Class}\".Trim();\n\n    protected override void OnInitialized()\n    {\n        if (!Context.ItemValues.Contains(Value))\n            Context.ItemValues.Add(Value);\n        Context.ItemIds[Value] = _itemId;\n    }\n\n    private async Task Select()\n    {\n        if (!Disabled)\n        {\n            await Context.OnSelect.InvokeAsync(Value);\n        }\n    }\n\n    private async Task HandleKeyDown(KeyboardEventArgs e)\n    {\n        var items = Context.ItemValues;\n        var idx = items.IndexOf(Value);\n\n        string? nextValue = e.Key switch\n        {\n            \"ArrowDown\" or \"ArrowRight\" => idx < items.Count - 1 ? items[idx + 1] : items[0],\n            \"ArrowUp\"   or \"ArrowLeft\"  => idx > 0 ? items[idx - 1] : items[^1],\n            _ => null\n        };\n\n        _preventKey = e.Key is \"ArrowDown\" or \"ArrowRight\" or \"ArrowUp\" or \"ArrowLeft\";\n\n        if (nextValue is not null && !Disabled)\n        {\n            await Context.OnSelect.InvokeAsync(nextValue);\n            if (Context.ItemIds.TryGetValue(nextValue, out var nextId))\n            {\n                await Interop.FocusElement(nextId);\n            }\n        }\n        else if (e.Key == \" \")\n        {\n            await Select();\n        }\n    }\n}\n"
    }
  ],
  "slots": [
    {
      "name": "ChildContent",
      "owner": "RadioGroup",
      "type": "RenderFragment?",
      "description": null
    },
    {
      "name": "ChildContent",
      "owner": "RadioGroupCard",
      "type": "RenderFragment?",
      "description": null
    },
    {
      "name": "ChildContent",
      "owner": "RadioGroupItem",
      "type": "RenderFragment?",
      "description": null
    }
  ],
  "serviceDependencies": [
    {
      "service": "ComponentInteropService",
      "namespace": ""
    }
  ],
  "cascadingDependencies": [
    {
      "name": "FormField",
      "type": "FormField.FormFieldContext?",
      "required": false
    },
    {
      "name": "Context",
      "type": "RadioGroup.RadioGroupContext",
      "required": true
    }
  ],
  "relatedComponents": [
    {
      "name": "RadioGroupCard",
      "reason": "sub-component"
    },
    {
      "name": "RadioGroupItem",
      "reason": "sub-component"
    }
  ],
  "keyboardInteractions": [
    {
      "key": " ",
      "action": "HandleKeyDown handles   in RadioGroupCard.razor"
    }
  ],
  "tests": [],
  "mdSummary": "# RadioGroup\n\nGrouped radio buttons with horizontal or vertical layout.\n\n**Package:** `Lumeo` · **Category:** Forms/Selection\n**Docs:** https://lumeo.nativ.sh/components/radio-group\n\n## Parameters\n| Owner | Name | Type | Default | Description |\n|---|---|---|---|---|\n| RadioGroup | FormField | `FormField.FormFieldContext?` | `` |  |\n| RadioGroup | Required | `bool` | `` |  |\n| RadioGroup | Invalid | `bool` | `` |  |\n| RadioGroup | ErrorText | `string?` | `` |  |\n| RadioGroup | HelperText | `string?` | `` |  |\n| RadioGroup | Label | `string?` | `` |  |\n| RadioGroup | Name | `string?` | `` |  |\n| RadioGroup | ChildContent | `RenderFragment?` | `` |  |\n| RadioGroup | Value | `string?` | `` |  |\n| RadioGroup | ValueChanged | `EventCallback<string>` | `` |  |\n| RadioGroup | AriaLabel | `string?` | `` |  |\n| RadioGroup | AriaLabelledBy | `string?` | `` |  |\n| RadioGroup | Class | `string?` | `` |  |\n| RadioGroup | AdditionalAttributes | `Dictionary<string, object>?` | `` |  |\n| RadioGroupCard | Context | `RadioGroup.RadioGroupContext` | `default!` |  |\n| RadioGroupCard | ChildContent | `RenderFragment?` | `` |  |\n| RadioGroupCard | Value | `string` | `\"\"` |  |\n| RadioGroupCard | Class | `string?` | `` |  |\n| RadioGroupCard | AdditionalAttributes | `Dictionary<string, object>?` | `` |  |\n| RadioGroupItem | Context | `RadioGroup.RadioGroupContext` | `default!` |  |\n| RadioGroupItem | Value | `string` | `\"\"` |  |\n| RadioGroupItem | Disabled | `bool` | `` |  |\n| RadioGroupItem | Description | `string?` | `` |  |\n| RadioGroupItem | ChildContent | `RenderFragment?` | `` |  |\n| RadioGroupItem | Class | `string?` | `` |  |\n| RadioGroupItem | AdditionalAttributes | `Dictionary<string, object>?` | `` |  |\n\n## Slots\n- `ChildContent` (RadioGroup) — RenderFragment slot\n- `ChildContent` (RadioGroupCard) — RenderFragment slot\n- `ChildContent` (RadioGroupItem) — RenderFragment slot\n\n## Events\n- `ValueChanged` (`EventCallback<string>`)\n\n## Sub-components\n- `RadioGroupCard`, `RadioGroupItem`\n\n## Cascading values it expects\n- `FormField` (`FormField.FormFieldContext?`)\n- `Context` (`RadioGroup.RadioGroupContext`)\n\n## Services it injects\n- `ComponentInteropService` ()\n\n## Keyboard\n- ` ` — HandleKeyDown handles   in RadioGroupCard.razor\n\n## Example\n```razor\n<RadioGroup />\n```\n\n## CSS variables\n`--color-accent`, `--color-border`, `--color-destructive`, `--color-muted`, `--color-muted-foreground`, `--color-primary`, `--color-ring`, `--radius`\n\n## Files\n- `UI/RadioGroup/RadioGroup.razor`\n- `UI/RadioGroup/RadioGroupCard.razor`\n- `UI/RadioGroup/RadioGroupItem.razor`\n"
}