From 07b44f6de48e27fa053eb8caa4a6139b3360607d Mon Sep 17 00:00:00 2001 From: Matthew L McPeak Date: Mon, 13 Jul 2026 18:13:23 -0400 Subject: [PATCH] refactor: rewrite RadioGroup without reka-ui Uses a small provide/inject context plus useRovingFocus for arrow-key selection. data-state/aria-checked contract is unchanged. --- .../components/ui/radio-group/RadioGroup.vue | 71 +++++++++++++++---- .../ui/radio-group/RadioGroupItem.vue | 62 ++++++++++------ .../src/components/ui/radio-group/context.ts | 11 +++ 3 files changed, 109 insertions(+), 35 deletions(-) create mode 100644 packages/library/src/components/ui/radio-group/context.ts diff --git a/packages/library/src/components/ui/radio-group/RadioGroup.vue b/packages/library/src/components/ui/radio-group/RadioGroup.vue index 7f35f19..e878126 100644 --- a/packages/library/src/components/ui/radio-group/RadioGroup.vue +++ b/packages/library/src/components/ui/radio-group/RadioGroup.vue @@ -1,25 +1,68 @@ diff --git a/packages/library/src/components/ui/radio-group/RadioGroupItem.vue b/packages/library/src/components/ui/radio-group/RadioGroupItem.vue index 18960ab..d398817 100644 --- a/packages/library/src/components/ui/radio-group/RadioGroupItem.vue +++ b/packages/library/src/components/ui/radio-group/RadioGroupItem.vue @@ -1,41 +1,61 @@ diff --git a/packages/library/src/components/ui/radio-group/context.ts b/packages/library/src/components/ui/radio-group/context.ts new file mode 100644 index 0000000..d23b280 --- /dev/null +++ b/packages/library/src/components/ui/radio-group/context.ts @@ -0,0 +1,11 @@ +import type { InjectionKey, Ref } from 'vue' + +export interface RadioGroupContext { + modelValue: Ref + disabled: Ref + items: Ref + register: (el: HTMLElement) => void + unregister: (el: HTMLElement) => void +} + +export const RadioGroupContextKey: InjectionKey = Symbol('RadioGroupContext')