/** * useVyre — Core type utilities * * AI CONTEXT: * These types define the valid prop values for ALL useVyre components. * When generating component code, use these types for variant/size props. */ /** * Visual style variants available on interactive components. * Maps directly to --vyre-color-semantic-* tokens. * * - primary: High contrast, default CTA * - secondary: Subtle, bordered * - ghost: No background or border * - accent: Brand amber color — primary marketing CTA * - teal: Secondary accent — confirm, info * - danger: Destructive actions — delete, remove */ export type Variant = "primary" | "secondary" | "ghost" | "accent" | "teal" | "danger"; /** * Size scale used across Button, Input, Badge, etc. * * - sm: Compact UI, toolbars, dense layouts * - md: Default (omit for default) * - lg: Hero sections, prominent CTAs * - icon: Square, icon-only buttons */ export type Size = "sm" | "md" | "lg" | "icon"; /** * Form/input validation states. * Apply to .field wrapper, not the input itself. */ export type FieldState = "idle" | "error" | "success" | "warning"; /** * Badge-specific variants — extends color semantic tokens. */ export type BadgeVariant = "default" | "accent" | "teal" | "success" | "warning" | "danger"; /** * Makes a component polymorphic via `as` prop. * * @example * * */ export type AsProps = { as?: T; } & React.ComponentPropsWithoutRef; export type PolymorphicProps = Props & AsProps & { ref?: React.Ref>; }; export interface BaseProps { /** Additional CSS class names */ className?: string; /** Additional inline styles — use sparingly, prefer tokens */ style?: React.CSSProperties; /** Test ID for automated testing */ "data-testid"?: string; }