/**
* TailwindCSS Class Helpers
*
* Standard class patterns for consistent widget styling across the application.
* These utilities promote reusability and visual consistency while maintaining
* accessibility standards.
*
* @module tailwindClassHelpers
*/
/**
* Standard class patterns for consistent widget styling
*
* These patterns use Tailwind utility classes and design tokens from designTokens.ts
* to ensure visual consistency across all widgets.
*
* @example
* ```tsx
* import { WidgetClasses, cn } from '@/utils/tailwindClassHelpers';
*
* function MyWidget() {
* return (
*
*
Widget Title
*
*
Content 1
*
Content 2
*
*
* );
* }
* ```
*/
export declare const WidgetClasses: {
/**
* Standard widget container with rounded corners, border, shadow, and padding
* Uses design tokens for consistent spacing and elevation
*/
readonly container: 'rounded-md border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800 shadow-md p-lg';
/**
* Hover effect for interactive containers
* Increases shadow on hover with smooth transition
*/
readonly containerHover: 'hover:shadow-lg transition-shadow duration-normal';
/**
* Standard section with bottom margin and vertical spacing
* Use for major content divisions within widgets
*/
readonly section: 'mb-lg space-y-md';
/**
* Section with left border accent
* Use for emphasized or highlighted sections
*/
readonly sectionBorder: 'border-l-4 border-primary pl-md';
/**
* Primary heading style for widget titles
* Uses design token typography and semantic colors
*/
readonly heading: 'text-subheading font-semibold text-gray-800 dark:text-gray-100 mb-md';
/**
* Secondary heading for subsections
* Smaller and medium weight for content hierarchy
*/
readonly subheading: 'text-body-lg font-medium text-gray-700 dark:text-gray-200 mb-sm';
/**
* Standard body text style
* Use for primary content and descriptions
*/
readonly body: 'text-body text-gray-600 dark:text-gray-400';
/**
* Small label text for form labels and metadata
* Uppercase with tracking for emphasis
*/
readonly label: 'text-caption font-medium text-gray-500 dark:text-gray-500 uppercase tracking-wide';
/**
* Small label text for form labels and metadata in normal case
* Use this when label text should preserve its original casing
* instead of being forced to uppercase.
*/
readonly labelNormal: 'text-caption font-medium text-gray-500 dark:text-gray-500 tracking-wide';
/**
* Standard card container for nested content
* Lighter background to distinguish from main container
*/
readonly card: 'rounded-md border border-gray-200 dark:border-gray-600 p-md bg-gray-50 dark:bg-gray-700';
/**
* White card container with clean appearance
* Use for primary content cards and widget sections
*/
readonly cardWhite: 'rounded-lg border border-gray-100 dark:border-gray-700 p-sm bg-white dark:bg-gray-800';
/**
* Interactive card with hover effect
* Use for clickable cards and list items
*/
readonly cardInteractive: 'hover:bg-gray-100 dark:hover:bg-gray-600 cursor-pointer transition-colors duration-fast';
/**
* Primary button style
* High contrast for main actions
*/
readonly buttonPrimary: 'bg-primary hover:bg-primary-dark text-white font-medium py-sm px-md rounded-md transition-colors duration-fast focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2';
/**
* Secondary button style
* Lower contrast for alternative actions
*/
readonly buttonSecondary: 'bg-gray-200 dark:bg-gray-600 hover:bg-gray-300 dark:hover:bg-gray-500 text-gray-800 dark:text-gray-100 font-medium py-sm px-md rounded-md transition-colors duration-fast focus:outline-none focus:ring-2 focus:ring-gray-500 focus:ring-offset-2';
/**
* Two-column grid layout
* Stacks on mobile, 2 columns on medium+ screens
*/
readonly grid2Cols: 'grid grid-cols-1 md:grid-cols-2 gap-md';
/**
* Three-column grid layout
* Stacks on mobile, 2 columns on tablet, 3 columns on desktop
*/
readonly grid3Cols: 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-md';
/**
* Flexible row layout with wrapping
* Adjusts gap between items responsively
*/
readonly flexRow: 'flex flex-wrap gap-sm md:gap-md';
/**
* Hide on mobile, show on tablet and desktop
* Use for non-essential content on small screens
*/
readonly hideMobile: 'hidden md:block';
/**
* Show on mobile only, hide on tablet and desktop
* Use for mobile-optimized alternatives
*/
readonly hideDesktop: 'block md:hidden';
/**
* Responsive text sizing
* Smaller on mobile, larger on desktop
*/
readonly textResponsive: 'text-body md:text-body-lg';
/**
* Disabled state styling
* Reduced opacity and no pointer events
*/
readonly disabled: 'opacity-50 cursor-not-allowed pointer-events-none';
/**
* Loading state with pulse animation
* Use for skeleton screens and loading indicators
*/
readonly loading: 'animate-pulse';
/**
* Focus-visible ring for keyboard navigation
* Ensures accessibility compliance
*/
readonly focusVisible: 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2';
/**
* Standard badge styling
* Use with specific color variants
*/
readonly badge: 'inline-flex items-center px-sm py-xs text-caption font-medium rounded-sm';
/**
* Success badge (green)
*/
readonly badgeSuccess: 'bg-success text-white';
/**
* Warning badge (yellow)
*/
readonly badgeWarning: 'bg-warning text-gray-900';
/**
* Error badge (red)
*/
readonly badgeError: 'bg-error text-white';
/**
* Info badge (blue)
*/
readonly badgeInfo: 'bg-info text-white';
/**
* Neutral badge (gray)
*/
readonly badgeNeutral: 'bg-neutral text-white';
/**
* Horizontal divider
*/
readonly dividerHorizontal: 'border-t border-gray-200 dark:border-gray-700 my-md';
/**
* Vertical divider (for flex layouts)
*/
readonly dividerVertical: 'border-l border-gray-200 dark:border-gray-700 mx-md';
};
/**
* Combine Tailwind classes with proper handling of conditionals
*
* This utility function merges multiple class strings, filtering out
* falsy values (false, null, undefined) for conditional styling.
*
* @param classes - Variable number of class strings or conditional values
* @returns Combined class string with falsy values filtered out
*
* @example
* ```tsx
* // Basic usage
* cn('text-lg', 'font-bold') // 'text-lg font-bold'
*
* // Conditional classes
* cn('base-class', isActive && 'active-class', 'another-class')
* // Result: 'base-class active-class another-class' (if isActive is true)
* // Result: 'base-class another-class' (if isActive is false)
*
* // With null/undefined
* cn('text-lg', null, undefined, 'font-bold') // 'text-lg font-bold'
*
* // Practical example
* function Button({ primary, disabled }) {
* return (
*
* );
* }
* ```
*/
export declare function cn(...classes: (string | undefined | false | null)[]): string;
/**
* Type definitions for better TypeScript support
*/
export type WidgetClassKey = keyof typeof WidgetClasses;
//# sourceMappingURL=tailwindClassHelpers.d.ts.map