diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index eb9b79f5..0cbc5b8e 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -68,10 +68,10 @@ export type PropInputType = 'array' | 'object' | 'stringEnum' | 'primitiveArray' type StringLiteral = T extends string ? (string extends T ? never : T) : never type FilterStringLiteral = { - [K in keyof T]: T[K] extends StringLiteral ? K : never; + [K in keyof T]-?: NonNullable extends StringLiteral> ? K : never }[keyof T] -type ComboItem = keyof FilterStringLiteral | undefined +type ComboItem = FilterStringLiteral | undefined type Combo = [ComboItem, ComboItem] | [ComboItem] export type ComponentsDir = { diff --git a/playgrounds/vue/src/components/SupportedProps.vue b/playgrounds/vue/src/components/SupportedProps.vue index be110040..3b4dd823 100644 --- a/playgrounds/vue/src/components/SupportedProps.vue +++ b/playgrounds/vue/src/components/SupportedProps.vue @@ -5,6 +5,8 @@ const _props = defineProps<{ number?: number boolean?: boolean primitiveUnion?: string | number | boolean + requiredStringLiteral: 'primary' | 'secondary' + optionalStringLiteral?: 'small' | 'large' // Arrays stringArray?: string[] @@ -33,6 +35,7 @@ const _props = defineProps<{ }>() extendCompodiumMeta({ + combo: ['requiredStringLiteral', 'optionalStringLiteral'], defaultProps: { string: 'hello', primitiveUnion: 42,