{"version":3,"sources":["../src/index.ts","../src/core/verify.ts","../src/core/jwks.ts","../src/supabase/client.ts","../src/supabase/ensureUser.ts","../src/next/edge/handler.ts","../src/utils/env.ts","../src/ui/Authx.tsx","../node_modules/clsx/dist/clsx.mjs","../node_modules/tailwind-merge/src/lib/class-group-utils.ts","../node_modules/tailwind-merge/src/lib/lru-cache.ts","../node_modules/tailwind-merge/src/lib/parse-class-name.ts","../node_modules/tailwind-merge/src/lib/sort-modifiers.ts","../node_modules/tailwind-merge/src/lib/config-utils.ts","../node_modules/tailwind-merge/src/lib/merge-classlist.ts","../node_modules/tailwind-merge/src/lib/tw-join.ts","../node_modules/tailwind-merge/src/lib/create-tailwind-merge.ts","../node_modules/tailwind-merge/src/lib/from-theme.ts","../node_modules/tailwind-merge/src/lib/validators.ts","../node_modules/tailwind-merge/src/lib/default-config.ts","../node_modules/tailwind-merge/src/lib/merge-configs.ts","../node_modules/tailwind-merge/src/lib/extend-tailwind-merge.ts","../node_modules/tailwind-merge/src/lib/tw-merge.ts","../src/lib/utils.ts","../src/components/ui/button.tsx","../node_modules/@radix-ui/react-slot/src/slot.tsx","../node_modules/@radix-ui/react-compose-refs/src/compose-refs.tsx","../node_modules/class-variance-authority/dist/index.mjs","../src/components/ui/input.tsx","../src/components/ui/label.tsx","../node_modules/@radix-ui/react-label/src/label.tsx","../node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive/src/primitive.tsx","../src/components/ui/card.tsx"],"sourcesContent":["﻿export { verifyFirebaseIdToken } from './core/verify';\nexport type { FirebaseIdTokenPayload } from './core/types';\nexport { JWKS_URL, getGoogleJWKS } from './core/jwks';\n\nexport { makeAdminClient } from './supabase/client';\nexport type { SupabaseAdminClient, SupabaseConfig } from './supabase/client';\nexport { ensureSupabaseUser } from './supabase/ensureUser';\n\nexport { buildVerifyRouteHandler } from './next/edge/handler';\nexport type { VerifyRouteOptions } from './next/edge/handler';\n\nexport { getEnv } from './utils/env';\nexport { default as Authx } from './ui/Authx';\n\n// Export COUNTRIES constant for custom country configurations\nexport { COUNTRIES } from './ui/Authx';\n\nexport const version = '1.4.5';\n","﻿import { jwtVerify } from \"jose\";\nimport type { FirebaseIdTokenPayload } from \"./types\";\nimport { getGoogleJWKS } from \"./jwks\";\n\n/** Verify a Firebase ID token using Google JWKS and strict issuer/audience checks. */\nexport async function verifyFirebaseIdToken(idToken: string, projectId: string): Promise<FirebaseIdTokenPayload> {\n  const JWKS = getGoogleJWKS();\n  const { payload } = await jwtVerify(idToken, JWKS, {\n    issuer: `https://securetoken.google.com/${projectId}`,\n    audience: projectId,\n  });\n  return payload as FirebaseIdTokenPayload;\n}\r\n","﻿import { createRemoteJWKSet } from \"jose/jwks/remote\";\nimport type { JWTVerifyGetKey } from \"jose\";\n\nexport const JWKS_URL = \"https://www.googleapis.com/service_accounts/v1/jwk/securetoken@system.gserviceaccount.com\";\n\nexport type RemoteJWKSet = JWTVerifyGetKey;\n\nexport function getGoogleJWKS(): RemoteJWKSet {\n  return createRemoteJWKSet(new URL(JWKS_URL));\n}\r\n","﻿import { createClient, type SupabaseClient } from \"@supabase/supabase-js\";\n\nexport interface SupabaseConfig { url: string; serviceRoleKey: string }\nexport type SupabaseAdminClient = SupabaseClient;\n\nexport function makeAdminClient(config: SupabaseConfig): SupabaseAdminClient {\n  const { url, serviceRoleKey } = config;\n  return createClient(url, serviceRoleKey, {\n    auth: { autoRefreshToken: false, persistSession: false },\n  });\n}\r\n","﻿import type { SupabaseAdminClient } from \"./client\";\nimport type { FirebaseIdTokenPayload } from \"../core/types\";\n\nexport async function ensureSupabaseUser(admin: SupabaseAdminClient, claims: FirebaseIdTokenPayload) {\n  const uid = (claims.sub as string | undefined) ?? (claims.user_id as string | undefined);\n  const phone = claims.phone_number as string | undefined;\n  const email = claims.email as string | undefined;\n\n  if (!uid) throw new Error('Missing subject in token');\n\n  let user: any = null;\n\n  if (phone) {\n    const { data } = await (admin as any).auth.admin.listUsers();\n    user = data.users.find((u: any) => u.phone === phone) ?? null;\n  }\n\n  if (!user && email) {\n    const { data } = await (admin as any).auth.admin.listUsers({ page: 1, perPage: 200 });\n    user = data.users.find((u: any) => (u.email || '').toLowerCase() === email.toLowerCase()) ?? null;\n  }\n\n  if (!user) {\n    const { data, error } = await (admin as any).auth.admin.createUser({\n      email: email || undefined,\n      phone: phone || undefined,\n      email_confirm: !!email,\n      phone_confirm: !!phone,\n      user_metadata: { firebase_uid: uid, provider: 'firebase-phone' },\n      app_metadata: { roles: ['authenticated'] },\n    });\n    if (error) throw new Error('Failed to create user');\n    user = data.user;\n  } else {\n    const { data, error } = await (admin as any).auth.admin.updateUserById(user.id, {\n      user_metadata: { ...(user.user_metadata || {}), firebase_uid: uid, provider: 'firebase-phone' },\n      app_metadata: {\n        ...(user.app_metadata || {}),\n        roles: Array.from(new Set([...(user.app_metadata?.roles || []), 'authenticated'])),\n      },\n    });\n    if (error) throw new Error('Failed to update user');\n    user = data.user;\n  }\n\n  return user;\n}\r\n","﻿import { verifyFirebaseIdToken } from \"../../core/verify\";\nimport { makeAdminClient } from \"../../supabase/client\";\nimport { ensureSupabaseUser } from \"../../supabase/ensureUser\";\n\nexport interface VerifyRouteOptions {\n  projectId: string;\n  supabaseUrl: string;\n  supabaseServiceRoleKey: string;\n}\n\nfunction json(status: number, data: unknown) {\n  return new (globalThis as any).Response(JSON.stringify(data), {\n    status,\n    headers: {\n      \"content-type\": \"application/json\",\n      \"cache-control\": \"no-store\",\n    },\n  });\n}\n\nexport function buildVerifyRouteHandler(options: VerifyRouteOptions) {\n  const { projectId, supabaseUrl, supabaseServiceRoleKey } = options;\n  const admin = makeAdminClient({ url: supabaseUrl, serviceRoleKey: supabaseServiceRoleKey });\n\n  return async function handler(req: any) {\n    try {\n      const contentType = req?.headers?.get?.(\"content-type\") || \"\";\n      if (!contentType.includes(\"application/json\")) {\n        return json(415, { ok: false, error: \"Unsupported content type\" });\n      }\n\n      const body = await req.json().catch(() => null) as { idToken?: string } | null;\n      if (!body || typeof body.idToken !== \"string\" || body.idToken.length < 100) {\n        return json(400, { ok: false, error: \"Invalid payload\" });\n      }\n\n      // 1) Verify Firebase ID token\n      let payload: any;\n      try {\n        payload = await verifyFirebaseIdToken(body.idToken, projectId);\n      } catch {\n        return json(401, { ok: false, error: \"Invalid or expired Firebase ID token\" });\n      }\n\n      // 2) Ensure Supabase user with authenticated role\n      const user = await ensureSupabaseUser(admin as any, payload);\n\n      const uid = (payload.sub as string | undefined) ?? (payload.user_id as string | undefined);\n      const phoneNumber = payload.phone_number as string | undefined;\n      const email = payload.email as string | undefined;\n\n      return json(200, {\n        ok: true,\n        uid: uid ?? null,\n        phoneNumber: phoneNumber ?? null,\n        email: email ?? null,\n        supabaseUserId: user?.id ?? null,\n        note: \"Verified Firebase token and ensured Supabase user exists.\",\n      });\n    } catch (err) {\n      return json(500, { ok: false, error: \"Internal error\" });\n    }\n  };\n}\r\n","﻿export function getEnv(name: string, fallback?: string): string {\n  // Support both Node and Edge runtimes.\n  // In most environments, process.env is available; in edge-like runtimes it may be undefined.\n  // We defensively check globalThis and process presence.\n  const hasProcessEnv = typeof process !== 'undefined' && typeof process.env !== 'undefined';\n  const value = hasProcessEnv ? process.env[name] : undefined;\n\n  if (value != null && value !== '') return value;\n  if (fallback != null) return fallback;\n\n  throw new Error(`Missing required environment variable: ${name}`);\n}\n","\"use client\"\r\n\r\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\r\nimport { parsePhoneNumberFromString } from 'libphonenumber-js'\r\nimport { initializeApp, getApps, type FirebaseOptions } from 'firebase/app'\r\nimport { getAuth, RecaptchaVerifier, signInWithPhoneNumber, type ConfirmationResult } from 'firebase/auth'\r\nimport './Authx.css'\r\nimport { cn } from '@/lib/utils'\r\nimport { Button } from '@/components/ui/button'\r\nimport { Input } from '@/components/ui/input'\r\nimport { Label } from '@/components/ui/label'\r\nimport { Card, CardContent } from '@/components/ui/card'\r\n\r\nconst COUNTRIES = {\r\n  GB: { name: 'United Kingdom', dial: '+44', flag: '🇬🇧', min: 10, max: 10 },\r\n  US: { name: 'United States', dial: '+1', flag: '🇺🇸', min: 10, max: 10 },\r\n  AE: { name: 'United Arab Emirates', dial: '+971', flag: '🇦🇪', min: 9, max: 9 },\r\n  SA: { name: 'Saudi Arabia', dial: '+966', flag: '🇸🇦', min: 9, max: 9 },\r\n  DE: { name: 'Germany', dial: '+49', flag: '🇩🇪', min: 10, max: 11 },\r\n  FR: { name: 'France', dial: '+33', flag: '🇫🇷', min: 9, max: 9 },\r\n} as const\r\n\r\nexport { COUNTRIES }\r\n\r\nexport type CountryCode = keyof typeof COUNTRIES\r\n\r\n// Phase 1 Enhancement Types\r\nexport type ThemeType = 'light' | 'dark' | 'custom'\r\n\r\nexport type ColorScheme = {\r\n  primary?: string\r\n  secondary?: string\r\n  background?: string\r\n  text?: string\r\n  border?: string\r\n  error?: string\r\n  success?: string\r\n}\r\n\r\nexport type SizeVariant = 'sm' | 'md' | 'lg' | 'xl'\r\n\r\nexport type CustomLabels = {\r\n  phoneNumber?: string\r\n  sendCode?: string\r\n  enterCode?: string\r\n  verify?: string\r\n  placeholder?: string\r\n}\r\n\r\nexport type VisibilityControls = {\r\n  showLabels?: boolean\r\n  showFlags?: boolean\r\n  showDialCode?: boolean\r\n  hideCountryNames?: boolean\r\n}\r\n\r\n// Phase 2 Enhancement Types\r\nexport type LayoutVariant = 'vertical' | 'horizontal' | 'compact'\r\nexport type CountryPosition = 'left' | 'top' | 'separate'\r\nexport type ButtonPosition = 'bottom' | 'inline' | 'floating'\r\n\r\nexport type ComponentStyles = {\r\n  inputStyle?: React.CSSProperties\r\n  buttonStyle?: React.CSSProperties\r\n  cardStyle?: React.CSSProperties\r\n  countryBoxStyle?: React.CSSProperties\r\n  otpInputStyle?: React.CSSProperties\r\n}\r\n\r\nexport type CSSVariables = {\r\n  [key: string]: string\r\n}\r\n\r\nexport type ValidationConfig = {\r\n  showValidation?: boolean\r\n  validationStyle?: 'inline' | 'tooltip' | 'modal'\r\n  loadingSpinner?: React.ReactNode\r\n  successIcon?: React.ReactNode\r\n  errorIcon?: React.ReactNode\r\n}\r\n\r\n// Phase 3: Animation & Responsive Types\r\nexport type AnimationDuration = '150ms' | '200ms' | '250ms' | '300ms' | '400ms' | '500ms' | string\r\n\r\nexport type AnimationEasing = \r\n  | 'ease' \r\n  | 'ease-in' \r\n  | 'ease-out' \r\n  | 'ease-in-out' \r\n  | 'cubic-bezier(0.4, 0, 0.2, 1)' \r\n  | 'cubic-bezier(0.25, 0.46, 0.45, 0.94)'\r\n  | string\r\n\r\nexport type SlideDirection = 'up' | 'down' | 'left' | 'right' | 'none'\r\n\r\nexport type AnimationConfig = {\r\n  enabled?: boolean\r\n  duration?: AnimationDuration\r\n  easing?: AnimationEasing\r\n  slideDirection?: SlideDirection\r\n  fadeIn?: boolean\r\n  scaleIn?: boolean\r\n  staggerDelay?: number\r\n}\r\n\r\nexport type BreakpointConfig = {\r\n  size?: SizeVariant\r\n  layout?: LayoutVariant\r\n  width?: string\r\n  padding?: string\r\n}\r\n\r\nexport type ResponsiveConfig = {\r\n  mobile?: BreakpointConfig\r\n  tablet?: BreakpointConfig  \r\n  desktop?: BreakpointConfig\r\n  breakpoints?: {\r\n    mobile?: string\r\n    tablet?: string\r\n    desktop?: string\r\n  }\r\n}\r\n\r\nexport type AccessibilityConfig = {\r\n  ariaLabel?: string\r\n  focusManagement?: boolean\r\n  announceSteps?: boolean\r\n  keyboardNavigation?: boolean\r\n  reducedMotion?: boolean\r\n  highContrast?: boolean\r\n}\r\n\r\n// Phase 4: Advanced Design System Types\r\nexport type ShadowVariant = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'inner'\r\n\r\nexport type ElevationConfig = {\r\n  level?: number\r\n  color?: string\r\n  blur?: number\r\n  spread?: number\r\n  x?: number\r\n  y?: number\r\n}\r\n\r\nexport type FontConfig = {\r\n  family?: string\r\n  weight?: number | string\r\n  size?: string\r\n  lineHeight?: string\r\n  letterSpacing?: string\r\n  fallback?: string[]\r\n}\r\n\r\nexport type TypographyConfig = {\r\n  heading?: FontConfig\r\n  body?: FontConfig\r\n  label?: FontConfig\r\n  button?: FontConfig\r\n  caption?: FontConfig\r\n}\r\n\r\nexport type GradientVariant = 'linear' | 'radial' | 'conic'\r\n\r\nexport type GradientStop = {\r\n  color: string\r\n  position?: string\r\n}\r\n\r\nexport type GradientConfig = {\r\n  variant?: GradientVariant\r\n  direction?: string\r\n  stops?: GradientStop[]\r\n  angle?: string | number\r\n}\r\n\r\nexport type GradientSystem = {\r\n  background?: GradientConfig | string\r\n  button?: GradientConfig | string\r\n  card?: GradientConfig | string\r\n  overlay?: GradientConfig | string\r\n}\r\n\r\nfunction ensureFirebase(config: FirebaseOptions) {\r\n  if (!getApps().length) initializeApp(config)\r\n}\r\n\r\nfunction isValidE164(e164: string) {\r\n  return /^\\+\\d{10,15}$/.test(e164)\r\n}\r\n\r\nfunction toE164(country: CountryCode, local: string, countries: Record<string, { name: string; dial: string; flag: string; min: number; max: number }> = COUNTRIES) {\r\n  // Try robust parsing first (handles either E.164 like +44... or national like 079...)\r\n  try {\r\n    const parsed = parsePhoneNumberFromString(local, country)\r\n    if (parsed) {\r\n      return { e164: parsed.number, valid: parsed.isValid() }\r\n    }\r\n  } catch {}\r\n  // Fallback to previous logic with basic duplication guard\r\n  const countryInfo = countries[country]\r\n  const info = countryInfo || COUNTRIES[country as keyof typeof COUNTRIES]\r\n  if (!info) return { e164: '', valid: false }\r\n  const dial = info.dial // e.g. +44\r\n  const dialDigits = dial.replace('+', '')\r\n  let digits = local.replace(/\\D/g, '')\r\n  // Remove duplicated country code if user/autofill provided it\r\n  if (digits.startsWith(dialDigits)) {\r\n    digits = digits.slice(dialDigits.length)\r\n  }\r\n  const e164 = `${dial}${digits}`\r\n  const valid = isValidE164(e164)\r\n  return { e164, valid }\r\n}\r\n\r\nexport type AuthxProps = {\r\n  // Existing props (unchanged)\r\n  verifyEndpoint?: string\r\n  firebaseConfig?: FirebaseOptions\r\n  initialCountry?: CountryCode\r\n  countries?: Record<string, { name: string; dial: string; flag: string; min: number; max: number }>\r\n  \r\n  // Phase 1: Theme System\r\n  theme?: ThemeType\r\n  colorScheme?: ColorScheme\r\n  \r\n  // Phase 1: CSS Classes Support\r\n  className?: string\r\n  cardClassName?: string\r\n  inputClassName?: string\r\n  buttonClassName?: string\r\n  labelClassName?: string\r\n  \r\n  // Phase 1: Size Variants\r\n  size?: SizeVariant\r\n  width?: string\r\n  borderRadius?: string\r\n  padding?: string\r\n  \r\n  // Phase 1: Text Customization\r\n  labels?: CustomLabels\r\n  visibility?: VisibilityControls\r\n  \r\n  // Phase 2: Component Styling Props\r\n  inputStyle?: React.CSSProperties\r\n  buttonStyle?: React.CSSProperties\r\n  cardStyle?: React.CSSProperties\r\n  countryBoxStyle?: React.CSSProperties\r\n  otpInputStyle?: React.CSSProperties\r\n  \r\n  // Phase 2: Layout Variants\r\n  layout?: LayoutVariant\r\n  countryPosition?: CountryPosition\r\n  buttonPosition?: ButtonPosition\r\n  \r\n  // Phase 2: CSS Variables Integration\r\n  cssVariables?: CSSVariables\r\n  \r\n  // Phase 2: Validation & Feedback\r\n  validation?: ValidationConfig\r\n  \r\n  // Phase 3: Animation System\r\n  animations?: AnimationConfig\r\n  \r\n  // Phase 3: Responsive Design\r\n  responsive?: ResponsiveConfig\r\n  \r\n  // Phase 3: Accessibility Features\r\n  a11y?: AccessibilityConfig\r\n  \r\n  // Phase 4: Advanced Design System\r\n  shadow?: ShadowVariant\r\n  elevation?: ElevationConfig\r\n  fontFamily?: string\r\n  typography?: TypographyConfig\r\n  gradient?: GradientSystem\r\n\r\n  // Focus management\r\n  autoFocusPhone?: boolean\r\n  autoFocusOtp?: boolean\r\n  // Hints\r\n  enablePhoneHint?: boolean\r\n  enableWebOtp?: boolean\r\n  // Phone entry helpers\r\n  enableContactPicker?: boolean\r\n  phoneAutocomplete?: 'tel' | 'tel-national' | 'tel-local' | string\r\n}\r\n\r\n// Helper functions for Phase 1 enhancements\r\nfunction getThemeColors(theme: ThemeType = 'light', colorScheme?: ColorScheme): Required<ColorScheme> {\r\n  const baseColors = {\r\n    light: {\r\n      primary: '#2563eb',\r\n      secondary: '#f3f4f6',\r\n      background: '#ffffff',\r\n      text: '#111827',\r\n      border: '#e5e7eb',\r\n      error: '#ef4444',\r\n      success: '#10b981'\r\n    },\r\n    dark: {\r\n      primary: '#3b82f6',\r\n      secondary: '#374151',\r\n      background: '#1f2937',\r\n      text: '#f9fafb',\r\n      border: '#4b5563',\r\n      error: '#f87171',\r\n      success: '#34d399'\r\n    },\r\n    custom: {\r\n      primary: '#2563eb',\r\n      secondary: '#f3f4f6',\r\n      background: '#ffffff',\r\n      text: '#111827',\r\n      border: '#e5e7eb',\r\n      error: '#ef4444',\r\n      success: '#10b981'\r\n    }\r\n  }\r\n  \r\n  return {\r\n    ...baseColors[theme],\r\n    ...colorScheme\r\n  }\r\n}\r\n\r\nfunction getSizeConfig(size: SizeVariant = 'md') {\r\n  const configs = {\r\n    sm: { padding: '12px', borderRadius: '8px', fontSize: '13px', height: 40 },\r\n    md: { padding: '16px', borderRadius: '12px', fontSize: '14px', height: 48 },\r\n    lg: { padding: '20px', borderRadius: '16px', fontSize: '16px', height: 56 },\r\n    xl: { padding: '24px', borderRadius: '20px', fontSize: '18px', height: 64 }\r\n  }\r\n  return configs[size]\r\n}\r\n\r\nfunction getCustomLabels(labels?: CustomLabels): Required<CustomLabels> {\r\n  return {\r\n    phoneNumber: 'Phone Number',\r\n    sendCode: 'Send Verification Code',\r\n    enterCode: 'Enter 6-digit code',\r\n    verify: 'Verify',\r\n    placeholder: 'Enter your phone number',\r\n    ...labels\r\n  }\r\n}\r\n\r\nfunction getEnhancedStyles(themeColors: Required<ColorScheme>, sizeConfig: any, customWidth?: string, customBorderRadius?: string, customPadding?: string) {\r\n  return {\r\n    cardStyle: {\r\n      background: themeColors.background,\r\n      borderColor: themeColors.border,\r\n      borderRadius: customBorderRadius ? parseInt(customBorderRadius) : parseInt(sizeConfig.borderRadius),\r\n      padding: customPadding || sizeConfig.padding,\r\n      color: themeColors.text\r\n    },\r\n    labelStyle: {\r\n      color: themeColors.text,\r\n      fontSize: sizeConfig.fontSize\r\n    },\r\n    countryBoxStyle: {\r\n      borderColor: themeColors.border,\r\n      backgroundColor: themeColors.secondary,\r\n      height: sizeConfig.height,\r\n      borderRadius: customBorderRadius ? parseInt(customBorderRadius) : parseInt(sizeConfig.borderRadius)\r\n    },\r\n    inputStyleEnhanced: {\r\n      height: sizeConfig.height,\r\n      borderColor: themeColors.border,\r\n      color: themeColors.text,\r\n      fontSize: sizeConfig.fontSize,\r\n      borderRadius: customBorderRadius ? parseInt(customBorderRadius) : parseInt(sizeConfig.borderRadius),\r\n      backgroundColor: themeColors.background\r\n    },\r\n    buttonStyleEnhanced: {\r\n      height: sizeConfig.height,\r\n      backgroundColor: themeColors.primary,\r\n      color: themeColors.background,\r\n      fontSize: sizeConfig.fontSize,\r\n      borderRadius: customBorderRadius ? parseInt(customBorderRadius) : parseInt(sizeConfig.borderRadius)\r\n    },\r\n    otpInputStyle: {\r\n      borderColor: themeColors.border,\r\n      color: themeColors.text,\r\n      backgroundColor: themeColors.background,\r\n      borderRadius: customBorderRadius ? parseInt(customBorderRadius) : parseInt(sizeConfig.borderRadius)\r\n    },\r\n    errorBoxStyle: {\r\n      backgroundColor: themeColors.error + '20',\r\n      color: themeColors.error,\r\n      borderColor: themeColors.error + '40',\r\n      borderRadius: customBorderRadius ? parseInt(customBorderRadius) : parseInt(sizeConfig.borderRadius)\r\n    },\r\n    statusBoxStyle: {\r\n      backgroundColor: themeColors.primary + '20',\r\n      color: themeColors.primary,\r\n      borderColor: themeColors.primary + '40',\r\n      borderRadius: customBorderRadius ? parseInt(customBorderRadius) : parseInt(sizeConfig.borderRadius)\r\n    }\r\n  }\r\n}\r\n\r\n// Phase 2 Helper Functions\r\nfunction getLayoutConfig(layout: LayoutVariant, countryPosition: CountryPosition, buttonPosition: ButtonPosition) {\r\n  return {\r\n    isHorizontal: layout === 'horizontal',\r\n    isCompact: layout === 'compact',\r\n    countryOnTop: countryPosition === 'top',\r\n    countrySeparate: countryPosition === 'separate',\r\n    buttonInline: buttonPosition === 'inline',\r\n    buttonFloating: buttonPosition === 'floating'\r\n  }\r\n}\r\n\r\nfunction mergeCSSVariables(cssVariables?: CSSVariables): React.CSSProperties {\r\n  if (!cssVariables) return {}\r\n  \r\n  const cssVarStyles: any = {}\r\n  Object.entries(cssVariables).forEach(([key, value]) => {\r\n    const cssVarKey = key.startsWith('--') ? key : `--${key}`\r\n    cssVarStyles[cssVarKey] = value\r\n  })\r\n  \r\n  return cssVarStyles as React.CSSProperties\r\n}\r\n\r\nfunction mergeComponentStyles(\r\n  baseStyle: React.CSSProperties,\r\n  enhancedStyle: React.CSSProperties,\r\n  userStyle?: React.CSSProperties\r\n): React.CSSProperties {\r\n  return {\r\n    ...baseStyle,\r\n    ...enhancedStyle,\r\n    ...(userStyle || {})\r\n  }\r\n}\r\n\r\n// Phase 3: Animation & Responsive Helper Functions\r\nfunction getAnimationStyles(animations?: AnimationConfig): React.CSSProperties {\r\n  if (!animations || !animations.enabled) return {}\r\n  \r\n  const duration = animations.duration || '300ms'\r\n  const easing = animations.easing || 'cubic-bezier(0.4, 0, 0.2, 1)'\r\n  \r\n  let transform = ''\r\n  let opacity = animations.fadeIn ? '0' : '1'\r\n  \r\n  if (animations.scaleIn) {\r\n    transform += 'scale(0.95) '\r\n  }\r\n  \r\n  if (animations.slideDirection && animations.slideDirection !== 'none') {\r\n    const directions = {\r\n      up: 'translateY(10px)',\r\n      down: 'translateY(-10px)',\r\n      left: 'translateX(10px)',\r\n      right: 'translateX(-10px)'\r\n    }\r\n    transform += directions[animations.slideDirection] || ''\r\n  }\r\n\r\n  return {\r\n    transition: `all ${duration} ${easing}`,\r\n    transform: transform.trim() || undefined,\r\n    opacity,\r\n    animation: animations.fadeIn ? `authx-fade-in ${duration} ${easing} forwards` : undefined\r\n  }\r\n}\r\n\r\nfunction getResponsiveStyles(responsive?: ResponsiveConfig): React.CSSProperties {\r\n  if (!responsive) return {}\r\n  \r\n  // Use CSS custom properties for responsive behavior\r\n  const breakpoints = responsive.breakpoints || {\r\n    mobile: '480px',\r\n    tablet: '768px', \r\n    desktop: '1024px'\r\n  }\r\n  \r\n  const styles: any = {}\r\n  \r\n  // Set CSS custom properties for responsive values\r\n  if (responsive.mobile) {\r\n    styles['--authx-mobile-size'] = responsive.mobile.size || 'sm'\r\n    styles['--authx-mobile-width'] = responsive.mobile.width || '100%'\r\n  }\r\n  \r\n  if (responsive.tablet) {\r\n    styles['--authx-tablet-size'] = responsive.tablet.size || 'md' \r\n    styles['--authx-tablet-width'] = responsive.tablet.width || '400px'\r\n  }\r\n  \r\n  if (responsive.desktop) {\r\n    styles['--authx-desktop-size'] = responsive.desktop.size || 'lg'\r\n    styles['--authx-desktop-width'] = responsive.desktop.width || '480px'\r\n  }\r\n  \r\n  return styles as React.CSSProperties\r\n}\r\n\r\nfunction getAccessibilityProps(a11y?: AccessibilityConfig) {\r\n  if (!a11y) return {}\r\n  \r\n  const props: any = {}\r\n  \r\n  if (a11y.ariaLabel) {\r\n    props['aria-label'] = a11y.ariaLabel\r\n  }\r\n  \r\n  if (a11y.focusManagement) {\r\n    props['aria-live'] = 'polite'\r\n    props['role'] = 'form'\r\n  }\r\n  \r\n  if (a11y.reducedMotion) {\r\n    props['data-reduced-motion'] = 'true'\r\n  }\r\n  \r\n  if (a11y.highContrast) {\r\n    props['data-high-contrast'] = 'true'\r\n  }\r\n  \r\n  return props\r\n}\r\n\r\n// Phase 4: Advanced Design System Helper Functions\r\nfunction getShadowStyles(shadow?: ShadowVariant, elevation?: ElevationConfig): React.CSSProperties {\r\n  if (!shadow || shadow === 'none') return {}\r\n  \r\n  // Predefined shadow variants based on modern design systems\r\n  const shadows = {\r\n    xs: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\r\n    sm: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\r\n    md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\r\n    lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\r\n    xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\r\n    '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\r\n    inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)'\r\n  }\r\n  \r\n  let boxShadow = shadows[shadow as keyof typeof shadows] || shadows.md\r\n  \r\n  // Custom elevation overrides\r\n  if (elevation) {\r\n    const {\r\n      level = 1,\r\n      color = 'rgb(0 0 0 / 0.1)',\r\n      blur = 6,\r\n      spread = 0,\r\n      x = 0,\r\n      y = level * 2\r\n    } = elevation\r\n    \r\n    boxShadow = `${x}px ${y}px ${blur}px ${spread}px ${color}`\r\n  }\r\n  \r\n  return { boxShadow }\r\n}\r\n\r\nfunction getFontStyles(fontFamily?: string, typography?: TypographyConfig): React.CSSProperties {\r\n  const styles: React.CSSProperties = {}\r\n  \r\n  if (fontFamily) {\r\n    styles.fontFamily = fontFamily\r\n  }\r\n  \r\n  if (typography?.body) {\r\n    const { family, weight, size, lineHeight, letterSpacing } = typography.body\r\n    if (family) styles.fontFamily = family\r\n    if (weight) styles.fontWeight = weight\r\n    if (size) styles.fontSize = size\r\n    if (lineHeight) styles.lineHeight = lineHeight\r\n    if (letterSpacing) styles.letterSpacing = letterSpacing\r\n  }\r\n  \r\n  return styles\r\n}\r\n\r\nfunction getGradientStyles(gradients?: GradientSystem): { [key: string]: React.CSSProperties } {\r\n  if (!gradients) return {}\r\n  \r\n  const styles: { [key: string]: React.CSSProperties } = {}\r\n  \r\n  const createGradientCSS = (gradient: GradientConfig | string): string => {\r\n    if (typeof gradient === 'string') return gradient\r\n    \r\n    const { variant = 'linear', direction = '135deg', stops = [], angle } = gradient\r\n    \r\n    if (!stops.length) return ''\r\n    \r\n    const stopStrings = stops.map(stop => \r\n      `${stop.color}${stop.position ? ` ${stop.position}` : ''}`\r\n    ).join(', ')\r\n    \r\n    const gradientAngle = angle || direction\r\n    \r\n    switch (variant) {\r\n      case 'radial':\r\n        return `radial-gradient(circle, ${stopStrings})`\r\n      case 'conic':\r\n        return `conic-gradient(from ${gradientAngle}, ${stopStrings})`\r\n      default:\r\n        return `linear-gradient(${gradientAngle}, ${stopStrings})`\r\n    }\r\n  }\r\n  \r\n  if (gradients.background) {\r\n    styles.background = { background: createGradientCSS(gradients.background) }\r\n  }\r\n  \r\n  if (gradients.button) {\r\n    styles.button = { background: createGradientCSS(gradients.button) }\r\n  }\r\n  \r\n  if (gradients.card) {\r\n    styles.card = { background: createGradientCSS(gradients.card) }\r\n  }\r\n  \r\n  if (gradients.overlay) {\r\n    styles.overlay = { background: createGradientCSS(gradients.overlay) }\r\n  }\r\n  \r\n  return styles\r\n}\r\n\r\nfunction loadCustomFont(fontFamily: string, fallbacks: string[] = []): void {\r\n  // Check if font is already loaded\r\n  if (document.fonts && document.fonts.check) {\r\n    const isLoaded = document.fonts.check(`12px ${fontFamily}`)\r\n    if (isLoaded) return\r\n  }\r\n  \r\n  // Create fallback font stack\r\n  const fontStack = [fontFamily, ...fallbacks, 'sans-serif'].join(', ')\r\n  \r\n  // Apply font to document for loading\r\n  const style = document.createElement('style')\r\n  style.textContent = `\r\n    @import url('https://fonts.googleapis.com/css2?family=${fontFamily.replace(/\\s+/g, '+')}:wght@300;400;500;600;700&display=swap');\r\n    .authx-font-loading { font-family: ${fontStack}; }\r\n  `\r\n  document.head.appendChild(style)\r\n}\r\n\r\nexport default function Authx({ \r\n  // Existing props (unchanged)\r\n  verifyEndpoint = '/api/auth/verify-id-token', \r\n  firebaseConfig: firebaseConfigProp, \r\n  initialCountry = 'GB',\r\n  countries,\r\n  \r\n  // Phase 1 props\r\n  theme = 'light',\r\n  colorScheme,\r\n  className,\r\n  cardClassName,\r\n  inputClassName,\r\n  buttonClassName,\r\n  labelClassName,\r\n  size = 'md',\r\n  width,\r\n  borderRadius,\r\n  padding,\r\n  labels,\r\n  visibility = { showLabels: true, showFlags: true, showDialCode: true },\r\n  \r\n  // Phase 2 props\r\n  inputStyle,\r\n  buttonStyle,\r\n  cardStyle: cardStyleProp,\r\n  countryBoxStyle: countryBoxStyleProp,\r\n  otpInputStyle: otpInputStyleProp,\r\n  layout = 'vertical',\r\n  countryPosition = 'left',\r\n  buttonPosition = 'bottom',\r\n  cssVariables,\r\n  validation,\r\n  \r\n  // Phase 3 props\r\n  animations,\r\n  responsive,\r\n  a11y,\r\n  \r\n  // Phase 4 props\r\n  shadow,\r\n  elevation,\r\n  fontFamily,\r\n  typography,\r\n  gradient\r\n  ,\r\n  // Focus props\r\n  autoFocusPhone = false,\r\n  autoFocusOtp = false,\r\n  // Hint props\r\n  enablePhoneHint = true,\r\n  enableWebOtp = true,\r\n  enableContactPicker = true,\r\n  phoneAutocomplete = 'tel'\r\n}: AuthxProps) {\r\n  // Use provided countries or default COUNTRIES\r\n  const countriesConfig = countries || COUNTRIES;\r\n  \r\n  // Phase 1: Compute enhanced styles (before any existing logic)\r\n  const themeColors = getThemeColors(theme, colorScheme)\r\n  const sizeConfig = getSizeConfig(size)\r\n  const customLabels = getCustomLabels(labels)\r\n  const enhancedStyles = getEnhancedStyles(themeColors, sizeConfig, width, borderRadius, padding)\r\n  \r\n  // Phase 2: Compute layout and component styles\r\n  const layoutConfig = getLayoutConfig(layout, countryPosition, buttonPosition)\r\n  const cssVarStyles = mergeCSSVariables(cssVariables)\r\n  \r\n  // Create final merged styles (will be used after original styles are defined)\r\n  \r\n  // Destructure enhanced styles for backward compatibility\r\n  const {\r\n    cardStyle: _cardStyle,\r\n    labelStyle,\r\n    countryBoxStyle: _countryBoxStyle,\r\n    inputStyleEnhanced: _inputStyleEnhanced,\r\n    buttonStyleEnhanced: _buttonStyleEnhanced,\r\n    otpInputStyle: _otpInputStyle,\r\n    errorBoxStyle: _errorBoxStyle,\r\n    statusBoxStyle: _statusBoxStyle\r\n  } = enhancedStyles\r\n  \r\n  const firebaseConfig = useMemo<FirebaseOptions>(() => {\r\n    if (firebaseConfigProp) return firebaseConfigProp\r\n    const apiKey = process.env.NEXT_PUBLIC_FIREBASE_API_KEY\r\n    const authDomain = process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN\r\n    const projectId = process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID\r\n    if (!apiKey || !authDomain || !projectId) {\r\n      throw new Error('Authx: Missing Firebase env (NEXT_PUBLIC_FIREBASE_API_KEY, NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN, NEXT_PUBLIC_FIREBASE_PROJECT_ID) or provide firebaseConfig prop')\r\n    }\r\n    return { apiKey, authDomain, projectId }\r\n  }, [firebaseConfigProp])\r\n\r\n  const [country, setCountry] = useState<CountryCode>(initialCountry)\r\n  const [localPhone, setLocalPhone] = useState('')\r\n  const [step, setStep] = useState<'phone' | 'otp' | 'done'>('phone')\r\n  const [status, setStatus] = useState('')\r\n  const [sending, setSending] = useState(false)\r\n  const [otp, setOtp] = useState<string[]>(['', '', '', '', '', ''])\r\n  const [error, setError] = useState('')\r\n\r\n  type VerifyResponse = {\r\n    ok: boolean\r\n    uid?: string\r\n    phoneNumber?: string | null\r\n    email?: string | null\r\n    supabaseUserId?: string\r\n    error?: string\r\n  }\r\n\r\n  const { e164, valid } = toE164(country, localPhone, countriesConfig)\r\n  const recaptchaRef = useRef<RecaptchaVerifier | null>(null)\r\n  const confirmationRef = useRef<ConfirmationResult | null>(null)\r\n  const didAutoSendRef = useRef(false)\r\n  const phoneInputRef = useRef<HTMLInputElement | null>(null)\r\n\r\n  useEffect(() => {\r\n    ensureFirebase(firebaseConfig)\r\n  }, [firebaseConfig])\r\n\r\n  // Cleanup reCAPTCHA on unmount\r\n  useEffect(() => {\r\n    return () => {\r\n      if (recaptchaRef.current) {\r\n        try {\r\n          recaptchaRef.current.clear()\r\n        } catch (e) {\r\n          console.warn('Failed to clear reCAPTCHA on unmount:', e)\r\n        }\r\n        recaptchaRef.current = null\r\n      }\r\n    }\r\n  }, [])\r\n\r\n  const otpValue = useMemo(() => otp.join(''), [otp])\r\n  // Contact Picker (progressive enhancement)\r\n  const contactPickerAvailable = useMemo(() => {\r\n    return typeof navigator !== 'undefined' && (navigator as any).contacts && typeof (navigator as any).contacts.select === 'function'\r\n  }, [])\r\n\r\n  const handlePickContact = useCallback(async () => {\r\n    try {\r\n      const navAny = navigator as any\r\n      if (!navAny?.contacts?.select) return\r\n      const contacts = await navAny.contacts.select(['tel'], { multiple: false })\r\n      if (contacts && contacts[0] && contacts[0].tel && contacts[0].tel[0]) {\r\n        const picked: string = contacts[0].tel[0]\r\n        // Attempt to parse and set country + local number\r\n        try {\r\n          const parsed = parsePhoneNumberFromString(picked)\r\n          if (parsed) {\r\n            const c = parsed.country as CountryCode | undefined\r\n            if (c && COUNTRIES[c]) setCountry(c)\r\n            setLocalPhone(parsed.nationalNumber || picked)\r\n            return\r\n          }\r\n        } catch {}\r\n        setLocalPhone(picked)\r\n      }\r\n    } catch (err) {\r\n      console.warn('Contact pick cancelled or failed', err)\r\n    }\r\n  }, [])\r\n\r\n\r\n  const ensureRecaptcha = useCallback(async () => {\r\n    const auth = getAuth()\r\n    \r\n    // Return existing instance if already rendered\r\n    if (recaptchaRef.current) {\r\n      return recaptchaRef.current\r\n    }\r\n    \r\n    // Create RecaptchaVerifier attached to the button (as per Firebase docs for invisible reCAPTCHA)\r\n    try {\r\n      recaptchaRef.current = new RecaptchaVerifier(auth, 'authx-send-button', {\r\n        'size': 'invisible',\r\n        'callback': (response: any) => {\r\n          // reCAPTCHA solved, allow signInWithPhoneNumber\r\n          console.debug('reCAPTCHA solved:', response)\r\n        },\r\n        'expired-callback': () => {\r\n          // Response expired. Ask user to solve reCAPTCHA again\r\n          console.warn('reCAPTCHA expired, please try again')\r\n          setError('Verification expired. Please try again.')\r\n          recaptchaRef.current = null\r\n        }\r\n      })\r\n      \r\n      // Render the invisible reCAPTCHA\r\n      await recaptchaRef.current.render()\r\n      \r\n    } catch (error: any) {\r\n      // If already rendered, reuse existing instance\r\n      if (error?.message?.includes('already been rendered')) {\r\n        console.warn('reCAPTCHA already rendered, reusing instance')\r\n        return recaptchaRef.current\r\n      }\r\n      throw error\r\n    }\r\n    \r\n    return recaptchaRef.current\r\n  }, [])\r\n\r\n  const handleSend = useCallback(async () => {\r\n    try {\r\n      setSending(true)\r\n      setError('')\r\n      setStatus('Sending code via SMS…')\r\n\r\n      const recaptcha = await ensureRecaptcha()\r\n      const auth = getAuth()\r\n      const confirmation = await signInWithPhoneNumber(auth, e164, recaptcha!)\r\n      confirmationRef.current = confirmation\r\n      setStatus('Code sent. Check your phone.')\r\n      setStep('otp')\r\n    } catch (e: unknown) {\r\n      console.error(e)\r\n      setError(e instanceof Error ? e.message : typeof e === 'string' ? e : 'Failed to send code')\r\n      setStatus('')\r\n      // Just reset ref, don't clear DOM to avoid null errors\r\n      recaptchaRef.current = null\r\n    } finally {\r\n      setSending(false)\r\n    }\r\n  }, [e164, ensureRecaptcha])\r\n\r\n  const handleVerify = useCallback(async () => {\r\n    try {\r\n      if (otpValue.length !== 6) return\r\n      if (!confirmationRef.current) {\r\n        setError('No confirmation in memory. Please resend the code.')\r\n        return\r\n      }\r\n      setSending(true)\r\n      setError('')\r\n      setStatus('Verifying code…')\r\n\r\n      const { user } = await confirmationRef.current.confirm(otpValue)\r\n      const idToken = await user.getIdToken(true)\r\n\r\n      setStatus('Verifying with server…')\r\n      const res = await fetch(verifyEndpoint, {\r\n        method: 'POST',\r\n        headers: { 'content-type': 'application/json' },\r\n        body: JSON.stringify({ idToken }),\r\n      })\r\n      const json = (await res.json().catch(() => ({}))) as Partial<VerifyResponse>\r\n      if (json && json.ok) {\r\n        setStatus('Verified ✓')\r\n        setStep('done')\r\n      } else {\r\n        const errorMsg = json && json.error\r\n          ? typeof json.error === 'string' ? json.error : JSON.stringify(json.error)\r\n          : `Server rejected (${res.status})`\r\n        setError(errorMsg)\r\n        setStatus('')\r\n      }\r\n    } catch (e: unknown) {\r\n      console.error(e)\r\n      setError(e instanceof Error ? e.message : typeof e === 'string' ? e : 'Verification failed')\r\n      setStatus('')\r\n    } finally {\r\n      setSending(false)\r\n    }\r\n  }, [otpValue, verifyEndpoint])\r\n\r\n  // Auto-send when valid\r\n  useEffect(() => {\r\n    if (step !== 'phone') return\r\n    if (valid && !didAutoSendRef.current) {\r\n      didAutoSendRef.current = true\r\n      // Add small delay to ensure DOM is ready\r\n      const timer = setTimeout(() => {\r\n        void handleSend()\r\n      }, 100)\r\n      return () => clearTimeout(timer)\r\n    }\r\n  }, [valid, step, handleSend])\r\n\r\n  // Auto-verify when 6 digits\r\n  useEffect(() => {\r\n    if (otpValue.length === 6) void handleVerify()\r\n  }, [otpValue, handleVerify])\r\n\r\n  // Cleanup reCAPTCHA on unmount\r\n  useEffect(() => {\r\n    return () => {\r\n      try {\r\n        // clear() removes the widget and associated resources if present\r\n        // Optional chaining in case different firebase versions vary\r\n        // @ts-ignore - .clear may not be in typings for some versions\r\n        recaptchaRef.current?.clear?.()\r\n      } catch {}\r\n      recaptchaRef.current = null\r\n    }\r\n  }, [])\r\n\r\n  // Auto-focus phone input on phone step\r\n  useEffect(() => {\r\n    if (!autoFocusPhone) return\r\n    if (step !== 'phone') return\r\n    const t = window.setTimeout(() => {\r\n      phoneInputRef.current?.focus()\r\n    }, 0)\r\n    return () => window.clearTimeout(t)\r\n  }, [step, autoFocusPhone])\r\n\r\n  // Auto-focus first OTP box on otp step\r\n  useEffect(() => {\r\n    if (!autoFocusOtp) return\r\n    if (step !== 'otp') return\r\n    const t = window.setTimeout(() => {\r\n      const el = document.querySelector<HTMLInputElement>('#authx-otp-0')\r\n      el?.focus()\r\n    }, 0)\r\n    return () => window.clearTimeout(t)\r\n  }, [step, autoFocusOtp])\r\n\r\n  // Web OTP progressive enhancement (fills OTP if available)\r\n  useEffect(() => {\r\n    if (!enableWebOtp) return\r\n    if (step !== 'otp') return\r\n    if (typeof window === 'undefined') return\r\n    // @ts-ignore: OTPCredential may be experimental\r\n    if (!('OTPCredential' in window) || !navigator.credentials) return\r\n    const ac = new AbortController()\r\n    ;(async () => {\r\n      try {\r\n        // @ts-ignore: experimental otp option\r\n        const cred = await navigator.credentials.get({\r\n          // @ts-ignore: experimental otp option\r\n          otp: { transport: ['sms'] },\r\n          signal: ac.signal\r\n        })\r\n        // @ts-ignore: cred may include .code\r\n        const code: string | undefined = cred && 'code' in (cred as any) ? (cred as any).code : undefined\r\n        if (code && typeof code === 'string') {\r\n          const digits = code.replace(/\\D/g, '').slice(0, 6).split('')\r\n          if (digits.length === 6) {\r\n            setOtp(digits as string[])\r\n          }\r\n        }\r\n      } catch {}\r\n    })()\r\n    return () => ac.abort()\r\n  }, [enableWebOtp, step])\r\n\r\n  function onOtpChange(idx: number, value: string) {\r\n    const digits = value.replace(/\\D/g, '')\r\n    setOtp((prev: string[]) => {\r\n      const next = [...prev]\r\n      if (digits.length <= 1) {\r\n        next[idx] = digits\r\n      } else {\r\n        // Distribute across boxes when multiple digits arrive (e.g., iOS AutoFill)\r\n        for (let i = 0; i < digits.length && idx + i < 6; i++) {\r\n          next[idx + i] = digits.charAt(i)\r\n        }\r\n      }\r\n      return next\r\n    })\r\n    // Move focus appropriately\r\n    if (digits.length > 1) {\r\n      const target = Math.min(idx + digits.length, 5)\r\n      const el = document.querySelector<HTMLInputElement>(`#authx-otp-${target}`)\r\n      el?.focus()\r\n    } else if (digits.length === 1) {\r\n      const el = document.querySelector<HTMLInputElement>(`#authx-otp-${idx + 1}`)\r\n      el?.focus()\r\n    }\r\n  }\r\n\r\n  function onOtpPaste(idx: number, e: React.ClipboardEvent<HTMLInputElement>) {\r\n    const text = e.clipboardData?.getData('text') || ''\r\n    const digits = text.replace(/\\D/g, '')\r\n    if (!digits) return\r\n    e.preventDefault()\r\n    setOtp((prev) => {\r\n      const next = [...prev]\r\n      for (let i = 0; i < Math.min(6 - idx, digits.length); i++) {\r\n        next[idx + i] = digits.charAt(i)\r\n      }\r\n      return next\r\n    })\r\n  }\r\n\r\n  // Phase 2: Compute final merged styles (after original styles are available)\r\n  const finalCardStyle = mergeComponentStyles(defaultCard, _cardStyle, cardStyleProp)\r\n  const finalInputStyle = mergeComponentStyles(defaultInputStyle, _inputStyleEnhanced, inputStyle)\r\n  const finalButtonStyle = mergeComponentStyles(defaultButtonStyle, _buttonStyleEnhanced, buttonStyle)  \r\n  const finalCountryBoxStyle = mergeComponentStyles(countryBox, _countryBoxStyle, countryBoxStyleProp)\r\n  const finalOtpInputStyle = mergeComponentStyles(otpInput, _otpInputStyle, otpInputStyleProp)\r\n  const finalErrorBoxStyle = mergeComponentStyles(errorBox, _errorBoxStyle, {})\r\n  const finalStatusBoxStyle = mergeComponentStyles(statusBox, _statusBoxStyle, {})\r\n\r\n  // Phase 3: Compute animation, responsive, and accessibility enhancements\r\n  const animationStyles = getAnimationStyles(animations)\r\n  const responsiveStyles = getResponsiveStyles(responsive)\r\n  const accessibilityProps = getAccessibilityProps(a11y)\r\n\r\n  // Phase 4: Compute advanced design system enhancements\r\n  const shadowStyles = getShadowStyles(shadow, elevation)\r\n  const fontStyles = getFontStyles(fontFamily, typography)\r\n  const gradientStyles = getGradientStyles(gradient)\r\n  \r\n  // Load custom font if specified\r\n  React.useEffect(() => {\r\n    if (fontFamily && typeof document !== 'undefined') {\r\n      loadCustomFont(fontFamily, typography?.body?.fallback)\r\n    }\r\n  }, [fontFamily, typography])\r\n\r\n  // Merge all styles for the container\r\n  const containerStyle = {\r\n    maxWidth: width || 420,\r\n    ...responsiveStyles,\r\n    ...cssVarStyles,\r\n    ...shadowStyles,\r\n    ...fontStyles,\r\n    ...(gradientStyles.background || {}),\r\n    // Add error/status box CSS variables for dynamic theming\r\n    '--authx-error-bg': finalErrorBoxStyle.backgroundColor || '#fef2f2',\r\n    '--authx-error-text': finalErrorBoxStyle.color || '#991b1b',\r\n    '--authx-error-border': finalErrorBoxStyle.borderColor || '#fecaca',\r\n    '--authx-error-radius': finalErrorBoxStyle.borderRadius ? `${finalErrorBoxStyle.borderRadius}px` : '12px',\r\n    '--authx-status-bg': finalStatusBoxStyle.backgroundColor || '#eff6ff',\r\n    '--authx-status-text': finalStatusBoxStyle.color || '#1e3a8a',\r\n    '--authx-status-border': finalStatusBoxStyle.borderColor || '#bfdbfe',\r\n    '--authx-status-radius': finalStatusBoxStyle.borderRadius ? `${finalStatusBoxStyle.borderRadius}px` : '12px',\r\n    // Add country box CSS variables for dynamic theming\r\n    '--authx-country-bg': finalCountryBoxStyle.backgroundColor || '#f9fafb',\r\n    '--authx-country-border': finalCountryBoxStyle.borderColor || '#e5e7eb',\r\n    '--authx-country-height': finalCountryBoxStyle.height ? `${finalCountryBoxStyle.height}px` : '48px',\r\n    '--authx-country-radius': finalCountryBoxStyle.borderRadius ? `${finalCountryBoxStyle.borderRadius}px` : '12px',\r\n  } as React.CSSProperties\r\n  \r\n  // Enhanced component styles with gradients\r\n  const enhancedFinalCardStyle = {\r\n    ...finalCardStyle,\r\n    ...(gradientStyles.card || {})\r\n  }\r\n  \r\n  const enhancedFinalButtonStyle = {\r\n    ...finalButtonStyle,\r\n    ...(gradientStyles.button || {})\r\n  }\r\n\r\n  return (\r\n    <>\r\n      {/* animations handled via CSS class authx-animations-enabled */}\r\n      <div\r\n        className={`authx-container ${animations?.enabled ? 'authx-animations-enabled' : ''} ${theme === 'dark' ? 'authx-theme-dark' : ''} ${className || ''}`}\r\n        {...accessibilityProps}\r\n      >\r\n        {step === 'phone' && (\r\n        <Card className={cn(\"bg-white dark:bg-slate-900\", cardClassName)} style={finalCardStyle}>\r\n          <CardContent className=\"space-y-3 pt-6\">\r\n          {visibility.showLabels && (\r\n            <Label htmlFor=\"authx-phone\" className={cn(\"text-sm font-semibold\", labelClassName)} style={labelStyle}>\r\n              {customLabels.phoneNumber}\r\n            </Label>\r\n          )}\r\n          <div className=\"flex gap-2\">\r\n            <div className={cn(\"authx-country-box\", \"flex items-center px-2 rounded-xl border bg-secondary/50 h-12 min-w-fit\")}>\r\n              {visibility.showFlags && (\r\n                <span className=\"mr-1.5\">{countriesConfig[country].flag}</span>\r\n              )}\r\n              <select\r\n                aria-label='Country'\r\n                value={country}\r\n                onChange={(e: React.ChangeEvent<HTMLSelectElement>) => setCountry(e.target.value as CountryCode)}\r\n                className=\"border-none bg-transparent text-sm outline-none cursor-pointer\"\r\n              >\r\n                {Object.entries(countriesConfig).map(([code, { name, dial }]) => (\r\n                  <option key={code} value={code}>\r\n                    {visibility.hideCountryNames ? dial : `${name} (${dial})`}\r\n                  </option>\r\n                ))}\r\n              </select>\r\n              {visibility.showDialCode && (\r\n                <span className=\"ml-1.5 font-semibold\">\r\n                  {countriesConfig[country].dial}\r\n                </span>\r\n              )}\r\n            </div>\r\n            <Input\r\n              id='authx-phone'\r\n              type={enablePhoneHint ? 'tel' : 'text'}\r\n              name='tel'\r\n              inputMode={enablePhoneHint ? 'tel' : undefined}\r\n              autoComplete={enablePhoneHint ? phoneAutocomplete : undefined}\r\n              placeholder={customLabels.placeholder}\r\n              value={localPhone}\r\n              onChange={(e: React.ChangeEvent<HTMLInputElement>) => setLocalPhone(e.target.value)}\r\n              disabled={sending}\r\n              className={cn(\"flex-1\", inputClassName)}\r\n              style={finalInputStyle}\r\n              ref={phoneInputRef}\r\n            />\r\n          </div>\r\n          {enableContactPicker && contactPickerAvailable && (\r\n            <div className=\"text-sm text-muted-foreground\"><button type='button' className=\"text-primary hover:underline font-medium\" onClick={handlePickContact}>Pick from contacts</button></div>\r\n          )}\r\n          {enablePhoneHint && (\r\n            <div className=\"text-sm text-muted-foreground\" aria-live=\"polite\">Tap the field to select your phone number.</div>\r\n          )}\r\n          <Button\r\n            id=\"authx-send-button\"\r\n            type='button'\r\n            onClick={handleSend}\r\n            disabled={!valid || sending}\r\n            className={cn(\"w-full\", buttonClassName)}\r\n            style={finalButtonStyle}\r\n          >\r\n            {customLabels.sendCode}\r\n          </Button>\r\n          {!!error && <div className={cn(\"authx-error\", \"p-2 text-sm bg-destructive/10 text-destructive border border-destructive/20 rounded-xl\")}>{error}</div>}\r\n          {!!status && <div className={cn(\"authx-status\", \"p-2 text-sm bg-primary/10 text-primary border border-primary/20 rounded-xl\")}>{status}</div>}\r\n          </CardContent>\r\n        </Card>\r\n      )}\r\n\r\n      {step === 'otp' && (\r\n        <Card className={cn(\"bg-white dark:bg-slate-900\", cardClassName)} style={finalCardStyle}>\r\n          <CardContent className=\"space-y-4 pt-6\">\r\n          {visibility.showLabels && (\r\n            <Label className={cn(\"text-sm font-semibold\", labelClassName)} style={labelStyle}>\r\n              {customLabels.enterCode}\r\n            </Label>\r\n          )}\r\n          <div className=\"flex justify-between gap-2\">\r\n            {otp.map((d, i) => (\r\n              <Input\r\n                key={i}\r\n                id={`authx-otp-${i}`}\r\n                type='text'\r\n                name='otp'\r\n                inputMode='numeric'\r\n                autoComplete='one-time-code'\r\n                pattern='[0-9]*'\r\n                maxLength={i === 0 ? 6 : 1}\r\n                value={d}\r\n                onChange={(e: React.ChangeEvent<HTMLInputElement>) => onOtpChange(i, e.target.value)}\r\n                onPaste={(e: React.ClipboardEvent<HTMLInputElement>) => onOtpPaste(i, e)}\r\n                className=\"w-12 h-14 text-center text-xl\"\r\n                style={finalOtpInputStyle}\r\n                aria-label={`Digit ${i + 1}`}\r\n              />\r\n            ))}\r\n          </div>\r\n          {enableWebOtp && (\r\n            <div className=\"authx-helper\" aria-live=\"polite\">Your code may be auto-detected for security; you might not see it in your messages.</div>\r\n          )}\r\n          <div className=\"authx-helper\">\r\n            Didn’t get it? <button type='button' className='authx-link' onClick={handleSend} disabled={sending}>Resend code</button>\r\n          </div>\r\n          <Button\r\n            type='button'\r\n            onClick={handleVerify}\r\n            disabled={sending || otpValue.length !== 6}\r\n            variant=\"success\"\r\n            className={cn(\"w-full\", buttonClassName)}\r\n            style={finalButtonStyle}\r\n          >\r\n            {customLabels.verify}\r\n          </Button>\r\n          {!!error && <div className={cn(\"authx-error\")}>{error}</div>}\r\n          {!!status && <div className={cn(\"authx-status\")}>{status}</div>}\r\n          </CardContent>\r\n        </Card>\r\n      )}\r\n\r\n      {step === 'done' && (\r\n        <Card className={cn(\"bg-white dark:bg-slate-900\", cardClassName)} style={finalCardStyle}>\r\n          <CardContent className=\"pt-6\">\r\n            <div className=\"text-center text-green-600 dark:text-green-400 font-semibold\">\r\n              Phone verified successfully.\r\n            </div>\r\n          </CardContent>\r\n        </Card>\r\n      )}\r\n      </div>\r\n    </>\r\n  )\r\n}\r\n\r\n// Original styles (preserved exactly)\r\nconst defaultCard: React.CSSProperties = { background: '#fff', borderRadius: 16, padding: 16, boxShadow: '0 10px 30px rgba(0,0,0,0.08)', display: 'grid', gap: 12 }\r\nconst label: React.CSSProperties = { fontSize: 14, color: '#374151', fontWeight: 600 }\r\nconst countryBox: React.CSSProperties = { display: 'flex', alignItems: 'center', padding: '0 8px', borderRadius: 12, border: '1px solid #e5e7eb', height: 48, background: '#f9fafb' }\r\nconst selectStyle: React.CSSProperties = { border: 'none', background: 'transparent', fontSize: 14, outline: 'none' }\r\nconst defaultInputStyle: React.CSSProperties = { flex: 1, height: 48, border: '1px solid #e5e7eb', borderRadius: 12, padding: '0 14px', fontSize: 14 }\r\nconst defaultButtonStyle: React.CSSProperties = { height: 48, backgroundColor: '#2563eb', color: '#fff', borderRadius: 12, border: 'none', fontWeight: 600, cursor: 'pointer' }\r\nconst otpInput: React.CSSProperties = { width: 48, height: 56, textAlign: 'center', fontSize: 20, border: '1px solid #e5e7eb', borderRadius: 12 }\r\nconst errorBox: React.CSSProperties = { padding: '8px 12px', background: '#fef2f2', color: '#991b1b', border: '1px solid #fecaca', borderRadius: 12, fontSize: 13 }\r\nconst statusBox: React.CSSProperties = { padding: '8px 12px', background: '#eff6ff', color: '#1e3a8a', border: '1px solid #bfdbfe', borderRadius: 12, fontSize: 13 }\r\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import {\n    AnyClassGroupIds,\n    AnyConfig,\n    AnyThemeGroupIds,\n    ClassGroup,\n    ClassValidator,\n    Config,\n    ThemeGetter,\n    ThemeObject,\n} from './types'\n\nexport interface ClassPartObject {\n    nextPart: Map<string, ClassPartObject>\n    validators: ClassValidatorObject[]\n    classGroupId?: AnyClassGroupIds\n}\n\ninterface ClassValidatorObject {\n    classGroupId: AnyClassGroupIds\n    validator: ClassValidator\n}\n\nconst CLASS_PART_SEPARATOR = '-'\n\nexport const createClassGroupUtils = (config: AnyConfig) => {\n    const classMap = createClassMap(config)\n    const { conflictingClassGroups, conflictingClassGroupModifiers } = config\n\n    const getClassGroupId = (className: string) => {\n        const classParts = className.split(CLASS_PART_SEPARATOR)\n\n        // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n        if (classParts[0] === '' && classParts.length !== 1) {\n            classParts.shift()\n        }\n\n        return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className)\n    }\n\n    const getConflictingClassGroupIds = (\n        classGroupId: AnyClassGroupIds,\n        hasPostfixModifier: boolean,\n    ) => {\n        const conflicts = conflictingClassGroups[classGroupId] || []\n\n        if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n            return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]!]\n        }\n\n        return conflicts\n    }\n\n    return {\n        getClassGroupId,\n        getConflictingClassGroupIds,\n    }\n}\n\nconst getGroupRecursive = (\n    classParts: string[],\n    classPartObject: ClassPartObject,\n): AnyClassGroupIds | undefined => {\n    if (classParts.length === 0) {\n        return classPartObject.classGroupId\n    }\n\n    const currentClassPart = classParts[0]!\n    const nextClassPartObject = classPartObject.nextPart.get(currentClassPart)\n    const classGroupFromNextClassPart = nextClassPartObject\n        ? getGroupRecursive(classParts.slice(1), nextClassPartObject)\n        : undefined\n\n    if (classGroupFromNextClassPart) {\n        return classGroupFromNextClassPart\n    }\n\n    if (classPartObject.validators.length === 0) {\n        return undefined\n    }\n\n    const classRest = classParts.join(CLASS_PART_SEPARATOR)\n\n    return classPartObject.validators.find(({ validator }) => validator(classRest))?.classGroupId\n}\n\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/\n\nconst getGroupIdForArbitraryProperty = (className: string) => {\n    if (arbitraryPropertyRegex.test(className)) {\n        const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)![1]\n        const property = arbitraryPropertyClassName?.substring(\n            0,\n            arbitraryPropertyClassName.indexOf(':'),\n        )\n\n        if (property) {\n            // I use two dots here because one dot is used as prefix for class groups in plugins\n            return 'arbitrary..' + property\n        }\n    }\n}\n\n/**\n * Exported for testing only\n */\nexport const createClassMap = (config: Config<AnyClassGroupIds, AnyThemeGroupIds>) => {\n    const { theme, classGroups } = config\n    const classMap: ClassPartObject = {\n        nextPart: new Map<string, ClassPartObject>(),\n        validators: [],\n    }\n\n    for (const classGroupId in classGroups) {\n        processClassesRecursively(classGroups[classGroupId]!, classMap, classGroupId, theme)\n    }\n\n    return classMap\n}\n\nconst processClassesRecursively = (\n    classGroup: ClassGroup<AnyThemeGroupIds>,\n    classPartObject: ClassPartObject,\n    classGroupId: AnyClassGroupIds,\n    theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n    classGroup.forEach((classDefinition) => {\n        if (typeof classDefinition === 'string') {\n            const classPartObjectToEdit =\n                classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition)\n            classPartObjectToEdit.classGroupId = classGroupId\n            return\n        }\n\n        if (typeof classDefinition === 'function') {\n            if (isThemeGetter(classDefinition)) {\n                processClassesRecursively(\n                    classDefinition(theme),\n                    classPartObject,\n                    classGroupId,\n                    theme,\n                )\n                return\n            }\n\n            classPartObject.validators.push({\n                validator: classDefinition,\n                classGroupId,\n            })\n\n            return\n        }\n\n        Object.entries(classDefinition).forEach(([key, classGroup]) => {\n            processClassesRecursively(\n                classGroup,\n                getPart(classPartObject, key),\n                classGroupId,\n                theme,\n            )\n        })\n    })\n}\n\nconst getPart = (classPartObject: ClassPartObject, path: string) => {\n    let currentClassPartObject = classPartObject\n\n    path.split(CLASS_PART_SEPARATOR).forEach((pathPart) => {\n        if (!currentClassPartObject.nextPart.has(pathPart)) {\n            currentClassPartObject.nextPart.set(pathPart, {\n                nextPart: new Map(),\n                validators: [],\n            })\n        }\n\n        currentClassPartObject = currentClassPartObject.nextPart.get(pathPart)!\n    })\n\n    return currentClassPartObject\n}\n\nconst isThemeGetter = (func: ClassValidator | ThemeGetter): func is ThemeGetter =>\n    (func as ThemeGetter).isThemeGetter\n","// Export is needed because TypeScript complains about an error otherwise:\n// Error: …/tailwind-merge/src/config-utils.ts(8,17): semantic error TS4058: Return type of exported function has or is using name 'LruCache' from external module \"…/tailwind-merge/src/lru-cache\" but cannot be named.\nexport interface LruCache<Key, Value> {\n    get(key: Key): Value | undefined\n    set(key: Key, value: Value): void\n}\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nexport const createLruCache = <Key, Value>(maxCacheSize: number): LruCache<Key, Value> => {\n    if (maxCacheSize < 1) {\n        return {\n            get: () => undefined,\n            set: () => {},\n        }\n    }\n\n    let cacheSize = 0\n    let cache = new Map<Key, Value>()\n    let previousCache = new Map<Key, Value>()\n\n    const update = (key: Key, value: Value) => {\n        cache.set(key, value)\n        cacheSize++\n\n        if (cacheSize > maxCacheSize) {\n            cacheSize = 0\n            previousCache = cache\n            cache = new Map()\n        }\n    }\n\n    return {\n        get(key) {\n            let value = cache.get(key)\n\n            if (value !== undefined) {\n                return value\n            }\n            if ((value = previousCache.get(key)) !== undefined) {\n                update(key, value)\n                return value\n            }\n        },\n        set(key, value) {\n            if (cache.has(key)) {\n                cache.set(key, value)\n            } else {\n                update(key, value)\n            }\n        },\n    }\n}\n","import { AnyConfig, ParsedClassName } from './types'\n\nexport const IMPORTANT_MODIFIER = '!'\nconst MODIFIER_SEPARATOR = ':'\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length\n\nexport const createParseClassName = (config: AnyConfig) => {\n    const { prefix, experimentalParseClassName } = config\n\n    /**\n     * Parse class name into parts.\n     *\n     * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n     * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n     */\n    let parseClassName = (className: string): ParsedClassName => {\n        const modifiers = []\n\n        let bracketDepth = 0\n        let parenDepth = 0\n        let modifierStart = 0\n        let postfixModifierPosition: number | undefined\n\n        for (let index = 0; index < className.length; index++) {\n            let currentCharacter = className[index]\n\n            if (bracketDepth === 0 && parenDepth === 0) {\n                if (currentCharacter === MODIFIER_SEPARATOR) {\n                    modifiers.push(className.slice(modifierStart, index))\n                    modifierStart = index + MODIFIER_SEPARATOR_LENGTH\n                    continue\n                }\n\n                if (currentCharacter === '/') {\n                    postfixModifierPosition = index\n                    continue\n                }\n            }\n\n            if (currentCharacter === '[') {\n                bracketDepth++\n            } else if (currentCharacter === ']') {\n                bracketDepth--\n            } else if (currentCharacter === '(') {\n                parenDepth++\n            } else if (currentCharacter === ')') {\n                parenDepth--\n            }\n        }\n\n        const baseClassNameWithImportantModifier =\n            modifiers.length === 0 ? className : className.substring(modifierStart)\n        const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier)\n        const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier\n        const maybePostfixModifierPosition =\n            postfixModifierPosition && postfixModifierPosition > modifierStart\n                ? postfixModifierPosition - modifierStart\n                : undefined\n\n        return {\n            modifiers,\n            hasImportantModifier,\n            baseClassName,\n            maybePostfixModifierPosition,\n        }\n    }\n\n    if (prefix) {\n        const fullPrefix = prefix + MODIFIER_SEPARATOR\n        const parseClassNameOriginal = parseClassName\n        parseClassName = (className) =>\n            className.startsWith(fullPrefix)\n                ? parseClassNameOriginal(className.substring(fullPrefix.length))\n                : {\n                      isExternal: true,\n                      modifiers: [],\n                      hasImportantModifier: false,\n                      baseClassName: className,\n                      maybePostfixModifierPosition: undefined,\n                  }\n    }\n\n    if (experimentalParseClassName) {\n        const parseClassNameOriginal = parseClassName\n        parseClassName = (className) =>\n            experimentalParseClassName({ className, parseClassName: parseClassNameOriginal })\n    }\n\n    return parseClassName\n}\n\nconst stripImportantModifier = (baseClassName: string) => {\n    if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n        return baseClassName.substring(0, baseClassName.length - 1)\n    }\n\n    /**\n     * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n     * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n     */\n    if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n        return baseClassName.substring(1)\n    }\n\n    return baseClassName\n}\n","import { AnyConfig } from './types'\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nexport const createSortModifiers = (config: AnyConfig) => {\n    const orderSensitiveModifiers = Object.fromEntries(\n        config.orderSensitiveModifiers.map((modifier) => [modifier, true]),\n    )\n\n    const sortModifiers = (modifiers: string[]) => {\n        if (modifiers.length <= 1) {\n            return modifiers\n        }\n\n        const sortedModifiers: string[] = []\n        let unsortedModifiers: string[] = []\n\n        modifiers.forEach((modifier) => {\n            const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier]\n\n            if (isPositionSensitive) {\n                sortedModifiers.push(...unsortedModifiers.sort(), modifier)\n                unsortedModifiers = []\n            } else {\n                unsortedModifiers.push(modifier)\n            }\n        })\n\n        sortedModifiers.push(...unsortedModifiers.sort())\n\n        return sortedModifiers\n    }\n\n    return sortModifiers\n}\n","import { createClassGroupUtils } from './class-group-utils'\nimport { createLruCache } from './lru-cache'\nimport { createParseClassName } from './parse-class-name'\nimport { createSortModifiers } from './sort-modifiers'\nimport { AnyConfig } from './types'\n\nexport type ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport const createConfigUtils = (config: AnyConfig) => ({\n    cache: createLruCache<string, string>(config.cacheSize),\n    parseClassName: createParseClassName(config),\n    sortModifiers: createSortModifiers(config),\n    ...createClassGroupUtils(config),\n})\n","import { ConfigUtils } from './config-utils'\nimport { IMPORTANT_MODIFIER } from './parse-class-name'\n\nconst SPLIT_CLASSES_REGEX = /\\s+/\n\nexport const mergeClassList = (classList: string, configUtils: ConfigUtils) => {\n    const { parseClassName, getClassGroupId, getConflictingClassGroupIds, sortModifiers } =\n        configUtils\n\n    /**\n     * Set of classGroupIds in following format:\n     * `{importantModifier}{variantModifiers}{classGroupId}`\n     * @example 'float'\n     * @example 'hover:focus:bg-color'\n     * @example 'md:!pr'\n     */\n    const classGroupsInConflict: string[] = []\n    const classNames = classList.trim().split(SPLIT_CLASSES_REGEX)\n\n    let result = ''\n\n    for (let index = classNames.length - 1; index >= 0; index -= 1) {\n        const originalClassName = classNames[index]!\n\n        const {\n            isExternal,\n            modifiers,\n            hasImportantModifier,\n            baseClassName,\n            maybePostfixModifierPosition,\n        } = parseClassName(originalClassName)\n\n        if (isExternal) {\n            result = originalClassName + (result.length > 0 ? ' ' + result : result)\n            continue\n        }\n\n        let hasPostfixModifier = !!maybePostfixModifierPosition\n        let classGroupId = getClassGroupId(\n            hasPostfixModifier\n                ? baseClassName.substring(0, maybePostfixModifierPosition)\n                : baseClassName,\n        )\n\n        if (!classGroupId) {\n            if (!hasPostfixModifier) {\n                // Not a Tailwind class\n                result = originalClassName + (result.length > 0 ? ' ' + result : result)\n                continue\n            }\n\n            classGroupId = getClassGroupId(baseClassName)\n\n            if (!classGroupId) {\n                // Not a Tailwind class\n                result = originalClassName + (result.length > 0 ? ' ' + result : result)\n                continue\n            }\n\n            hasPostfixModifier = false\n        }\n\n        const variantModifier = sortModifiers(modifiers).join(':')\n\n        const modifierId = hasImportantModifier\n            ? variantModifier + IMPORTANT_MODIFIER\n            : variantModifier\n\n        const classId = modifierId + classGroupId\n\n        if (classGroupsInConflict.includes(classId)) {\n            // Tailwind class omitted due to conflict\n            continue\n        }\n\n        classGroupsInConflict.push(classId)\n\n        const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier)\n        for (let i = 0; i < conflictGroups.length; ++i) {\n            const group = conflictGroups[i]!\n            classGroupsInConflict.push(modifierId + group)\n        }\n\n        // Tailwind class not in conflict\n        result = originalClassName + (result.length > 0 ? ' ' + result : result)\n    }\n\n    return result\n}\n","/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\n\nexport type ClassNameValue = ClassNameArray | string | null | undefined | 0 | 0n | false\ntype ClassNameArray = ClassNameValue[]\n\nexport function twJoin(...classLists: ClassNameValue[]): string\nexport function twJoin() {\n    let index = 0\n    let argument: ClassNameValue\n    let resolvedValue: string\n    let string = ''\n\n    while (index < arguments.length) {\n        if ((argument = arguments[index++])) {\n            if ((resolvedValue = toValue(argument))) {\n                string && (string += ' ')\n                string += resolvedValue\n            }\n        }\n    }\n    return string\n}\n\nconst toValue = (mix: ClassNameArray | string) => {\n    if (typeof mix === 'string') {\n        return mix\n    }\n\n    let resolvedValue: string\n    let string = ''\n\n    for (let k = 0; k < mix.length; k++) {\n        if (mix[k]) {\n            if ((resolvedValue = toValue(mix[k] as ClassNameArray | string))) {\n                string && (string += ' ')\n                string += resolvedValue\n            }\n        }\n    }\n\n    return string\n}\n","import { createConfigUtils } from './config-utils'\nimport { mergeClassList } from './merge-classlist'\nimport { ClassNameValue, twJoin } from './tw-join'\nimport { AnyConfig } from './types'\n\ntype CreateConfigFirst = () => AnyConfig\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\ntype TailwindMerge = (...classLists: ClassNameValue[]) => string\ntype ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport function createTailwindMerge(\n    createConfigFirst: CreateConfigFirst,\n    ...createConfigRest: CreateConfigSubsequent[]\n): TailwindMerge {\n    let configUtils: ConfigUtils\n    let cacheGet: ConfigUtils['cache']['get']\n    let cacheSet: ConfigUtils['cache']['set']\n    let functionToCall = initTailwindMerge\n\n    function initTailwindMerge(classList: string) {\n        const config = createConfigRest.reduce(\n            (previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig),\n            createConfigFirst() as AnyConfig,\n        )\n\n        configUtils = createConfigUtils(config)\n        cacheGet = configUtils.cache.get\n        cacheSet = configUtils.cache.set\n        functionToCall = tailwindMerge\n\n        return tailwindMerge(classList)\n    }\n\n    function tailwindMerge(classList: string) {\n        const cachedResult = cacheGet(classList)\n\n        if (cachedResult) {\n            return cachedResult\n        }\n\n        const result = mergeClassList(classList, configUtils)\n        cacheSet(classList, result)\n\n        return result\n    }\n\n    return function callTailwindMerge() {\n        return functionToCall(twJoin.apply(null, arguments as any))\n    }\n}\n","import { DefaultThemeGroupIds, NoInfer, ThemeGetter, ThemeObject } from './types'\n\nexport const fromTheme = <\n    AdditionalThemeGroupIds extends string = never,\n    DefaultThemeGroupIdsInner extends string = DefaultThemeGroupIds,\n>(key: NoInfer<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>): ThemeGetter => {\n    const themeGetter = (theme: ThemeObject<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>) =>\n        theme[key] || []\n\n    themeGetter.isThemeGetter = true as const\n\n    return themeGetter\n}\n","const arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i\nconst fractionRegex = /^\\d+\\/\\d+$/\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/\nconst lengthUnitRegex =\n    /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/\nconst imageRegex =\n    /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/\n\nexport const isFraction = (value: string) => fractionRegex.test(value)\n\nexport const isNumber = (value: string) => !!value && !Number.isNaN(Number(value))\n\nexport const isInteger = (value: string) => !!value && Number.isInteger(Number(value))\n\nexport const isPercent = (value: string) => value.endsWith('%') && isNumber(value.slice(0, -1))\n\nexport const isTshirtSize = (value: string) => tshirtUnitRegex.test(value)\n\nexport const isAny = () => true\n\nconst isLengthOnly = (value: string) =>\n    // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n    // For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n    // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\n    lengthUnitRegex.test(value) && !colorFunctionRegex.test(value)\n\nconst isNever = () => false\n\nconst isShadow = (value: string) => shadowRegex.test(value)\n\nconst isImage = (value: string) => imageRegex.test(value)\n\nexport const isAnyNonArbitrary = (value: string) =>\n    !isArbitraryValue(value) && !isArbitraryVariable(value)\n\nexport const isArbitrarySize = (value: string) => getIsArbitraryValue(value, isLabelSize, isNever)\n\nexport const isArbitraryValue = (value: string) => arbitraryValueRegex.test(value)\n\nexport const isArbitraryLength = (value: string) =>\n    getIsArbitraryValue(value, isLabelLength, isLengthOnly)\n\nexport const isArbitraryNumber = (value: string) =>\n    getIsArbitraryValue(value, isLabelNumber, isNumber)\n\nexport const isArbitraryPosition = (value: string) =>\n    getIsArbitraryValue(value, isLabelPosition, isNever)\n\nexport const isArbitraryImage = (value: string) => getIsArbitraryValue(value, isLabelImage, isImage)\n\nexport const isArbitraryShadow = (value: string) =>\n    getIsArbitraryValue(value, isLabelShadow, isShadow)\n\nexport const isArbitraryVariable = (value: string) => arbitraryVariableRegex.test(value)\n\nexport const isArbitraryVariableLength = (value: string) =>\n    getIsArbitraryVariable(value, isLabelLength)\n\nexport const isArbitraryVariableFamilyName = (value: string) =>\n    getIsArbitraryVariable(value, isLabelFamilyName)\n\nexport const isArbitraryVariablePosition = (value: string) =>\n    getIsArbitraryVariable(value, isLabelPosition)\n\nexport const isArbitraryVariableSize = (value: string) => getIsArbitraryVariable(value, isLabelSize)\n\nexport const isArbitraryVariableImage = (value: string) =>\n    getIsArbitraryVariable(value, isLabelImage)\n\nexport const isArbitraryVariableShadow = (value: string) =>\n    getIsArbitraryVariable(value, isLabelShadow, true)\n\n// Helpers\n\nconst getIsArbitraryValue = (\n    value: string,\n    testLabel: (label: string) => boolean,\n    testValue: (value: string) => boolean,\n) => {\n    const result = arbitraryValueRegex.exec(value)\n\n    if (result) {\n        if (result[1]) {\n            return testLabel(result[1])\n        }\n\n        return testValue(result[2]!)\n    }\n\n    return false\n}\n\nconst getIsArbitraryVariable = (\n    value: string,\n    testLabel: (label: string) => boolean,\n    shouldMatchNoLabel = false,\n) => {\n    const result = arbitraryVariableRegex.exec(value)\n\n    if (result) {\n        if (result[1]) {\n            return testLabel(result[1])\n        }\n        return shouldMatchNoLabel\n    }\n\n    return false\n}\n\n// Labels\n\nconst isLabelPosition = (label: string) => label === 'position' || label === 'percentage'\n\nconst isLabelImage = (label: string) => label === 'image' || label === 'url'\n\nconst isLabelSize = (label: string) => label === 'length' || label === 'size' || label === 'bg-size'\n\nconst isLabelLength = (label: string) => label === 'length'\n\nconst isLabelNumber = (label: string) => label === 'number'\n\nconst isLabelFamilyName = (label: string) => label === 'family-name'\n\nconst isLabelShadow = (label: string) => label === 'shadow'\n","import { fromTheme } from './from-theme'\nimport { Config, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\nimport {\n    isAny,\n    isAnyNonArbitrary,\n    isArbitraryImage,\n    isArbitraryLength,\n    isArbitraryNumber,\n    isArbitraryPosition,\n    isArbitraryShadow,\n    isArbitrarySize,\n    isArbitraryValue,\n    isArbitraryVariable,\n    isArbitraryVariableFamilyName,\n    isArbitraryVariableImage,\n    isArbitraryVariableLength,\n    isArbitraryVariablePosition,\n    isArbitraryVariableShadow,\n    isArbitraryVariableSize,\n    isFraction,\n    isInteger,\n    isNumber,\n    isPercent,\n    isTshirtSize,\n} from './validators'\n\nexport const getDefaultConfig = () => {\n    /**\n     * Theme getters for theme variable namespaces\n     * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n     */\n    /***/\n\n    const themeColor = fromTheme('color')\n    const themeFont = fromTheme('font')\n    const themeText = fromTheme('text')\n    const themeFontWeight = fromTheme('font-weight')\n    const themeTracking = fromTheme('tracking')\n    const themeLeading = fromTheme('leading')\n    const themeBreakpoint = fromTheme('breakpoint')\n    const themeContainer = fromTheme('container')\n    const themeSpacing = fromTheme('spacing')\n    const themeRadius = fromTheme('radius')\n    const themeShadow = fromTheme('shadow')\n    const themeInsetShadow = fromTheme('inset-shadow')\n    const themeTextShadow = fromTheme('text-shadow')\n    const themeDropShadow = fromTheme('drop-shadow')\n    const themeBlur = fromTheme('blur')\n    const themePerspective = fromTheme('perspective')\n    const themeAspect = fromTheme('aspect')\n    const themeEase = fromTheme('ease')\n    const themeAnimate = fromTheme('animate')\n\n    /**\n     * Helpers to avoid repeating the same scales\n     *\n     * We use functions that create a new array every time they're called instead of static arrays.\n     * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n     */\n    /***/\n\n    const scaleBreak = () =>\n        ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'] as const\n    const scalePosition = () =>\n        [\n            'center',\n            'top',\n            'bottom',\n            'left',\n            'right',\n            'top-left',\n            // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n            'left-top',\n            'top-right',\n            // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n            'right-top',\n            'bottom-right',\n            // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n            'right-bottom',\n            'bottom-left',\n            // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n            'left-bottom',\n        ] as const\n    const scalePositionWithArbitrary = () =>\n        [...scalePosition(), isArbitraryVariable, isArbitraryValue] as const\n    const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'] as const\n    const scaleOverscroll = () => ['auto', 'contain', 'none'] as const\n    const scaleUnambiguousSpacing = () =>\n        [isArbitraryVariable, isArbitraryValue, themeSpacing] as const\n    const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()] as const\n    const scaleGridTemplateColsRows = () =>\n        [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue] as const\n    const scaleGridColRowStartAndEnd = () =>\n        [\n            'auto',\n            { span: ['full', isInteger, isArbitraryVariable, isArbitraryValue] },\n            isInteger,\n            isArbitraryVariable,\n            isArbitraryValue,\n        ] as const\n    const scaleGridColRowStartOrEnd = () =>\n        [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] as const\n    const scaleGridAutoColsRows = () =>\n        ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue] as const\n    const scaleAlignPrimaryAxis = () =>\n        [\n            'start',\n            'end',\n            'center',\n            'between',\n            'around',\n            'evenly',\n            'stretch',\n            'baseline',\n            'center-safe',\n            'end-safe',\n        ] as const\n    const scaleAlignSecondaryAxis = () =>\n        ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'] as const\n    const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()] as const\n    const scaleSizing = () =>\n        [\n            isFraction,\n            'auto',\n            'full',\n            'dvw',\n            'dvh',\n            'lvw',\n            'lvh',\n            'svw',\n            'svh',\n            'min',\n            'max',\n            'fit',\n            ...scaleUnambiguousSpacing(),\n        ] as const\n    const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue] as const\n    const scaleBgPosition = () =>\n        [\n            ...scalePosition(),\n            isArbitraryVariablePosition,\n            isArbitraryPosition,\n            { position: [isArbitraryVariable, isArbitraryValue] },\n        ] as const\n    const scaleBgRepeat = () => ['no-repeat', { repeat: ['', 'x', 'y', 'space', 'round'] }] as const\n    const scaleBgSize = () =>\n        [\n            'auto',\n            'cover',\n            'contain',\n            isArbitraryVariableSize,\n            isArbitrarySize,\n            { size: [isArbitraryVariable, isArbitraryValue] },\n        ] as const\n    const scaleGradientStopPosition = () =>\n        [isPercent, isArbitraryVariableLength, isArbitraryLength] as const\n    const scaleRadius = () =>\n        [\n            // Deprecated since Tailwind CSS v4.0.0\n            '',\n            'none',\n            'full',\n            themeRadius,\n            isArbitraryVariable,\n            isArbitraryValue,\n        ] as const\n    const scaleBorderWidth = () =>\n        ['', isNumber, isArbitraryVariableLength, isArbitraryLength] as const\n    const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'] as const\n    const scaleBlendMode = () =>\n        [\n            'normal',\n            'multiply',\n            'screen',\n            'overlay',\n            'darken',\n            'lighten',\n            'color-dodge',\n            'color-burn',\n            'hard-light',\n            'soft-light',\n            'difference',\n            'exclusion',\n            'hue',\n            'saturation',\n            'color',\n            'luminosity',\n        ] as const\n    const scaleMaskImagePosition = () =>\n        [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition] as const\n    const scaleBlur = () =>\n        [\n            // Deprecated since Tailwind CSS v4.0.0\n            '',\n            'none',\n            themeBlur,\n            isArbitraryVariable,\n            isArbitraryValue,\n        ] as const\n    const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n    const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n    const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue] as const\n    const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()] as const\n\n    return {\n        cacheSize: 500,\n        theme: {\n            animate: ['spin', 'ping', 'pulse', 'bounce'],\n            aspect: ['video'],\n            blur: [isTshirtSize],\n            breakpoint: [isTshirtSize],\n            color: [isAny],\n            container: [isTshirtSize],\n            'drop-shadow': [isTshirtSize],\n            ease: ['in', 'out', 'in-out'],\n            font: [isAnyNonArbitrary],\n            'font-weight': [\n                'thin',\n                'extralight',\n                'light',\n                'normal',\n                'medium',\n                'semibold',\n                'bold',\n                'extrabold',\n                'black',\n            ],\n            'inset-shadow': [isTshirtSize],\n            leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n            perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n            radius: [isTshirtSize],\n            shadow: [isTshirtSize],\n            spacing: ['px', isNumber],\n            text: [isTshirtSize],\n            'text-shadow': [isTshirtSize],\n            tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest'],\n        },\n        classGroups: {\n            // --------------\n            // --- Layout ---\n            // --------------\n\n            /**\n             * Aspect Ratio\n             * @see https://tailwindcss.com/docs/aspect-ratio\n             */\n            aspect: [\n                {\n                    aspect: [\n                        'auto',\n                        'square',\n                        isFraction,\n                        isArbitraryValue,\n                        isArbitraryVariable,\n                        themeAspect,\n                    ],\n                },\n            ],\n            /**\n             * Container\n             * @see https://tailwindcss.com/docs/container\n             * @deprecated since Tailwind CSS v4.0.0\n             */\n            container: ['container'],\n            /**\n             * Columns\n             * @see https://tailwindcss.com/docs/columns\n             */\n            columns: [\n                { columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer] },\n            ],\n            /**\n             * Break After\n             * @see https://tailwindcss.com/docs/break-after\n             */\n            'break-after': [{ 'break-after': scaleBreak() }],\n            /**\n             * Break Before\n             * @see https://tailwindcss.com/docs/break-before\n             */\n            'break-before': [{ 'break-before': scaleBreak() }],\n            /**\n             * Break Inside\n             * @see https://tailwindcss.com/docs/break-inside\n             */\n            'break-inside': [{ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column'] }],\n            /**\n             * Box Decoration Break\n             * @see https://tailwindcss.com/docs/box-decoration-break\n             */\n            'box-decoration': [{ 'box-decoration': ['slice', 'clone'] }],\n            /**\n             * Box Sizing\n             * @see https://tailwindcss.com/docs/box-sizing\n             */\n            box: [{ box: ['border', 'content'] }],\n            /**\n             * Display\n             * @see https://tailwindcss.com/docs/display\n             */\n            display: [\n                'block',\n                'inline-block',\n                'inline',\n                'flex',\n                'inline-flex',\n                'table',\n                'inline-table',\n                'table-caption',\n                'table-cell',\n                'table-column',\n                'table-column-group',\n                'table-footer-group',\n                'table-header-group',\n                'table-row-group',\n                'table-row',\n                'flow-root',\n                'grid',\n                'inline-grid',\n                'contents',\n                'list-item',\n                'hidden',\n            ],\n            /**\n             * Screen Reader Only\n             * @see https://tailwindcss.com/docs/display#screen-reader-only\n             */\n            sr: ['sr-only', 'not-sr-only'],\n            /**\n             * Floats\n             * @see https://tailwindcss.com/docs/float\n             */\n            float: [{ float: ['right', 'left', 'none', 'start', 'end'] }],\n            /**\n             * Clear\n             * @see https://tailwindcss.com/docs/clear\n             */\n            clear: [{ clear: ['left', 'right', 'both', 'none', 'start', 'end'] }],\n            /**\n             * Isolation\n             * @see https://tailwindcss.com/docs/isolation\n             */\n            isolation: ['isolate', 'isolation-auto'],\n            /**\n             * Object Fit\n             * @see https://tailwindcss.com/docs/object-fit\n             */\n            'object-fit': [{ object: ['contain', 'cover', 'fill', 'none', 'scale-down'] }],\n            /**\n             * Object Position\n             * @see https://tailwindcss.com/docs/object-position\n             */\n            'object-position': [{ object: scalePositionWithArbitrary() }],\n            /**\n             * Overflow\n             * @see https://tailwindcss.com/docs/overflow\n             */\n            overflow: [{ overflow: scaleOverflow() }],\n            /**\n             * Overflow X\n             * @see https://tailwindcss.com/docs/overflow\n             */\n            'overflow-x': [{ 'overflow-x': scaleOverflow() }],\n            /**\n             * Overflow Y\n             * @see https://tailwindcss.com/docs/overflow\n             */\n            'overflow-y': [{ 'overflow-y': scaleOverflow() }],\n            /**\n             * Overscroll Behavior\n             * @see https://tailwindcss.com/docs/overscroll-behavior\n             */\n            overscroll: [{ overscroll: scaleOverscroll() }],\n            /**\n             * Overscroll Behavior X\n             * @see https://tailwindcss.com/docs/overscroll-behavior\n             */\n            'overscroll-x': [{ 'overscroll-x': scaleOverscroll() }],\n            /**\n             * Overscroll Behavior Y\n             * @see https://tailwindcss.com/docs/overscroll-behavior\n             */\n            'overscroll-y': [{ 'overscroll-y': scaleOverscroll() }],\n            /**\n             * Position\n             * @see https://tailwindcss.com/docs/position\n             */\n            position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n            /**\n             * Top / Right / Bottom / Left\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            inset: [{ inset: scaleInset() }],\n            /**\n             * Right / Left\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            'inset-x': [{ 'inset-x': scaleInset() }],\n            /**\n             * Top / Bottom\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            'inset-y': [{ 'inset-y': scaleInset() }],\n            /**\n             * Start\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            start: [{ start: scaleInset() }],\n            /**\n             * End\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            end: [{ end: scaleInset() }],\n            /**\n             * Top\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            top: [{ top: scaleInset() }],\n            /**\n             * Right\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            right: [{ right: scaleInset() }],\n            /**\n             * Bottom\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            bottom: [{ bottom: scaleInset() }],\n            /**\n             * Left\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            left: [{ left: scaleInset() }],\n            /**\n             * Visibility\n             * @see https://tailwindcss.com/docs/visibility\n             */\n            visibility: ['visible', 'invisible', 'collapse'],\n            /**\n             * Z-Index\n             * @see https://tailwindcss.com/docs/z-index\n             */\n            z: [{ z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] }],\n\n            // ------------------------\n            // --- Flexbox and Grid ---\n            // ------------------------\n\n            /**\n             * Flex Basis\n             * @see https://tailwindcss.com/docs/flex-basis\n             */\n            basis: [\n                {\n                    basis: [\n                        isFraction,\n                        'full',\n                        'auto',\n                        themeContainer,\n                        ...scaleUnambiguousSpacing(),\n                    ],\n                },\n            ],\n            /**\n             * Flex Direction\n             * @see https://tailwindcss.com/docs/flex-direction\n             */\n            'flex-direction': [{ flex: ['row', 'row-reverse', 'col', 'col-reverse'] }],\n            /**\n             * Flex Wrap\n             * @see https://tailwindcss.com/docs/flex-wrap\n             */\n            'flex-wrap': [{ flex: ['nowrap', 'wrap', 'wrap-reverse'] }],\n            /**\n             * Flex\n             * @see https://tailwindcss.com/docs/flex\n             */\n            flex: [{ flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue] }],\n            /**\n             * Flex Grow\n             * @see https://tailwindcss.com/docs/flex-grow\n             */\n            grow: [{ grow: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Flex Shrink\n             * @see https://tailwindcss.com/docs/flex-shrink\n             */\n            shrink: [{ shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Order\n             * @see https://tailwindcss.com/docs/order\n             */\n            order: [\n                {\n                    order: [\n                        isInteger,\n                        'first',\n                        'last',\n                        'none',\n                        isArbitraryVariable,\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n            /**\n             * Grid Template Columns\n             * @see https://tailwindcss.com/docs/grid-template-columns\n             */\n            'grid-cols': [{ 'grid-cols': scaleGridTemplateColsRows() }],\n            /**\n             * Grid Column Start / End\n             * @see https://tailwindcss.com/docs/grid-column\n             */\n            'col-start-end': [{ col: scaleGridColRowStartAndEnd() }],\n            /**\n             * Grid Column Start\n             * @see https://tailwindcss.com/docs/grid-column\n             */\n            'col-start': [{ 'col-start': scaleGridColRowStartOrEnd() }],\n            /**\n             * Grid Column End\n             * @see https://tailwindcss.com/docs/grid-column\n             */\n            'col-end': [{ 'col-end': scaleGridColRowStartOrEnd() }],\n            /**\n             * Grid Template Rows\n             * @see https://tailwindcss.com/docs/grid-template-rows\n             */\n            'grid-rows': [{ 'grid-rows': scaleGridTemplateColsRows() }],\n            /**\n             * Grid Row Start / End\n             * @see https://tailwindcss.com/docs/grid-row\n             */\n            'row-start-end': [{ row: scaleGridColRowStartAndEnd() }],\n            /**\n             * Grid Row Start\n             * @see https://tailwindcss.com/docs/grid-row\n             */\n            'row-start': [{ 'row-start': scaleGridColRowStartOrEnd() }],\n            /**\n             * Grid Row End\n             * @see https://tailwindcss.com/docs/grid-row\n             */\n            'row-end': [{ 'row-end': scaleGridColRowStartOrEnd() }],\n            /**\n             * Grid Auto Flow\n             * @see https://tailwindcss.com/docs/grid-auto-flow\n             */\n            'grid-flow': [{ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense'] }],\n            /**\n             * Grid Auto Columns\n             * @see https://tailwindcss.com/docs/grid-auto-columns\n             */\n            'auto-cols': [{ 'auto-cols': scaleGridAutoColsRows() }],\n            /**\n             * Grid Auto Rows\n             * @see https://tailwindcss.com/docs/grid-auto-rows\n             */\n            'auto-rows': [{ 'auto-rows': scaleGridAutoColsRows() }],\n            /**\n             * Gap\n             * @see https://tailwindcss.com/docs/gap\n             */\n            gap: [{ gap: scaleUnambiguousSpacing() }],\n            /**\n             * Gap X\n             * @see https://tailwindcss.com/docs/gap\n             */\n            'gap-x': [{ 'gap-x': scaleUnambiguousSpacing() }],\n            /**\n             * Gap Y\n             * @see https://tailwindcss.com/docs/gap\n             */\n            'gap-y': [{ 'gap-y': scaleUnambiguousSpacing() }],\n            /**\n             * Justify Content\n             * @see https://tailwindcss.com/docs/justify-content\n             */\n            'justify-content': [{ justify: [...scaleAlignPrimaryAxis(), 'normal'] }],\n            /**\n             * Justify Items\n             * @see https://tailwindcss.com/docs/justify-items\n             */\n            'justify-items': [{ 'justify-items': [...scaleAlignSecondaryAxis(), 'normal'] }],\n            /**\n             * Justify Self\n             * @see https://tailwindcss.com/docs/justify-self\n             */\n            'justify-self': [{ 'justify-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n            /**\n             * Align Content\n             * @see https://tailwindcss.com/docs/align-content\n             */\n            'align-content': [{ content: ['normal', ...scaleAlignPrimaryAxis()] }],\n            /**\n             * Align Items\n             * @see https://tailwindcss.com/docs/align-items\n             */\n            'align-items': [{ items: [...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] }],\n            /**\n             * Align Self\n             * @see https://tailwindcss.com/docs/align-self\n             */\n            'align-self': [\n                { self: ['auto', ...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] },\n            ],\n            /**\n             * Place Content\n             * @see https://tailwindcss.com/docs/place-content\n             */\n            'place-content': [{ 'place-content': scaleAlignPrimaryAxis() }],\n            /**\n             * Place Items\n             * @see https://tailwindcss.com/docs/place-items\n             */\n            'place-items': [{ 'place-items': [...scaleAlignSecondaryAxis(), 'baseline'] }],\n            /**\n             * Place Self\n             * @see https://tailwindcss.com/docs/place-self\n             */\n            'place-self': [{ 'place-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n            // Spacing\n            /**\n             * Padding\n             * @see https://tailwindcss.com/docs/padding\n             */\n            p: [{ p: scaleUnambiguousSpacing() }],\n            /**\n             * Padding X\n             * @see https://tailwindcss.com/docs/padding\n             */\n            px: [{ px: scaleUnambiguousSpacing() }],\n            /**\n             * Padding Y\n             * @see https://tailwindcss.com/docs/padding\n             */\n            py: [{ py: scaleUnambiguousSpacing() }],\n            /**\n             * Padding Start\n             * @see https://tailwindcss.com/docs/padding\n             */\n            ps: [{ ps: scaleUnambiguousSpacing() }],\n            /**\n             * Padding End\n             * @see https://tailwindcss.com/docs/padding\n             */\n            pe: [{ pe: scaleUnambiguousSpacing() }],\n            /**\n             * Padding Top\n             * @see https://tailwindcss.com/docs/padding\n             */\n            pt: [{ pt: scaleUnambiguousSpacing() }],\n            /**\n             * Padding Right\n             * @see https://tailwindcss.com/docs/padding\n             */\n            pr: [{ pr: scaleUnambiguousSpacing() }],\n            /**\n             * Padding Bottom\n             * @see https://tailwindcss.com/docs/padding\n             */\n            pb: [{ pb: scaleUnambiguousSpacing() }],\n            /**\n             * Padding Left\n             * @see https://tailwindcss.com/docs/padding\n             */\n            pl: [{ pl: scaleUnambiguousSpacing() }],\n            /**\n             * Margin\n             * @see https://tailwindcss.com/docs/margin\n             */\n            m: [{ m: scaleMargin() }],\n            /**\n             * Margin X\n             * @see https://tailwindcss.com/docs/margin\n             */\n            mx: [{ mx: scaleMargin() }],\n            /**\n             * Margin Y\n             * @see https://tailwindcss.com/docs/margin\n             */\n            my: [{ my: scaleMargin() }],\n            /**\n             * Margin Start\n             * @see https://tailwindcss.com/docs/margin\n             */\n            ms: [{ ms: scaleMargin() }],\n            /**\n             * Margin End\n             * @see https://tailwindcss.com/docs/margin\n             */\n            me: [{ me: scaleMargin() }],\n            /**\n             * Margin Top\n             * @see https://tailwindcss.com/docs/margin\n             */\n            mt: [{ mt: scaleMargin() }],\n            /**\n             * Margin Right\n             * @see https://tailwindcss.com/docs/margin\n             */\n            mr: [{ mr: scaleMargin() }],\n            /**\n             * Margin Bottom\n             * @see https://tailwindcss.com/docs/margin\n             */\n            mb: [{ mb: scaleMargin() }],\n            /**\n             * Margin Left\n             * @see https://tailwindcss.com/docs/margin\n             */\n            ml: [{ ml: scaleMargin() }],\n            /**\n             * Space Between X\n             * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n             */\n            'space-x': [{ 'space-x': scaleUnambiguousSpacing() }],\n            /**\n             * Space Between X Reverse\n             * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n             */\n            'space-x-reverse': ['space-x-reverse'],\n            /**\n             * Space Between Y\n             * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n             */\n            'space-y': [{ 'space-y': scaleUnambiguousSpacing() }],\n            /**\n             * Space Between Y Reverse\n             * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n             */\n            'space-y-reverse': ['space-y-reverse'],\n\n            // --------------\n            // --- Sizing ---\n            // --------------\n\n            /**\n             * Size\n             * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n             */\n            size: [{ size: scaleSizing() }],\n            /**\n             * Width\n             * @see https://tailwindcss.com/docs/width\n             */\n            w: [{ w: [themeContainer, 'screen', ...scaleSizing()] }],\n            /**\n             * Min-Width\n             * @see https://tailwindcss.com/docs/min-width\n             */\n            'min-w': [\n                {\n                    'min-w': [\n                        themeContainer,\n                        'screen',\n                        /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n                        'none',\n                        ...scaleSizing(),\n                    ],\n                },\n            ],\n            /**\n             * Max-Width\n             * @see https://tailwindcss.com/docs/max-width\n             */\n            'max-w': [\n                {\n                    'max-w': [\n                        themeContainer,\n                        'screen',\n                        'none',\n                        /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n                        'prose',\n                        /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n                        { screen: [themeBreakpoint] },\n                        ...scaleSizing(),\n                    ],\n                },\n            ],\n            /**\n             * Height\n             * @see https://tailwindcss.com/docs/height\n             */\n            h: [{ h: ['screen', 'lh', ...scaleSizing()] }],\n            /**\n             * Min-Height\n             * @see https://tailwindcss.com/docs/min-height\n             */\n            'min-h': [{ 'min-h': ['screen', 'lh', 'none', ...scaleSizing()] }],\n            /**\n             * Max-Height\n             * @see https://tailwindcss.com/docs/max-height\n             */\n            'max-h': [{ 'max-h': ['screen', 'lh', ...scaleSizing()] }],\n\n            // ------------------\n            // --- Typography ---\n            // ------------------\n\n            /**\n             * Font Size\n             * @see https://tailwindcss.com/docs/font-size\n             */\n            'font-size': [\n                { text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength] },\n            ],\n            /**\n             * Font Smoothing\n             * @see https://tailwindcss.com/docs/font-smoothing\n             */\n            'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n            /**\n             * Font Style\n             * @see https://tailwindcss.com/docs/font-style\n             */\n            'font-style': ['italic', 'not-italic'],\n            /**\n             * Font Weight\n             * @see https://tailwindcss.com/docs/font-weight\n             */\n            'font-weight': [{ font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber] }],\n            /**\n             * Font Stretch\n             * @see https://tailwindcss.com/docs/font-stretch\n             */\n            'font-stretch': [\n                {\n                    'font-stretch': [\n                        'ultra-condensed',\n                        'extra-condensed',\n                        'condensed',\n                        'semi-condensed',\n                        'normal',\n                        'semi-expanded',\n                        'expanded',\n                        'extra-expanded',\n                        'ultra-expanded',\n                        isPercent,\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n            /**\n             * Font Family\n             * @see https://tailwindcss.com/docs/font-family\n             */\n            'font-family': [{ font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont] }],\n            /**\n             * Font Variant Numeric\n             * @see https://tailwindcss.com/docs/font-variant-numeric\n             */\n            'fvn-normal': ['normal-nums'],\n            /**\n             * Font Variant Numeric\n             * @see https://tailwindcss.com/docs/font-variant-numeric\n             */\n            'fvn-ordinal': ['ordinal'],\n            /**\n             * Font Variant Numeric\n             * @see https://tailwindcss.com/docs/font-variant-numeric\n             */\n            'fvn-slashed-zero': ['slashed-zero'],\n            /**\n             * Font Variant Numeric\n             * @see https://tailwindcss.com/docs/font-variant-numeric\n             */\n            'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n            /**\n             * Font Variant Numeric\n             * @see https://tailwindcss.com/docs/font-variant-numeric\n             */\n            'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n            /**\n             * Font Variant Numeric\n             * @see https://tailwindcss.com/docs/font-variant-numeric\n             */\n            'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n            /**\n             * Letter Spacing\n             * @see https://tailwindcss.com/docs/letter-spacing\n             */\n            tracking: [{ tracking: [themeTracking, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Line Clamp\n             * @see https://tailwindcss.com/docs/line-clamp\n             */\n            'line-clamp': [\n                { 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber] },\n            ],\n            /**\n             * Line Height\n             * @see https://tailwindcss.com/docs/line-height\n             */\n            leading: [\n                {\n                    leading: [\n                        /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n                        themeLeading,\n                        ...scaleUnambiguousSpacing(),\n                    ],\n                },\n            ],\n            /**\n             * List Style Image\n             * @see https://tailwindcss.com/docs/list-style-image\n             */\n            'list-image': [{ 'list-image': ['none', isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * List Style Position\n             * @see https://tailwindcss.com/docs/list-style-position\n             */\n            'list-style-position': [{ list: ['inside', 'outside'] }],\n            /**\n             * List Style Type\n             * @see https://tailwindcss.com/docs/list-style-type\n             */\n            'list-style-type': [\n                { list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Text Alignment\n             * @see https://tailwindcss.com/docs/text-align\n             */\n            'text-alignment': [{ text: ['left', 'center', 'right', 'justify', 'start', 'end'] }],\n            /**\n             * Placeholder Color\n             * @deprecated since Tailwind CSS v3.0.0\n             * @see https://v3.tailwindcss.com/docs/placeholder-color\n             */\n            'placeholder-color': [{ placeholder: scaleColor() }],\n            /**\n             * Text Color\n             * @see https://tailwindcss.com/docs/text-color\n             */\n            'text-color': [{ text: scaleColor() }],\n            /**\n             * Text Decoration\n             * @see https://tailwindcss.com/docs/text-decoration\n             */\n            'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n            /**\n             * Text Decoration Style\n             * @see https://tailwindcss.com/docs/text-decoration-style\n             */\n            'text-decoration-style': [{ decoration: [...scaleLineStyle(), 'wavy'] }],\n            /**\n             * Text Decoration Thickness\n             * @see https://tailwindcss.com/docs/text-decoration-thickness\n             */\n            'text-decoration-thickness': [\n                {\n                    decoration: [\n                        isNumber,\n                        'from-font',\n                        'auto',\n                        isArbitraryVariable,\n                        isArbitraryLength,\n                    ],\n                },\n            ],\n            /**\n             * Text Decoration Color\n             * @see https://tailwindcss.com/docs/text-decoration-color\n             */\n            'text-decoration-color': [{ decoration: scaleColor() }],\n            /**\n             * Text Underline Offset\n             * @see https://tailwindcss.com/docs/text-underline-offset\n             */\n            'underline-offset': [\n                { 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Text Transform\n             * @see https://tailwindcss.com/docs/text-transform\n             */\n            'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n            /**\n             * Text Overflow\n             * @see https://tailwindcss.com/docs/text-overflow\n             */\n            'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n            /**\n             * Text Wrap\n             * @see https://tailwindcss.com/docs/text-wrap\n             */\n            'text-wrap': [{ text: ['wrap', 'nowrap', 'balance', 'pretty'] }],\n            /**\n             * Text Indent\n             * @see https://tailwindcss.com/docs/text-indent\n             */\n            indent: [{ indent: scaleUnambiguousSpacing() }],\n            /**\n             * Vertical Alignment\n             * @see https://tailwindcss.com/docs/vertical-align\n             */\n            'vertical-align': [\n                {\n                    align: [\n                        'baseline',\n                        'top',\n                        'middle',\n                        'bottom',\n                        'text-top',\n                        'text-bottom',\n                        'sub',\n                        'super',\n                        isArbitraryVariable,\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n            /**\n             * Whitespace\n             * @see https://tailwindcss.com/docs/whitespace\n             */\n            whitespace: [\n                { whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces'] },\n            ],\n            /**\n             * Word Break\n             * @see https://tailwindcss.com/docs/word-break\n             */\n            break: [{ break: ['normal', 'words', 'all', 'keep'] }],\n            /**\n             * Overflow Wrap\n             * @see https://tailwindcss.com/docs/overflow-wrap\n             */\n            wrap: [{ wrap: ['break-word', 'anywhere', 'normal'] }],\n            /**\n             * Hyphens\n             * @see https://tailwindcss.com/docs/hyphens\n             */\n            hyphens: [{ hyphens: ['none', 'manual', 'auto'] }],\n            /**\n             * Content\n             * @see https://tailwindcss.com/docs/content\n             */\n            content: [{ content: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n            // -------------------\n            // --- Backgrounds ---\n            // -------------------\n\n            /**\n             * Background Attachment\n             * @see https://tailwindcss.com/docs/background-attachment\n             */\n            'bg-attachment': [{ bg: ['fixed', 'local', 'scroll'] }],\n            /**\n             * Background Clip\n             * @see https://tailwindcss.com/docs/background-clip\n             */\n            'bg-clip': [{ 'bg-clip': ['border', 'padding', 'content', 'text'] }],\n            /**\n             * Background Origin\n             * @see https://tailwindcss.com/docs/background-origin\n             */\n            'bg-origin': [{ 'bg-origin': ['border', 'padding', 'content'] }],\n            /**\n             * Background Position\n             * @see https://tailwindcss.com/docs/background-position\n             */\n            'bg-position': [{ bg: scaleBgPosition() }],\n            /**\n             * Background Repeat\n             * @see https://tailwindcss.com/docs/background-repeat\n             */\n            'bg-repeat': [{ bg: scaleBgRepeat() }],\n            /**\n             * Background Size\n             * @see https://tailwindcss.com/docs/background-size\n             */\n            'bg-size': [{ bg: scaleBgSize() }],\n            /**\n             * Background Image\n             * @see https://tailwindcss.com/docs/background-image\n             */\n            'bg-image': [\n                {\n                    bg: [\n                        'none',\n                        {\n                            linear: [\n                                { to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl'] },\n                                isInteger,\n                                isArbitraryVariable,\n                                isArbitraryValue,\n                            ],\n                            radial: ['', isArbitraryVariable, isArbitraryValue],\n                            conic: [isInteger, isArbitraryVariable, isArbitraryValue],\n                        },\n                        isArbitraryVariableImage,\n                        isArbitraryImage,\n                    ],\n                },\n            ],\n            /**\n             * Background Color\n             * @see https://tailwindcss.com/docs/background-color\n             */\n            'bg-color': [{ bg: scaleColor() }],\n            /**\n             * Gradient Color Stops From Position\n             * @see https://tailwindcss.com/docs/gradient-color-stops\n             */\n            'gradient-from-pos': [{ from: scaleGradientStopPosition() }],\n            /**\n             * Gradient Color Stops Via Position\n             * @see https://tailwindcss.com/docs/gradient-color-stops\n             */\n            'gradient-via-pos': [{ via: scaleGradientStopPosition() }],\n            /**\n             * Gradient Color Stops To Position\n             * @see https://tailwindcss.com/docs/gradient-color-stops\n             */\n            'gradient-to-pos': [{ to: scaleGradientStopPosition() }],\n            /**\n             * Gradient Color Stops From\n             * @see https://tailwindcss.com/docs/gradient-color-stops\n             */\n            'gradient-from': [{ from: scaleColor() }],\n            /**\n             * Gradient Color Stops Via\n             * @see https://tailwindcss.com/docs/gradient-color-stops\n             */\n            'gradient-via': [{ via: scaleColor() }],\n            /**\n             * Gradient Color Stops To\n             * @see https://tailwindcss.com/docs/gradient-color-stops\n             */\n            'gradient-to': [{ to: scaleColor() }],\n\n            // ---------------\n            // --- Borders ---\n            // ---------------\n\n            /**\n             * Border Radius\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            rounded: [{ rounded: scaleRadius() }],\n            /**\n             * Border Radius Start\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-s': [{ 'rounded-s': scaleRadius() }],\n            /**\n             * Border Radius End\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-e': [{ 'rounded-e': scaleRadius() }],\n            /**\n             * Border Radius Top\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-t': [{ 'rounded-t': scaleRadius() }],\n            /**\n             * Border Radius Right\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-r': [{ 'rounded-r': scaleRadius() }],\n            /**\n             * Border Radius Bottom\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-b': [{ 'rounded-b': scaleRadius() }],\n            /**\n             * Border Radius Left\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-l': [{ 'rounded-l': scaleRadius() }],\n            /**\n             * Border Radius Start Start\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-ss': [{ 'rounded-ss': scaleRadius() }],\n            /**\n             * Border Radius Start End\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-se': [{ 'rounded-se': scaleRadius() }],\n            /**\n             * Border Radius End End\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-ee': [{ 'rounded-ee': scaleRadius() }],\n            /**\n             * Border Radius End Start\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-es': [{ 'rounded-es': scaleRadius() }],\n            /**\n             * Border Radius Top Left\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-tl': [{ 'rounded-tl': scaleRadius() }],\n            /**\n             * Border Radius Top Right\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-tr': [{ 'rounded-tr': scaleRadius() }],\n            /**\n             * Border Radius Bottom Right\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-br': [{ 'rounded-br': scaleRadius() }],\n            /**\n             * Border Radius Bottom Left\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-bl': [{ 'rounded-bl': scaleRadius() }],\n            /**\n             * Border Width\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w': [{ border: scaleBorderWidth() }],\n            /**\n             * Border Width X\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-x': [{ 'border-x': scaleBorderWidth() }],\n            /**\n             * Border Width Y\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-y': [{ 'border-y': scaleBorderWidth() }],\n            /**\n             * Border Width Start\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-s': [{ 'border-s': scaleBorderWidth() }],\n            /**\n             * Border Width End\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-e': [{ 'border-e': scaleBorderWidth() }],\n            /**\n             * Border Width Top\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-t': [{ 'border-t': scaleBorderWidth() }],\n            /**\n             * Border Width Right\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-r': [{ 'border-r': scaleBorderWidth() }],\n            /**\n             * Border Width Bottom\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-b': [{ 'border-b': scaleBorderWidth() }],\n            /**\n             * Border Width Left\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-l': [{ 'border-l': scaleBorderWidth() }],\n            /**\n             * Divide Width X\n             * @see https://tailwindcss.com/docs/border-width#between-children\n             */\n            'divide-x': [{ 'divide-x': scaleBorderWidth() }],\n            /**\n             * Divide Width X Reverse\n             * @see https://tailwindcss.com/docs/border-width#between-children\n             */\n            'divide-x-reverse': ['divide-x-reverse'],\n            /**\n             * Divide Width Y\n             * @see https://tailwindcss.com/docs/border-width#between-children\n             */\n            'divide-y': [{ 'divide-y': scaleBorderWidth() }],\n            /**\n             * Divide Width Y Reverse\n             * @see https://tailwindcss.com/docs/border-width#between-children\n             */\n            'divide-y-reverse': ['divide-y-reverse'],\n            /**\n             * Border Style\n             * @see https://tailwindcss.com/docs/border-style\n             */\n            'border-style': [{ border: [...scaleLineStyle(), 'hidden', 'none'] }],\n            /**\n             * Divide Style\n             * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n             */\n            'divide-style': [{ divide: [...scaleLineStyle(), 'hidden', 'none'] }],\n            /**\n             * Border Color\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color': [{ border: scaleColor() }],\n            /**\n             * Border Color X\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-x': [{ 'border-x': scaleColor() }],\n            /**\n             * Border Color Y\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-y': [{ 'border-y': scaleColor() }],\n            /**\n             * Border Color S\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-s': [{ 'border-s': scaleColor() }],\n            /**\n             * Border Color E\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-e': [{ 'border-e': scaleColor() }],\n            /**\n             * Border Color Top\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-t': [{ 'border-t': scaleColor() }],\n            /**\n             * Border Color Right\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-r': [{ 'border-r': scaleColor() }],\n            /**\n             * Border Color Bottom\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-b': [{ 'border-b': scaleColor() }],\n            /**\n             * Border Color Left\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-l': [{ 'border-l': scaleColor() }],\n            /**\n             * Divide Color\n             * @see https://tailwindcss.com/docs/divide-color\n             */\n            'divide-color': [{ divide: scaleColor() }],\n            /**\n             * Outline Style\n             * @see https://tailwindcss.com/docs/outline-style\n             */\n            'outline-style': [{ outline: [...scaleLineStyle(), 'none', 'hidden'] }],\n            /**\n             * Outline Offset\n             * @see https://tailwindcss.com/docs/outline-offset\n             */\n            'outline-offset': [\n                { 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Outline Width\n             * @see https://tailwindcss.com/docs/outline-width\n             */\n            'outline-w': [\n                { outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength] },\n            ],\n            /**\n             * Outline Color\n             * @see https://tailwindcss.com/docs/outline-color\n             */\n            'outline-color': [{ outline: scaleColor() }],\n\n            // ---------------\n            // --- Effects ---\n            // ---------------\n\n            /**\n             * Box Shadow\n             * @see https://tailwindcss.com/docs/box-shadow\n             */\n            shadow: [\n                {\n                    shadow: [\n                        // Deprecated since Tailwind CSS v4.0.0\n                        '',\n                        'none',\n                        themeShadow,\n                        isArbitraryVariableShadow,\n                        isArbitraryShadow,\n                    ],\n                },\n            ],\n            /**\n             * Box Shadow Color\n             * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n             */\n            'shadow-color': [{ shadow: scaleColor() }],\n            /**\n             * Inset Box Shadow\n             * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n             */\n            'inset-shadow': [\n                {\n                    'inset-shadow': [\n                        'none',\n                        themeInsetShadow,\n                        isArbitraryVariableShadow,\n                        isArbitraryShadow,\n                    ],\n                },\n            ],\n            /**\n             * Inset Box Shadow Color\n             * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n             */\n            'inset-shadow-color': [{ 'inset-shadow': scaleColor() }],\n            /**\n             * Ring Width\n             * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n             */\n            'ring-w': [{ ring: scaleBorderWidth() }],\n            /**\n             * Ring Width Inset\n             * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n             * @deprecated since Tailwind CSS v4.0.0\n             * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n             */\n            'ring-w-inset': ['ring-inset'],\n            /**\n             * Ring Color\n             * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n             */\n            'ring-color': [{ ring: scaleColor() }],\n            /**\n             * Ring Offset Width\n             * @see https://v3.tailwindcss.com/docs/ring-offset-width\n             * @deprecated since Tailwind CSS v4.0.0\n             * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n             */\n            'ring-offset-w': [{ 'ring-offset': [isNumber, isArbitraryLength] }],\n            /**\n             * Ring Offset Color\n             * @see https://v3.tailwindcss.com/docs/ring-offset-color\n             * @deprecated since Tailwind CSS v4.0.0\n             * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n             */\n            'ring-offset-color': [{ 'ring-offset': scaleColor() }],\n            /**\n             * Inset Ring Width\n             * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n             */\n            'inset-ring-w': [{ 'inset-ring': scaleBorderWidth() }],\n            /**\n             * Inset Ring Color\n             * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n             */\n            'inset-ring-color': [{ 'inset-ring': scaleColor() }],\n            /**\n             * Text Shadow\n             * @see https://tailwindcss.com/docs/text-shadow\n             */\n            'text-shadow': [\n                {\n                    'text-shadow': [\n                        'none',\n                        themeTextShadow,\n                        isArbitraryVariableShadow,\n                        isArbitraryShadow,\n                    ],\n                },\n            ],\n            /**\n             * Text Shadow Color\n             * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n             */\n            'text-shadow-color': [{ 'text-shadow': scaleColor() }],\n            /**\n             * Opacity\n             * @see https://tailwindcss.com/docs/opacity\n             */\n            opacity: [{ opacity: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Mix Blend Mode\n             * @see https://tailwindcss.com/docs/mix-blend-mode\n             */\n            'mix-blend': [{ 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter'] }],\n            /**\n             * Background Blend Mode\n             * @see https://tailwindcss.com/docs/background-blend-mode\n             */\n            'bg-blend': [{ 'bg-blend': scaleBlendMode() }],\n            /**\n             * Mask Clip\n             * @see https://tailwindcss.com/docs/mask-clip\n             */\n            'mask-clip': [\n                { 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n                'mask-no-clip',\n            ],\n            /**\n             * Mask Composite\n             * @see https://tailwindcss.com/docs/mask-composite\n             */\n            'mask-composite': [{ mask: ['add', 'subtract', 'intersect', 'exclude'] }],\n            /**\n             * Mask Image\n             * @see https://tailwindcss.com/docs/mask-image\n             */\n            'mask-image-linear-pos': [{ 'mask-linear': [isNumber] }],\n            'mask-image-linear-from-pos': [{ 'mask-linear-from': scaleMaskImagePosition() }],\n            'mask-image-linear-to-pos': [{ 'mask-linear-to': scaleMaskImagePosition() }],\n            'mask-image-linear-from-color': [{ 'mask-linear-from': scaleColor() }],\n            'mask-image-linear-to-color': [{ 'mask-linear-to': scaleColor() }],\n            'mask-image-t-from-pos': [{ 'mask-t-from': scaleMaskImagePosition() }],\n            'mask-image-t-to-pos': [{ 'mask-t-to': scaleMaskImagePosition() }],\n            'mask-image-t-from-color': [{ 'mask-t-from': scaleColor() }],\n            'mask-image-t-to-color': [{ 'mask-t-to': scaleColor() }],\n            'mask-image-r-from-pos': [{ 'mask-r-from': scaleMaskImagePosition() }],\n            'mask-image-r-to-pos': [{ 'mask-r-to': scaleMaskImagePosition() }],\n            'mask-image-r-from-color': [{ 'mask-r-from': scaleColor() }],\n            'mask-image-r-to-color': [{ 'mask-r-to': scaleColor() }],\n            'mask-image-b-from-pos': [{ 'mask-b-from': scaleMaskImagePosition() }],\n            'mask-image-b-to-pos': [{ 'mask-b-to': scaleMaskImagePosition() }],\n            'mask-image-b-from-color': [{ 'mask-b-from': scaleColor() }],\n            'mask-image-b-to-color': [{ 'mask-b-to': scaleColor() }],\n            'mask-image-l-from-pos': [{ 'mask-l-from': scaleMaskImagePosition() }],\n            'mask-image-l-to-pos': [{ 'mask-l-to': scaleMaskImagePosition() }],\n            'mask-image-l-from-color': [{ 'mask-l-from': scaleColor() }],\n            'mask-image-l-to-color': [{ 'mask-l-to': scaleColor() }],\n            'mask-image-x-from-pos': [{ 'mask-x-from': scaleMaskImagePosition() }],\n            'mask-image-x-to-pos': [{ 'mask-x-to': scaleMaskImagePosition() }],\n            'mask-image-x-from-color': [{ 'mask-x-from': scaleColor() }],\n            'mask-image-x-to-color': [{ 'mask-x-to': scaleColor() }],\n            'mask-image-y-from-pos': [{ 'mask-y-from': scaleMaskImagePosition() }],\n            'mask-image-y-to-pos': [{ 'mask-y-to': scaleMaskImagePosition() }],\n            'mask-image-y-from-color': [{ 'mask-y-from': scaleColor() }],\n            'mask-image-y-to-color': [{ 'mask-y-to': scaleColor() }],\n            'mask-image-radial': [{ 'mask-radial': [isArbitraryVariable, isArbitraryValue] }],\n            'mask-image-radial-from-pos': [{ 'mask-radial-from': scaleMaskImagePosition() }],\n            'mask-image-radial-to-pos': [{ 'mask-radial-to': scaleMaskImagePosition() }],\n            'mask-image-radial-from-color': [{ 'mask-radial-from': scaleColor() }],\n            'mask-image-radial-to-color': [{ 'mask-radial-to': scaleColor() }],\n            'mask-image-radial-shape': [{ 'mask-radial': ['circle', 'ellipse'] }],\n            'mask-image-radial-size': [\n                { 'mask-radial': [{ closest: ['side', 'corner'], farthest: ['side', 'corner'] }] },\n            ],\n            'mask-image-radial-pos': [{ 'mask-radial-at': scalePosition() }],\n            'mask-image-conic-pos': [{ 'mask-conic': [isNumber] }],\n            'mask-image-conic-from-pos': [{ 'mask-conic-from': scaleMaskImagePosition() }],\n            'mask-image-conic-to-pos': [{ 'mask-conic-to': scaleMaskImagePosition() }],\n            'mask-image-conic-from-color': [{ 'mask-conic-from': scaleColor() }],\n            'mask-image-conic-to-color': [{ 'mask-conic-to': scaleColor() }],\n            /**\n             * Mask Mode\n             * @see https://tailwindcss.com/docs/mask-mode\n             */\n            'mask-mode': [{ mask: ['alpha', 'luminance', 'match'] }],\n            /**\n             * Mask Origin\n             * @see https://tailwindcss.com/docs/mask-origin\n             */\n            'mask-origin': [\n                { 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n            ],\n            /**\n             * Mask Position\n             * @see https://tailwindcss.com/docs/mask-position\n             */\n            'mask-position': [{ mask: scaleBgPosition() }],\n            /**\n             * Mask Repeat\n             * @see https://tailwindcss.com/docs/mask-repeat\n             */\n            'mask-repeat': [{ mask: scaleBgRepeat() }],\n            /**\n             * Mask Size\n             * @see https://tailwindcss.com/docs/mask-size\n             */\n            'mask-size': [{ mask: scaleBgSize() }],\n            /**\n             * Mask Type\n             * @see https://tailwindcss.com/docs/mask-type\n             */\n            'mask-type': [{ 'mask-type': ['alpha', 'luminance'] }],\n            /**\n             * Mask Image\n             * @see https://tailwindcss.com/docs/mask-image\n             */\n            'mask-image': [{ mask: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n            // ---------------\n            // --- Filters ---\n            // ---------------\n\n            /**\n             * Filter\n             * @see https://tailwindcss.com/docs/filter\n             */\n            filter: [\n                {\n                    filter: [\n                        // Deprecated since Tailwind CSS v3.0.0\n                        '',\n                        'none',\n                        isArbitraryVariable,\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n            /**\n             * Blur\n             * @see https://tailwindcss.com/docs/blur\n             */\n            blur: [{ blur: scaleBlur() }],\n            /**\n             * Brightness\n             * @see https://tailwindcss.com/docs/brightness\n             */\n            brightness: [{ brightness: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Contrast\n             * @see https://tailwindcss.com/docs/contrast\n             */\n            contrast: [{ contrast: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Drop Shadow\n             * @see https://tailwindcss.com/docs/drop-shadow\n             */\n            'drop-shadow': [\n                {\n                    'drop-shadow': [\n                        // Deprecated since Tailwind CSS v4.0.0\n                        '',\n                        'none',\n                        themeDropShadow,\n                        isArbitraryVariableShadow,\n                        isArbitraryShadow,\n                    ],\n                },\n            ],\n            /**\n             * Drop Shadow Color\n             * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n             */\n            'drop-shadow-color': [{ 'drop-shadow': scaleColor() }],\n            /**\n             * Grayscale\n             * @see https://tailwindcss.com/docs/grayscale\n             */\n            grayscale: [{ grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Hue Rotate\n             * @see https://tailwindcss.com/docs/hue-rotate\n             */\n            'hue-rotate': [{ 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Invert\n             * @see https://tailwindcss.com/docs/invert\n             */\n            invert: [{ invert: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Saturate\n             * @see https://tailwindcss.com/docs/saturate\n             */\n            saturate: [{ saturate: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Sepia\n             * @see https://tailwindcss.com/docs/sepia\n             */\n            sepia: [{ sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Backdrop Filter\n             * @see https://tailwindcss.com/docs/backdrop-filter\n             */\n            'backdrop-filter': [\n                {\n                    'backdrop-filter': [\n                        // Deprecated since Tailwind CSS v3.0.0\n                        '',\n                        'none',\n                        isArbitraryVariable,\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n            /**\n             * Backdrop Blur\n             * @see https://tailwindcss.com/docs/backdrop-blur\n             */\n            'backdrop-blur': [{ 'backdrop-blur': scaleBlur() }],\n            /**\n             * Backdrop Brightness\n             * @see https://tailwindcss.com/docs/backdrop-brightness\n             */\n            'backdrop-brightness': [\n                { 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Backdrop Contrast\n             * @see https://tailwindcss.com/docs/backdrop-contrast\n             */\n            'backdrop-contrast': [\n                { 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Backdrop Grayscale\n             * @see https://tailwindcss.com/docs/backdrop-grayscale\n             */\n            'backdrop-grayscale': [\n                { 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Backdrop Hue Rotate\n             * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n             */\n            'backdrop-hue-rotate': [\n                { 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Backdrop Invert\n             * @see https://tailwindcss.com/docs/backdrop-invert\n             */\n            'backdrop-invert': [\n                { 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Backdrop Opacity\n             * @see https://tailwindcss.com/docs/backdrop-opacity\n             */\n            'backdrop-opacity': [\n                { 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Backdrop Saturate\n             * @see https://tailwindcss.com/docs/backdrop-saturate\n             */\n            'backdrop-saturate': [\n                { 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Backdrop Sepia\n             * @see https://tailwindcss.com/docs/backdrop-sepia\n             */\n            'backdrop-sepia': [\n                { 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n            ],\n\n            // --------------\n            // --- Tables ---\n            // --------------\n\n            /**\n             * Border Collapse\n             * @see https://tailwindcss.com/docs/border-collapse\n             */\n            'border-collapse': [{ border: ['collapse', 'separate'] }],\n            /**\n             * Border Spacing\n             * @see https://tailwindcss.com/docs/border-spacing\n             */\n            'border-spacing': [{ 'border-spacing': scaleUnambiguousSpacing() }],\n            /**\n             * Border Spacing X\n             * @see https://tailwindcss.com/docs/border-spacing\n             */\n            'border-spacing-x': [{ 'border-spacing-x': scaleUnambiguousSpacing() }],\n            /**\n             * Border Spacing Y\n             * @see https://tailwindcss.com/docs/border-spacing\n             */\n            'border-spacing-y': [{ 'border-spacing-y': scaleUnambiguousSpacing() }],\n            /**\n             * Table Layout\n             * @see https://tailwindcss.com/docs/table-layout\n             */\n            'table-layout': [{ table: ['auto', 'fixed'] }],\n            /**\n             * Caption Side\n             * @see https://tailwindcss.com/docs/caption-side\n             */\n            caption: [{ caption: ['top', 'bottom'] }],\n\n            // ---------------------------------\n            // --- Transitions and Animation ---\n            // ---------------------------------\n\n            /**\n             * Transition Property\n             * @see https://tailwindcss.com/docs/transition-property\n             */\n            transition: [\n                {\n                    transition: [\n                        '',\n                        'all',\n                        'colors',\n                        'opacity',\n                        'shadow',\n                        'transform',\n                        'none',\n                        isArbitraryVariable,\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n            /**\n             * Transition Behavior\n             * @see https://tailwindcss.com/docs/transition-behavior\n             */\n            'transition-behavior': [{ transition: ['normal', 'discrete'] }],\n            /**\n             * Transition Duration\n             * @see https://tailwindcss.com/docs/transition-duration\n             */\n            duration: [{ duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Transition Timing Function\n             * @see https://tailwindcss.com/docs/transition-timing-function\n             */\n            ease: [\n                { ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Transition Delay\n             * @see https://tailwindcss.com/docs/transition-delay\n             */\n            delay: [{ delay: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Animation\n             * @see https://tailwindcss.com/docs/animation\n             */\n            animate: [{ animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue] }],\n\n            // ------------------\n            // --- Transforms ---\n            // ------------------\n\n            /**\n             * Backface Visibility\n             * @see https://tailwindcss.com/docs/backface-visibility\n             */\n            backface: [{ backface: ['hidden', 'visible'] }],\n            /**\n             * Perspective\n             * @see https://tailwindcss.com/docs/perspective\n             */\n            perspective: [\n                { perspective: [themePerspective, isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Perspective Origin\n             * @see https://tailwindcss.com/docs/perspective-origin\n             */\n            'perspective-origin': [{ 'perspective-origin': scalePositionWithArbitrary() }],\n            /**\n             * Rotate\n             * @see https://tailwindcss.com/docs/rotate\n             */\n            rotate: [{ rotate: scaleRotate() }],\n            /**\n             * Rotate X\n             * @see https://tailwindcss.com/docs/rotate\n             */\n            'rotate-x': [{ 'rotate-x': scaleRotate() }],\n            /**\n             * Rotate Y\n             * @see https://tailwindcss.com/docs/rotate\n             */\n            'rotate-y': [{ 'rotate-y': scaleRotate() }],\n            /**\n             * Rotate Z\n             * @see https://tailwindcss.com/docs/rotate\n             */\n            'rotate-z': [{ 'rotate-z': scaleRotate() }],\n            /**\n             * Scale\n             * @see https://tailwindcss.com/docs/scale\n             */\n            scale: [{ scale: scaleScale() }],\n            /**\n             * Scale X\n             * @see https://tailwindcss.com/docs/scale\n             */\n            'scale-x': [{ 'scale-x': scaleScale() }],\n            /**\n             * Scale Y\n             * @see https://tailwindcss.com/docs/scale\n             */\n            'scale-y': [{ 'scale-y': scaleScale() }],\n            /**\n             * Scale Z\n             * @see https://tailwindcss.com/docs/scale\n             */\n            'scale-z': [{ 'scale-z': scaleScale() }],\n            /**\n             * Scale 3D\n             * @see https://tailwindcss.com/docs/scale\n             */\n            'scale-3d': ['scale-3d'],\n            /**\n             * Skew\n             * @see https://tailwindcss.com/docs/skew\n             */\n            skew: [{ skew: scaleSkew() }],\n            /**\n             * Skew X\n             * @see https://tailwindcss.com/docs/skew\n             */\n            'skew-x': [{ 'skew-x': scaleSkew() }],\n            /**\n             * Skew Y\n             * @see https://tailwindcss.com/docs/skew\n             */\n            'skew-y': [{ 'skew-y': scaleSkew() }],\n            /**\n             * Transform\n             * @see https://tailwindcss.com/docs/transform\n             */\n            transform: [\n                { transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu'] },\n            ],\n            /**\n             * Transform Origin\n             * @see https://tailwindcss.com/docs/transform-origin\n             */\n            'transform-origin': [{ origin: scalePositionWithArbitrary() }],\n            /**\n             * Transform Style\n             * @see https://tailwindcss.com/docs/transform-style\n             */\n            'transform-style': [{ transform: ['3d', 'flat'] }],\n            /**\n             * Translate\n             * @see https://tailwindcss.com/docs/translate\n             */\n            translate: [{ translate: scaleTranslate() }],\n            /**\n             * Translate X\n             * @see https://tailwindcss.com/docs/translate\n             */\n            'translate-x': [{ 'translate-x': scaleTranslate() }],\n            /**\n             * Translate Y\n             * @see https://tailwindcss.com/docs/translate\n             */\n            'translate-y': [{ 'translate-y': scaleTranslate() }],\n            /**\n             * Translate Z\n             * @see https://tailwindcss.com/docs/translate\n             */\n            'translate-z': [{ 'translate-z': scaleTranslate() }],\n            /**\n             * Translate None\n             * @see https://tailwindcss.com/docs/translate\n             */\n            'translate-none': ['translate-none'],\n\n            // ---------------------\n            // --- Interactivity ---\n            // ---------------------\n\n            /**\n             * Accent Color\n             * @see https://tailwindcss.com/docs/accent-color\n             */\n            accent: [{ accent: scaleColor() }],\n            /**\n             * Appearance\n             * @see https://tailwindcss.com/docs/appearance\n             */\n            appearance: [{ appearance: ['none', 'auto'] }],\n            /**\n             * Caret Color\n             * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n             */\n            'caret-color': [{ caret: scaleColor() }],\n            /**\n             * Color Scheme\n             * @see https://tailwindcss.com/docs/color-scheme\n             */\n            'color-scheme': [\n                { scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light'] },\n            ],\n            /**\n             * Cursor\n             * @see https://tailwindcss.com/docs/cursor\n             */\n            cursor: [\n                {\n                    cursor: [\n                        'auto',\n                        'default',\n                        'pointer',\n                        'wait',\n                        'text',\n                        'move',\n                        'help',\n                        'not-allowed',\n                        'none',\n                        'context-menu',\n                        'progress',\n                        'cell',\n                        'crosshair',\n                        'vertical-text',\n                        'alias',\n                        'copy',\n                        'no-drop',\n                        'grab',\n                        'grabbing',\n                        'all-scroll',\n                        'col-resize',\n                        'row-resize',\n                        'n-resize',\n                        'e-resize',\n                        's-resize',\n                        'w-resize',\n                        'ne-resize',\n                        'nw-resize',\n                        'se-resize',\n                        'sw-resize',\n                        'ew-resize',\n                        'ns-resize',\n                        'nesw-resize',\n                        'nwse-resize',\n                        'zoom-in',\n                        'zoom-out',\n                        isArbitraryVariable,\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n            /**\n             * Field Sizing\n             * @see https://tailwindcss.com/docs/field-sizing\n             */\n            'field-sizing': [{ 'field-sizing': ['fixed', 'content'] }],\n            /**\n             * Pointer Events\n             * @see https://tailwindcss.com/docs/pointer-events\n             */\n            'pointer-events': [{ 'pointer-events': ['auto', 'none'] }],\n            /**\n             * Resize\n             * @see https://tailwindcss.com/docs/resize\n             */\n            resize: [{ resize: ['none', '', 'y', 'x'] }],\n            /**\n             * Scroll Behavior\n             * @see https://tailwindcss.com/docs/scroll-behavior\n             */\n            'scroll-behavior': [{ scroll: ['auto', 'smooth'] }],\n            /**\n             * Scroll Margin\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-m': [{ 'scroll-m': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Margin X\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-mx': [{ 'scroll-mx': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Margin Y\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-my': [{ 'scroll-my': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Margin Start\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-ms': [{ 'scroll-ms': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Margin End\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-me': [{ 'scroll-me': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Margin Top\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-mt': [{ 'scroll-mt': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Margin Right\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-mr': [{ 'scroll-mr': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Margin Bottom\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-mb': [{ 'scroll-mb': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Margin Left\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-ml': [{ 'scroll-ml': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Padding\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-p': [{ 'scroll-p': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Padding X\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-px': [{ 'scroll-px': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Padding Y\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-py': [{ 'scroll-py': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Padding Start\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-ps': [{ 'scroll-ps': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Padding End\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-pe': [{ 'scroll-pe': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Padding Top\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-pt': [{ 'scroll-pt': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Padding Right\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-pr': [{ 'scroll-pr': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Padding Bottom\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-pb': [{ 'scroll-pb': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Padding Left\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-pl': [{ 'scroll-pl': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Snap Align\n             * @see https://tailwindcss.com/docs/scroll-snap-align\n             */\n            'snap-align': [{ snap: ['start', 'end', 'center', 'align-none'] }],\n            /**\n             * Scroll Snap Stop\n             * @see https://tailwindcss.com/docs/scroll-snap-stop\n             */\n            'snap-stop': [{ snap: ['normal', 'always'] }],\n            /**\n             * Scroll Snap Type\n             * @see https://tailwindcss.com/docs/scroll-snap-type\n             */\n            'snap-type': [{ snap: ['none', 'x', 'y', 'both'] }],\n            /**\n             * Scroll Snap Type Strictness\n             * @see https://tailwindcss.com/docs/scroll-snap-type\n             */\n            'snap-strictness': [{ snap: ['mandatory', 'proximity'] }],\n            /**\n             * Touch Action\n             * @see https://tailwindcss.com/docs/touch-action\n             */\n            touch: [{ touch: ['auto', 'none', 'manipulation'] }],\n            /**\n             * Touch Action X\n             * @see https://tailwindcss.com/docs/touch-action\n             */\n            'touch-x': [{ 'touch-pan': ['x', 'left', 'right'] }],\n            /**\n             * Touch Action Y\n             * @see https://tailwindcss.com/docs/touch-action\n             */\n            'touch-y': [{ 'touch-pan': ['y', 'up', 'down'] }],\n            /**\n             * Touch Action Pinch Zoom\n             * @see https://tailwindcss.com/docs/touch-action\n             */\n            'touch-pz': ['touch-pinch-zoom'],\n            /**\n             * User Select\n             * @see https://tailwindcss.com/docs/user-select\n             */\n            select: [{ select: ['none', 'text', 'all', 'auto'] }],\n            /**\n             * Will Change\n             * @see https://tailwindcss.com/docs/will-change\n             */\n            'will-change': [\n                {\n                    'will-change': [\n                        'auto',\n                        'scroll',\n                        'contents',\n                        'transform',\n                        isArbitraryVariable,\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n\n            // -----------\n            // --- SVG ---\n            // -----------\n\n            /**\n             * Fill\n             * @see https://tailwindcss.com/docs/fill\n             */\n            fill: [{ fill: ['none', ...scaleColor()] }],\n            /**\n             * Stroke Width\n             * @see https://tailwindcss.com/docs/stroke-width\n             */\n            'stroke-w': [\n                {\n                    stroke: [\n                        isNumber,\n                        isArbitraryVariableLength,\n                        isArbitraryLength,\n                        isArbitraryNumber,\n                    ],\n                },\n            ],\n            /**\n             * Stroke\n             * @see https://tailwindcss.com/docs/stroke\n             */\n            stroke: [{ stroke: ['none', ...scaleColor()] }],\n\n            // ---------------------\n            // --- Accessibility ---\n            // ---------------------\n\n            /**\n             * Forced Color Adjust\n             * @see https://tailwindcss.com/docs/forced-color-adjust\n             */\n            'forced-color-adjust': [{ 'forced-color-adjust': ['auto', 'none'] }],\n        },\n        conflictingClassGroups: {\n            overflow: ['overflow-x', 'overflow-y'],\n            overscroll: ['overscroll-x', 'overscroll-y'],\n            inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n            'inset-x': ['right', 'left'],\n            'inset-y': ['top', 'bottom'],\n            flex: ['basis', 'grow', 'shrink'],\n            gap: ['gap-x', 'gap-y'],\n            p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n            px: ['pr', 'pl'],\n            py: ['pt', 'pb'],\n            m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n            mx: ['mr', 'ml'],\n            my: ['mt', 'mb'],\n            size: ['w', 'h'],\n            'font-size': ['leading'],\n            'fvn-normal': [\n                'fvn-ordinal',\n                'fvn-slashed-zero',\n                'fvn-figure',\n                'fvn-spacing',\n                'fvn-fraction',\n            ],\n            'fvn-ordinal': ['fvn-normal'],\n            'fvn-slashed-zero': ['fvn-normal'],\n            'fvn-figure': ['fvn-normal'],\n            'fvn-spacing': ['fvn-normal'],\n            'fvn-fraction': ['fvn-normal'],\n            'line-clamp': ['display', 'overflow'],\n            rounded: [\n                'rounded-s',\n                'rounded-e',\n                'rounded-t',\n                'rounded-r',\n                'rounded-b',\n                'rounded-l',\n                'rounded-ss',\n                'rounded-se',\n                'rounded-ee',\n                'rounded-es',\n                'rounded-tl',\n                'rounded-tr',\n                'rounded-br',\n                'rounded-bl',\n            ],\n            'rounded-s': ['rounded-ss', 'rounded-es'],\n            'rounded-e': ['rounded-se', 'rounded-ee'],\n            'rounded-t': ['rounded-tl', 'rounded-tr'],\n            'rounded-r': ['rounded-tr', 'rounded-br'],\n            'rounded-b': ['rounded-br', 'rounded-bl'],\n            'rounded-l': ['rounded-tl', 'rounded-bl'],\n            'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n            'border-w': [\n                'border-w-x',\n                'border-w-y',\n                'border-w-s',\n                'border-w-e',\n                'border-w-t',\n                'border-w-r',\n                'border-w-b',\n                'border-w-l',\n            ],\n            'border-w-x': ['border-w-r', 'border-w-l'],\n            'border-w-y': ['border-w-t', 'border-w-b'],\n            'border-color': [\n                'border-color-x',\n                'border-color-y',\n                'border-color-s',\n                'border-color-e',\n                'border-color-t',\n                'border-color-r',\n                'border-color-b',\n                'border-color-l',\n            ],\n            'border-color-x': ['border-color-r', 'border-color-l'],\n            'border-color-y': ['border-color-t', 'border-color-b'],\n            translate: ['translate-x', 'translate-y', 'translate-none'],\n            'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n            'scroll-m': [\n                'scroll-mx',\n                'scroll-my',\n                'scroll-ms',\n                'scroll-me',\n                'scroll-mt',\n                'scroll-mr',\n                'scroll-mb',\n                'scroll-ml',\n            ],\n            'scroll-mx': ['scroll-mr', 'scroll-ml'],\n            'scroll-my': ['scroll-mt', 'scroll-mb'],\n            'scroll-p': [\n                'scroll-px',\n                'scroll-py',\n                'scroll-ps',\n                'scroll-pe',\n                'scroll-pt',\n                'scroll-pr',\n                'scroll-pb',\n                'scroll-pl',\n            ],\n            'scroll-px': ['scroll-pr', 'scroll-pl'],\n            'scroll-py': ['scroll-pt', 'scroll-pb'],\n            touch: ['touch-x', 'touch-y', 'touch-pz'],\n            'touch-x': ['touch'],\n            'touch-y': ['touch'],\n            'touch-pz': ['touch'],\n        },\n        conflictingClassGroupModifiers: {\n            'font-size': ['leading'],\n        },\n        orderSensitiveModifiers: [\n            '*',\n            '**',\n            'after',\n            'backdrop',\n            'before',\n            'details-content',\n            'file',\n            'first-letter',\n            'first-line',\n            'marker',\n            'placeholder',\n            'selection',\n        ],\n    } as const satisfies Config<DefaultClassGroupIds, DefaultThemeGroupIds>\n}\n","import { AnyConfig, ConfigExtension, NoInfer } from './types'\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nexport const mergeConfigs = <ClassGroupIds extends string, ThemeGroupIds extends string = never>(\n    baseConfig: AnyConfig,\n    {\n        cacheSize,\n        prefix,\n        experimentalParseClassName,\n        extend = {},\n        override = {},\n    }: ConfigExtension<ClassGroupIds, ThemeGroupIds>,\n) => {\n    overrideProperty(baseConfig, 'cacheSize', cacheSize)\n    overrideProperty(baseConfig, 'prefix', prefix)\n    overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName)\n\n    overrideConfigProperties(baseConfig.theme, override.theme)\n    overrideConfigProperties(baseConfig.classGroups, override.classGroups)\n    overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups)\n    overrideConfigProperties(\n        baseConfig.conflictingClassGroupModifiers,\n        override.conflictingClassGroupModifiers,\n    )\n    overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers)\n\n    mergeConfigProperties(baseConfig.theme, extend.theme)\n    mergeConfigProperties(baseConfig.classGroups, extend.classGroups)\n    mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups)\n    mergeConfigProperties(\n        baseConfig.conflictingClassGroupModifiers,\n        extend.conflictingClassGroupModifiers,\n    )\n    mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers')\n\n    return baseConfig\n}\n\nconst overrideProperty = <T extends object, K extends keyof T>(\n    baseObject: T,\n    overrideKey: K,\n    overrideValue: T[K] | undefined,\n) => {\n    if (overrideValue !== undefined) {\n        baseObject[overrideKey] = overrideValue\n    }\n}\n\nconst overrideConfigProperties = (\n    baseObject: Partial<Record<string, readonly unknown[]>>,\n    overrideObject: Partial<Record<string, readonly unknown[]>> | undefined,\n) => {\n    if (overrideObject) {\n        for (const key in overrideObject) {\n            overrideProperty(baseObject, key, overrideObject[key])\n        }\n    }\n}\n\nconst mergeConfigProperties = (\n    baseObject: Partial<Record<string, readonly unknown[]>>,\n    mergeObject: Partial<Record<string, readonly unknown[]>> | undefined,\n) => {\n    if (mergeObject) {\n        for (const key in mergeObject) {\n            mergeArrayProperties(baseObject, mergeObject, key)\n        }\n    }\n}\n\nconst mergeArrayProperties = <Key extends string>(\n    baseObject: Partial<Record<NoInfer<Key>, readonly unknown[]>>,\n    mergeObject: Partial<Record<NoInfer<Key>, readonly unknown[]>>,\n    key: Key,\n) => {\n    const mergeValue = mergeObject[key]\n\n    if (mergeValue !== undefined) {\n        baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue\n    }\n}\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\nimport { mergeConfigs } from './merge-configs'\nimport { AnyConfig, ConfigExtension, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\n\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\n\nexport const extendTailwindMerge = <\n    AdditionalClassGroupIds extends string = never,\n    AdditionalThemeGroupIds extends string = never,\n>(\n    configExtension:\n        | ConfigExtension<\n              DefaultClassGroupIds | AdditionalClassGroupIds,\n              DefaultThemeGroupIds | AdditionalThemeGroupIds\n          >\n        | CreateConfigSubsequent,\n    ...createConfig: CreateConfigSubsequent[]\n) =>\n    typeof configExtension === 'function'\n        ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig)\n        : createTailwindMerge(\n              () => mergeConfigs(getDefaultConfig(), configExtension),\n              ...createConfig,\n          )\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\n\nexport const twMerge = createTailwindMerge(getDefaultConfig)\n","import { type ClassValue, clsx } from \"clsx\"\r\nimport { twMerge } from \"tailwind-merge\"\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n  return twMerge(clsx(inputs))\r\n}\r\n","import * as React from \"react\"\r\nimport { Slot } from \"@radix-ui/react-slot\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst buttonVariants = cva(\r\n  \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-semibold ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\r\n  {\r\n    variants: {\r\n      variant: {\r\n        default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\r\n        destructive:\r\n          \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\r\n        outline:\r\n          \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\r\n        secondary:\r\n          \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\r\n        ghost: \"hover:bg-accent hover:text-accent-foreground\",\r\n        link: \"text-primary underline-offset-4 hover:underline\",\r\n        success: \"bg-green-600 text-white hover:bg-green-700\",\r\n      },\r\n      size: {\r\n        default: \"h-12 px-4 py-2\",\r\n        sm: \"h-10 rounded-lg px-3\",\r\n        lg: \"h-14 rounded-2xl px-8\",\r\n        icon: \"h-10 w-10\",\r\n      },\r\n    },\r\n    defaultVariants: {\r\n      variant: \"default\",\r\n      size: \"default\",\r\n    },\r\n  }\r\n)\r\n\r\nexport interface ButtonProps\r\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>,\r\n    VariantProps<typeof buttonVariants> {\r\n  asChild?: boolean\r\n}\r\n\r\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\r\n    const Comp = asChild ? Slot : \"button\"\r\n    return (\r\n      <Comp\r\n        className={cn(buttonVariants({ variant, size, className }))}\r\n        ref={ref}\r\n        {...props}\r\n      />\r\n    )\r\n  }\r\n)\r\nButton.displayName = \"Button\"\r\n\r\nexport { Button, buttonVariants }\r\n","import * as React from 'react';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\n\n/* -------------------------------------------------------------------------------------------------\n * Slot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotProps extends React.HTMLAttributes<HTMLElement> {\n  children?: React.ReactNode;\n}\n\n/* @__NO_SIDE_EFFECTS__ */ export function createSlot(ownerName: string) {\n  const SlotClone = createSlotClone(ownerName);\n  const Slot = React.forwardRef<HTMLElement, SlotProps>((props, forwardedRef) => {\n    const { children, ...slotProps } = props;\n    const childrenArray = React.Children.toArray(children);\n    const slottable = childrenArray.find(isSlottable);\n\n    if (slottable) {\n      // the new element to render is the one passed as a child of `Slottable`\n      const newElement = slottable.props.children;\n\n      const newChildren = childrenArray.map((child) => {\n        if (child === slottable) {\n          // because the new element will be the one rendered, we are only interested\n          // in grabbing its children (`newElement.props.children`)\n          if (React.Children.count(newElement) > 1) return React.Children.only(null);\n          return React.isValidElement(newElement)\n            ? (newElement.props as { children: React.ReactNode }).children\n            : null;\n        } else {\n          return child;\n        }\n      });\n\n      return (\n        <SlotClone {...slotProps} ref={forwardedRef}>\n          {React.isValidElement(newElement)\n            ? React.cloneElement(newElement, undefined, newChildren)\n            : null}\n        </SlotClone>\n      );\n    }\n\n    return (\n      <SlotClone {...slotProps} ref={forwardedRef}>\n        {children}\n      </SlotClone>\n    );\n  });\n\n  Slot.displayName = `${ownerName}.Slot`;\n  return Slot;\n}\n\nconst Slot = createSlot('Slot');\n\n/* -------------------------------------------------------------------------------------------------\n * SlotClone\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotCloneProps {\n  children: React.ReactNode;\n}\n\n/* @__NO_SIDE_EFFECTS__ */ function createSlotClone(ownerName: string) {\n  const SlotClone = React.forwardRef<any, SlotCloneProps>((props, forwardedRef) => {\n    const { children, ...slotProps } = props;\n\n    if (React.isValidElement(children)) {\n      const childrenRef = getElementRef(children);\n      const props = mergeProps(slotProps, children.props as AnyProps);\n      // do not pass ref to React.Fragment for React 19 compatibility\n      if (children.type !== React.Fragment) {\n        props.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n      }\n      return React.cloneElement(children, props);\n    }\n\n    return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n  });\n\n  SlotClone.displayName = `${ownerName}.SlotClone`;\n  return SlotClone;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Slottable\n * -----------------------------------------------------------------------------------------------*/\n\nconst SLOTTABLE_IDENTIFIER = Symbol('radix.slottable');\n\ninterface SlottableProps {\n  children: React.ReactNode;\n}\n\ninterface SlottableComponent extends React.FC<SlottableProps> {\n  __radixId: symbol;\n}\n\n/* @__NO_SIDE_EFFECTS__ */ export function createSlottable(ownerName: string) {\n  const Slottable: SlottableComponent = ({ children }) => {\n    return <>{children}</>;\n  };\n  Slottable.displayName = `${ownerName}.Slottable`;\n  Slottable.__radixId = SLOTTABLE_IDENTIFIER;\n  return Slottable;\n}\n\nconst Slottable = createSlottable('Slottable');\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype AnyProps = Record<string, any>;\n\nfunction isSlottable(\n  child: React.ReactNode\n): child is React.ReactElement<SlottableProps, typeof Slottable> {\n  return (\n    React.isValidElement(child) &&\n    typeof child.type === 'function' &&\n    '__radixId' in child.type &&\n    child.type.__radixId === SLOTTABLE_IDENTIFIER\n  );\n}\n\nfunction mergeProps(slotProps: AnyProps, childProps: AnyProps) {\n  // all child props should override\n  const overrideProps = { ...childProps };\n\n  for (const propName in childProps) {\n    const slotPropValue = slotProps[propName];\n    const childPropValue = childProps[propName];\n\n    const isHandler = /^on[A-Z]/.test(propName);\n    if (isHandler) {\n      // if the handler exists on both, we compose them\n      if (slotPropValue && childPropValue) {\n        overrideProps[propName] = (...args: unknown[]) => {\n          const result = childPropValue(...args);\n          slotPropValue(...args);\n          return result;\n        };\n      }\n      // but if it exists only on the slot, we use only this one\n      else if (slotPropValue) {\n        overrideProps[propName] = slotPropValue;\n      }\n    }\n    // if it's `style`, we merge them\n    else if (propName === 'style') {\n      overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n    } else if (propName === 'className') {\n      overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(' ');\n    }\n  }\n\n  return { ...slotProps, ...overrideProps };\n}\n\n// Before React 19 accessing `element.props.ref` will throw a warning and suggest using `element.ref`\n// After React 19 accessing `element.ref` does the opposite.\n// https://github.com/facebook/react/pull/28348\n//\n// Access the ref using the method that doesn't yield a warning.\nfunction getElementRef(element: React.ReactElement) {\n  // React <=18 in DEV\n  let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get;\n  let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return (element as any).ref;\n  }\n\n  // React 19 in DEV\n  getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get;\n  mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return (element.props as { ref?: React.Ref<unknown> }).ref;\n  }\n\n  // Not DEV\n  return (element.props as { ref?: React.Ref<unknown> }).ref || (element as any).ref;\n}\n\nexport {\n  Slot,\n  Slottable,\n  //\n  Slot as Root,\n};\nexport type { SlotProps };\n","import * as React from 'react';\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n  if (typeof ref === 'function') {\n    return ref(value);\n  } else if (ref !== null && ref !== undefined) {\n    ref.current = value;\n  }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n  return (node) => {\n    let hasCleanup = false;\n    const cleanups = refs.map((ref) => {\n      const cleanup = setRef(ref, node);\n      if (!hasCleanup && typeof cleanup == 'function') {\n        hasCleanup = true;\n      }\n      return cleanup;\n    });\n\n    // React <19 will log an error to the console if a callback ref returns a\n    // value. We don't use ref cleanups internally so this will only happen if a\n    // user's ref callback returns a value, which we only expect if they are\n    // using the cleanup functionality added in React 19.\n    if (hasCleanup) {\n      return () => {\n        for (let i = 0; i < cleanups.length; i++) {\n          const cleanup = cleanups[i];\n          if (typeof cleanup == 'function') {\n            cleanup();\n          } else {\n            setRef(refs[i], null);\n          }\n        }\n      };\n    }\n  };\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n        var _config_compoundVariants;\n        if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n        const { variants, defaultVariants } = config;\n        const getVariantClassNames = Object.keys(variants).map((variant)=>{\n            const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n            const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n            if (variantProp === null) return null;\n            const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n            return variants[variant][variantKey];\n        });\n        const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n            let [key, value] = param;\n            if (value === undefined) {\n                return acc;\n            }\n            acc[key] = value;\n            return acc;\n        }, {});\n        const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n            let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n            return Object.entries(compoundVariantOptions).every((param)=>{\n                let [key, value] = param;\n                return Array.isArray(value) ? value.includes({\n                    ...defaultVariants,\n                    ...propsWithoutUndefined\n                }[key]) : ({\n                    ...defaultVariants,\n                    ...propsWithoutUndefined\n                })[key] === value;\n            }) ? [\n                ...acc,\n                cvClass,\n                cvClassName\n            ] : acc;\n        }, []);\n        return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n    };\n\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface InputProps\r\n  extends React.InputHTMLAttributes<HTMLInputElement> {}\r\n\r\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\r\n  ({ className, type, ...props }, ref) => {\r\n    return (\r\n      <input\r\n        type={type}\r\n        className={cn(\r\n          \"flex h-12 w-full rounded-xl border border-input bg-background px-3.5 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\r\n          className\r\n        )}\r\n        ref={ref}\r\n        {...props}\r\n      />\r\n    )\r\n  }\r\n)\r\nInput.displayName = \"Input\"\r\n\r\nexport { Input }\r\n","import * as React from \"react\"\r\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst labelVariants = cva(\r\n  \"text-sm font-semibold leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\r\n)\r\n\r\nconst Label = React.forwardRef<\r\n  React.ElementRef<typeof LabelPrimitive.Root>,\r\n  React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\r\n    VariantProps<typeof labelVariants>\r\n>(({ className, ...props }, ref) => (\r\n  <LabelPrimitive.Root\r\n    ref={ref}\r\n    className={cn(labelVariants(), className)}\r\n    {...props}\r\n  />\r\n))\r\nLabel.displayName = LabelPrimitive.Root.displayName\r\n\r\nexport { Label }\r\n","import * as React from 'react';\nimport { Primitive } from '@radix-ui/react-primitive';\n\n/* -------------------------------------------------------------------------------------------------\n * Label\n * -----------------------------------------------------------------------------------------------*/\n\nconst NAME = 'Label';\n\ntype LabelElement = React.ComponentRef<typeof Primitive.label>;\ntype PrimitiveLabelProps = React.ComponentPropsWithoutRef<typeof Primitive.label>;\ninterface LabelProps extends PrimitiveLabelProps {}\n\nconst Label = React.forwardRef<LabelElement, LabelProps>((props, forwardedRef) => {\n  return (\n    <Primitive.label\n      {...props}\n      ref={forwardedRef}\n      onMouseDown={(event) => {\n        // only prevent text selection if clicking inside the label itself\n        const target = event.target as HTMLElement;\n        if (target.closest('button, input, select, textarea')) return;\n\n        props.onMouseDown?.(event);\n        // prevent text selection when double clicking label\n        if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n      }}\n    />\n  );\n});\n\nLabel.displayName = NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Label;\n\nexport {\n  Label,\n  //\n  Root,\n};\nexport type { LabelProps };\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createSlot } from '@radix-ui/react-slot';\n\nconst NODES = [\n  'a',\n  'button',\n  'div',\n  'form',\n  'h2',\n  'h3',\n  'img',\n  'input',\n  'label',\n  'li',\n  'nav',\n  'ol',\n  'p',\n  'select',\n  'span',\n  'svg',\n  'ul',\n] as const;\n\ntype Primitives = { [E in (typeof NODES)[number]]: PrimitiveForwardRefComponent<E> };\ntype PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {\n  asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent<E extends React.ElementType>\n  extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce((primitive, node) => {\n  const Slot = createSlot(`Primitive.${node}`);\n  const Node = React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {\n    const { asChild, ...primitiveProps } = props;\n    const Comp: any = asChild ? Slot : node;\n\n    if (typeof window !== 'undefined') {\n      (window as any)[Symbol.for('radix-ui')] = true;\n    }\n\n    return <Comp {...primitiveProps} ref={forwardedRef} />;\n  });\n\n  Node.displayName = `Primitive.${node}`;\n\n  return { ...primitive, [node]: Node };\n}, {} as Primitives);\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n *  - discrete\n *  - continuous\n *  - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an  important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not necessary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click 👎\n * target.dispatchEvent(new Event(‘click’))\n *\n * dispatching a custom type within a non-discrete event 👎\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}\n *\n * dispatching a custom type within a `discrete` event 👍\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's  not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */\n\nfunction dispatchDiscreteCustomEvent<E extends CustomEvent>(target: E['target'], event: E) {\n  if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Primitive;\n\nexport {\n  Primitive,\n  //\n  Root,\n  //\n  dispatchDiscreteCustomEvent,\n};\nexport type { PrimitivePropsWithRef };\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Card = React.forwardRef<\r\n  HTMLDivElement,\r\n  React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n  <div\r\n    ref={ref}\r\n    className={cn(\r\n      \"rounded-2xl border border-border bg-card text-card-foreground shadow-sm\",\r\n      className\r\n    )}\r\n    {...props}\r\n  />\r\n))\r\nCard.displayName = \"Card\"\r\n\r\nconst CardHeader = React.forwardRef<\r\n  HTMLDivElement,\r\n  React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n  <div\r\n    ref={ref}\r\n    className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\r\n    {...props}\r\n  />\r\n))\r\nCardHeader.displayName = \"CardHeader\"\r\n\r\nconst CardTitle = React.forwardRef<\r\n  HTMLDivElement,\r\n  React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n  <div\r\n    ref={ref}\r\n    className={cn(\r\n      \"text-2xl font-semibold leading-none tracking-tight\",\r\n      className\r\n    )}\r\n    {...props}\r\n  />\r\n))\r\nCardTitle.displayName = \"CardTitle\"\r\n\r\nconst CardDescription = React.forwardRef<\r\n  HTMLDivElement,\r\n  React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n  <div\r\n    ref={ref}\r\n    className={cn(\"text-sm text-muted-foreground\", className)}\r\n    {...props}\r\n  />\r\n))\r\nCardDescription.displayName = \"CardDescription\"\r\n\r\nconst CardContent = React.forwardRef<\r\n  HTMLDivElement,\r\n  React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n  <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\r\n))\r\nCardContent.displayName = \"CardContent\"\r\n\r\nconst CardFooter = React.forwardRef<\r\n  HTMLDivElement,\r\n  React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n  <div\r\n    ref={ref}\r\n    className={cn(\"flex items-center p-6 pt-0\", className)}\r\n    {...props}\r\n  />\r\n))\r\nCardFooter.displayName = \"CardFooter\"\r\n\r\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\r\n"],"mappings":"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","names":["CLASS_PART_SEPARATOR","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","getClassGroupId","className","classParts","split","length","shift","getGroupRecursive","getGroupIdForArbitraryProperty","getConflictingClassGroupIds","classGroupId","hasPostfixModifier","conflicts","classPartObject","currentClassPart","nextClassPartObject","nextPart","get","classGroupFromNextClassPart","slice","undefined","validators","classRest","join","find","validator","arbitraryPropertyRegex","test","arbitraryPropertyClassName","exec","property","substring","indexOf","theme","classGroups","Map","processClassesRecursively","classGroup","forEach","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","push","Object","entries","key","path","currentClassPartObject","pathPart","has","set","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","value","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","MODIFIER_SEPARATOR_LENGTH","createParseClassName","prefix","experimentalParseClassName","parseClassName","modifiers","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","baseClassName","stripImportantModifier","hasImportantModifier","maybePostfixModifierPosition","fullPrefix","parseClassNameOriginal","startsWith","isExternal","endsWith","createSortModifiers","orderSensitiveModifiers","fromEntries","map","modifier","sortModifiers","sortedModifiers","unsortedModifiers","isPositionSensitive","sort","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","classGroupsInConflict","classNames","trim","result","originalClassName","variantModifier","modifierId","classId","includes","conflictGroups","i","group","twJoin","argument","resolvedValue","string","arguments","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","reduce","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","callTailwindMerge","apply","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","Number","isNaN","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","fromTheme","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","isArbitraryVariable","isArbitraryValue","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","isFraction","scaleGridTemplateColsRows","isInteger","scaleGridColRowStartAndEnd","span","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","isArbitraryVariablePosition","isArbitraryPosition","position","scaleBgRepeat","repeat","scaleBgSize","isArbitraryVariableSize","isArbitrarySize","size","scaleGradientStopPosition","isPercent","isArbitraryVariableLength","isArbitraryLength","scaleRadius","scaleBorderWidth","isNumber","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","cacheSize","theme","animate","aspect","blur","isTshirtSize","breakpoint","color","isAny","container","ease","font","isAnyNonArbitrary","leading","perspective","radius","shadow","spacing","text","tracking","classGroups","columns","box","display","sr","float","clear","isolation","object","overflow","overscroll","inset","start","end","top","right","bottom","left","visibility","z","basis","flex","grow","shrink","order","col","row","gap","justify","content","items","baseline","self","p","px","py","ps","pe","pt","pr","pb","pl","m","mx","my","ms","me","mt","mr","mb","ml","w","screen","h","isArbitraryNumber","isArbitraryVariableFamilyName","list","placeholder","decoration","indent","align","whitespace","break","wrap","hyphens","bg","linear","to","radial","conic","isArbitraryVariableImage","isArbitraryImage","from","via","rounded","border","divide","outline","isArbitraryVariableShadow","isArbitraryShadow","ring","opacity","mask","closest","farthest","filter","brightness","contrast","grayscale","invert","saturate","sepia","table","caption","transition","duration","delay","backface","rotate","scale","skew","transform","origin","translate","accent","appearance","caret","scheme","cursor","resize","scroll","snap","touch","select","fill","stroke","conflictingClassGroups","conflictingClassGroupModifiers","orderSensitiveModifiers","twMerge","createTailwindMerge","getDefaultConfig","React","React","Slot","props","param","import_jsx_runtime","React","import_jsx_runtime","React","React","React","import_jsx_runtime","Slot","import_jsx_runtime","import_jsx_runtime","Label","React","import_jsx_runtime","import_jsx_runtime","error","json","React","Label"]}