const ButtonOptionsSchema = z.object({
variant: z.enum(['primary', 'secondary', 'outline', 'ghost', 'danger', 'success', 'link']).optional(),
size: z.enum(['xs', 'sm', 'md', 'lg', 'xl']).optional(),
type: z.enum(['button', 'submit', 'reset']).optional(),
disabled: z.boolean().optional(),
loading: z.boolean().optional(),
fullWidth: z.boolean().optional(),
iconBefore: z.string().optional(),
iconAfter: z.string().optional(),
iconOnly: z.boolean().optional(),
className: z.string().optional(),
id: z.string().optional(),
name: z.string().optional(),
value: z.string().optional(),
href: z.string().optional(),
target: z.string().optional(),
htmx: HtmxSchema.optional(),
data: z.record(z.string()).optional(),
ariaLabel: z.string().optional(),
}).strict();