export type Type = | 'page' | 'section' | 'heading' | 'subheading' | 'paragraph' | 'label' | 'detail' | 'hint' | 'link' export type Color = | 'primary' | 'secondary' | 'success' | 'info' | 'warning' | 'error' | 'neutral' | 'muted' | 'none' export function useTypography(props: { class?: string ux?: string type: Type color?: Color margin?: boolean }) { return useStyling( 'typography', { slots: { base: '', }, variants: { type: { page: { base: 'text-4xl font-bold tracking-tight leading-tight' }, section: { base: 'text-3xl font-semibold tracking-tight leading-snug' }, heading: { base: 'text-2xl font-semibold leading-snug' }, subheading: { base: 'text-xl font-medium leading-snug' }, paragraph: { base: 'text-lg leading-relaxed' }, label: { base: 'text-lg font-bold leading-none' }, detail: { base: 'text-base leading-snug' }, hint: { base: 'text-base leading-snug' }, link: { base: 'text-base leading-snug' }, }, color: { primary: { base: 'text-primary-600' }, secondary: { base: 'text-secondary-600' }, success: { base: 'text-success-600' }, info: { base: 'text-info-600' }, warning: { base: 'text-warning-700' }, error: { base: 'text-error-600' }, neutral: { base: 'text-neutral-800' }, muted: { base: 'text-neutral-500' }, none: {}, }, margin: { true: {}, false: {}, }, }, compoundVariants: [ { type: 'page', margin: true, class: { base: 'mb-4' }, }, { type: 'section', margin: true, class: { base: 'mb-4' }, }, { type: 'heading', margin: true, class: { base: 'mb-3' }, }, { type: 'subheading', margin: true, class: { base: 'mb-2' }, }, { type: 'paragraph', margin: true, class: { base: 'mb-4' }, }, { type: 'label', margin: true, class: { base: 'mb-2' }, }, ], defaultVariants: { color: props.type === 'link' ? 'none' : 'neutral', margin: true, }, }, props ) }