UNPKG

@jonmatum/react-mfe-shell

Version:

Production-ready React micro frontend shell with atomic design system, shared components, and utilities for building scalable MFE applications

1,728 lines (1,722 loc) 85 kB
import * as React$1 from 'react'; import React__default, { ComponentType, ReactNode } from 'react'; import * as react_jsx_runtime from 'react/jsx-runtime'; /** * Design Token System * Single source of truth for all design values * Supports theming, accessibility, and Tailwind CSS integration */ /** * Base color palette - semantic color definitions * All colors meet WCAG AA contrast requirements */ declare const baseColors: { readonly white: "#ffffff"; readonly black: "#000000"; readonly gray: { readonly 50: "#f9fafb"; readonly 100: "#f3f4f6"; readonly 200: "#e5e7eb"; readonly 300: "#d1d5db"; readonly 400: "#9ca3af"; readonly 500: "#6b7280"; readonly 600: "#4b5563"; readonly 700: "#374151"; readonly 800: "#1f2937"; readonly 900: "#111827"; readonly 950: "#030712"; }; readonly blue: { readonly 50: "#eff6ff"; readonly 100: "#dbeafe"; readonly 200: "#bfdbfe"; readonly 300: "#93c5fd"; readonly 400: "#60a5fa"; readonly 500: "#3b82f6"; readonly 600: "#2563eb"; readonly 700: "#1d4ed8"; readonly 800: "#1e40af"; readonly 900: "#1e3a8a"; readonly 950: "#172554"; }; readonly green: { readonly 50: "#f0fdf4"; readonly 100: "#dcfce7"; readonly 200: "#bbf7d0"; readonly 300: "#86efac"; readonly 400: "#4ade80"; readonly 500: "#22c55e"; readonly 600: "#16a34a"; readonly 700: "#15803d"; readonly 800: "#166534"; readonly 900: "#14532d"; readonly 950: "#052e16"; }; readonly yellow: { readonly 50: "#fefce8"; readonly 100: "#fef3c7"; readonly 200: "#fde68a"; readonly 300: "#fcd34d"; readonly 400: "#fbbf24"; readonly 500: "#f59e0b"; readonly 600: "#d97706"; readonly 700: "#b45309"; readonly 800: "#92400e"; readonly 900: "#78350f"; readonly 950: "#451a03"; }; readonly red: { readonly 50: "#fef2f2"; readonly 100: "#fee2e2"; readonly 200: "#fecaca"; readonly 300: "#fca5a5"; readonly 400: "#f87171"; readonly 500: "#ef4444"; readonly 600: "#dc2626"; readonly 700: "#b91c1c"; readonly 800: "#991b1b"; readonly 900: "#7f1d1d"; readonly 950: "#450a0a"; }; readonly cyan: { readonly 50: "#ecfeff"; readonly 100: "#cffafe"; readonly 200: "#a5f3fc"; readonly 300: "#67e8f9"; readonly 400: "#22d3ee"; readonly 500: "#06b6d4"; readonly 600: "#0891b2"; readonly 700: "#0e7490"; readonly 800: "#155e75"; readonly 900: "#164e63"; readonly 950: "#083344"; }; }; /** * Semantic color tokens - mapped to base colors * These provide meaning and context to colors */ declare const semanticColors: { readonly primary: { readonly 50: "#eff6ff"; readonly 100: "#dbeafe"; readonly 200: "#bfdbfe"; readonly 300: "#93c5fd"; readonly 400: "#60a5fa"; readonly 500: "#3b82f6"; readonly 600: "#2563eb"; readonly 700: "#1d4ed8"; readonly 800: "#1e40af"; readonly 900: "#1e3a8a"; readonly 950: "#172554"; }; readonly secondary: { readonly 50: "#f9fafb"; readonly 100: "#f3f4f6"; readonly 200: "#e5e7eb"; readonly 300: "#d1d5db"; readonly 400: "#9ca3af"; readonly 500: "#6b7280"; readonly 600: "#4b5563"; readonly 700: "#374151"; readonly 800: "#1f2937"; readonly 900: "#111827"; readonly 950: "#030712"; }; readonly success: { readonly 50: "#f0fdf4"; readonly 100: "#dcfce7"; readonly 200: "#bbf7d0"; readonly 300: "#86efac"; readonly 400: "#4ade80"; readonly 500: "#22c55e"; readonly 600: "#16a34a"; readonly 700: "#15803d"; readonly 800: "#166534"; readonly 900: "#14532d"; readonly 950: "#052e16"; }; readonly warning: { readonly 50: "#fefce8"; readonly 100: "#fef3c7"; readonly 200: "#fde68a"; readonly 300: "#fcd34d"; readonly 400: "#fbbf24"; readonly 500: "#f59e0b"; readonly 600: "#d97706"; readonly 700: "#b45309"; readonly 800: "#92400e"; readonly 900: "#78350f"; readonly 950: "#451a03"; }; readonly error: { readonly 50: "#fef2f2"; readonly 100: "#fee2e2"; readonly 200: "#fecaca"; readonly 300: "#fca5a5"; readonly 400: "#f87171"; readonly 500: "#ef4444"; readonly 600: "#dc2626"; readonly 700: "#b91c1c"; readonly 800: "#991b1b"; readonly 900: "#7f1d1d"; readonly 950: "#450a0a"; }; readonly info: { readonly 50: "#ecfeff"; readonly 100: "#cffafe"; readonly 200: "#a5f3fc"; readonly 300: "#67e8f9"; readonly 400: "#22d3ee"; readonly 500: "#06b6d4"; readonly 600: "#0891b2"; readonly 700: "#0e7490"; readonly 800: "#155e75"; readonly 900: "#164e63"; readonly 950: "#083344"; }; }; /** * Theme-aware color system * Defines colors for light and dark themes */ declare const themeColors: { readonly light: { readonly background: { readonly primary: "#ffffff"; readonly secondary: "#f9fafb"; readonly tertiary: "#f3f4f6"; }; readonly surface: { readonly primary: "#ffffff"; readonly secondary: "#f9fafb"; readonly tertiary: "#f3f4f6"; readonly elevated: "#ffffff"; }; readonly text: { readonly primary: "#111827"; readonly secondary: "#4b5563"; readonly tertiary: "#6b7280"; readonly inverse: "#ffffff"; readonly disabled: "#9ca3af"; }; readonly border: { readonly primary: "#e5e7eb"; readonly secondary: "#d1d5db"; readonly tertiary: "#9ca3af"; readonly focus: "#3b82f6"; }; readonly interactive: { readonly primary: "#2563eb"; readonly 'primary-hover': "#1d4ed8"; readonly 'primary-active': "#1e40af"; readonly secondary: "#f3f4f6"; readonly 'secondary-hover': "#e5e7eb"; readonly 'secondary-active': "#d1d5db"; }; readonly status: { readonly success: "#16a34a"; readonly warning: "#d97706"; readonly error: "#dc2626"; readonly info: "#0891b2"; }; }; readonly dark: { readonly background: { readonly primary: "#111827"; readonly secondary: "#1f2937"; readonly tertiary: "#374151"; }; readonly surface: { readonly primary: "#1f2937"; readonly secondary: "#374151"; readonly tertiary: "#4b5563"; readonly elevated: "#374151"; }; readonly text: { readonly primary: "#f3f4f6"; readonly secondary: "#d1d5db"; readonly tertiary: "#9ca3af"; readonly inverse: "#111827"; readonly disabled: "#6b7280"; }; readonly border: { readonly primary: "#374151"; readonly secondary: "#4b5563"; readonly tertiary: "#6b7280"; readonly focus: "#60a5fa"; }; readonly interactive: { readonly primary: "#3b82f6"; readonly 'primary-hover': "#60a5fa"; readonly 'primary-active': "#93c5fd"; readonly secondary: "#374151"; readonly 'secondary-hover': "#4b5563"; readonly 'secondary-active': "#6b7280"; }; readonly status: { readonly success: "#22c55e"; readonly warning: "#f59e0b"; readonly error: "#ef4444"; readonly info: "#06b6d4"; }; }; }; /** * Font family tokens */ declare const fontFamily: { readonly sans: readonly ["Inter", "-apple-system", "BlinkMacSystemFont", "\"Segoe UI\"", "Roboto", "\"Helvetica Neue\"", "Arial", "sans-serif"]; readonly mono: readonly ["\"JetBrains Mono\"", "Menlo", "Monaco", "Consolas", "\"Liberation Mono\"", "\"Courier New\"", "monospace"]; }; /** * Font size tokens with line heights * Following a modular scale for consistency */ declare const fontSize: { readonly xs: readonly ["0.75rem", { readonly lineHeight: "1rem"; }]; readonly sm: readonly ["0.875rem", { readonly lineHeight: "1.25rem"; }]; readonly base: readonly ["1rem", { readonly lineHeight: "1.5rem"; }]; readonly lg: readonly ["1.125rem", { readonly lineHeight: "1.75rem"; }]; readonly xl: readonly ["1.25rem", { readonly lineHeight: "1.75rem"; }]; readonly '2xl': readonly ["1.5rem", { readonly lineHeight: "2rem"; }]; readonly '3xl': readonly ["1.875rem", { readonly lineHeight: "2.25rem"; }]; readonly '4xl': readonly ["2.25rem", { readonly lineHeight: "2.5rem"; }]; readonly '5xl': readonly ["3rem", { readonly lineHeight: "1"; }]; readonly '6xl': readonly ["3.75rem", { readonly lineHeight: "1"; }]; readonly '7xl': readonly ["4.5rem", { readonly lineHeight: "1"; }]; readonly '8xl': readonly ["6rem", { readonly lineHeight: "1"; }]; readonly '9xl': readonly ["8rem", { readonly lineHeight: "1"; }]; }; /** * Font weight tokens */ declare const fontWeight: { readonly thin: "100"; readonly extralight: "200"; readonly light: "300"; readonly normal: "400"; readonly medium: "500"; readonly semibold: "600"; readonly bold: "700"; readonly extrabold: "800"; readonly black: "900"; }; /** * Letter spacing tokens */ declare const letterSpacing: { readonly tighter: "-0.05em"; readonly tight: "-0.025em"; readonly normal: "0em"; readonly wide: "0.025em"; readonly wider: "0.05em"; readonly widest: "0.1em"; }; /** * Spacing scale based on 0.25rem (4px) increments * Provides consistent spacing throughout the design system */ declare const spacing: { readonly 0: "0px"; readonly px: "1px"; readonly 0.5: "0.125rem"; readonly 1: "0.25rem"; readonly 1.5: "0.375rem"; readonly 2: "0.5rem"; readonly 2.5: "0.625rem"; readonly 3: "0.75rem"; readonly 3.5: "0.875rem"; readonly 4: "1rem"; readonly 5: "1.25rem"; readonly 6: "1.5rem"; readonly 7: "1.75rem"; readonly 8: "2rem"; readonly 9: "2.25rem"; readonly 10: "2.5rem"; readonly 11: "2.75rem"; readonly 12: "3rem"; readonly 14: "3.5rem"; readonly 16: "4rem"; readonly 20: "5rem"; readonly 24: "6rem"; readonly 28: "7rem"; readonly 32: "8rem"; readonly 36: "9rem"; readonly 40: "10rem"; readonly 44: "11rem"; readonly 48: "12rem"; readonly 52: "13rem"; readonly 56: "14rem"; readonly 60: "15rem"; readonly 64: "16rem"; readonly 72: "18rem"; readonly 80: "20rem"; readonly 96: "24rem"; }; /** * Box shadow tokens for elevation * Provides depth and hierarchy to components */ declare const boxShadow: { readonly none: "none"; readonly sm: "0 1px 2px 0 rgb(0 0 0 / 0.05)"; readonly base: "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)"; readonly md: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)"; readonly lg: "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)"; readonly xl: "0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)"; readonly '2xl': "0 25px 50px -12px rgb(0 0 0 / 0.25)"; readonly inner: "inset 0 2px 4px 0 rgb(0 0 0 / 0.05)"; }; /** * Drop shadow tokens for filters */ declare const dropShadow: { readonly none: "none"; readonly sm: "0 1px 1px rgb(0 0 0 / 0.05)"; readonly base: "0 1px 2px rgb(0 0 0 / 0.1)"; readonly md: "0 4px 3px rgb(0 0 0 / 0.07)"; readonly lg: "0 10px 8px rgb(0 0 0 / 0.04)"; readonly xl: "0 20px 13px rgb(0 0 0 / 0.03)"; readonly '2xl': "0 25px 25px rgb(0 0 0 / 0.15)"; }; /** * Border radius tokens for consistent rounded corners */ declare const borderRadius: { readonly none: "0px"; readonly sm: "0.125rem"; readonly base: "0.25rem"; readonly md: "0.375rem"; readonly lg: "0.5rem"; readonly xl: "0.75rem"; readonly '2xl': "1rem"; readonly '3xl': "1.5rem"; readonly full: "9999px"; }; /** * Responsive breakpoints for mobile-first design */ declare const breakpoints: { readonly xs: "475px"; readonly sm: "640px"; readonly md: "768px"; readonly lg: "1024px"; readonly xl: "1280px"; readonly '2xl': "1536px"; }; /** * Animation duration tokens */ declare const animationDuration: { readonly 75: "75ms"; readonly 100: "100ms"; readonly 150: "150ms"; readonly 200: "200ms"; readonly 300: "300ms"; readonly 500: "500ms"; readonly 700: "700ms"; readonly 1000: "1000ms"; }; /** * Animation timing function tokens */ declare const animationTimingFunction: { readonly linear: "linear"; readonly in: "cubic-bezier(0.4, 0, 1, 1)"; readonly out: "cubic-bezier(0, 0, 0.2, 1)"; readonly 'in-out': "cubic-bezier(0.4, 0, 0.2, 1)"; }; /** * Z-index tokens for layering */ declare const zIndex: { readonly auto: "auto"; readonly 0: "0"; readonly 10: "10"; readonly 20: "20"; readonly 30: "30"; readonly 40: "40"; readonly 50: "50"; readonly dropdown: "1000"; readonly sticky: "1020"; readonly fixed: "1030"; readonly modal: "1040"; readonly popover: "1050"; readonly tooltip: "1060"; readonly toast: "1070"; }; /** * Component size tokens */ declare const componentSizes: { readonly xs: { readonly height: "1.5rem"; readonly padding: "0.25rem 0.5rem"; readonly fontSize: "0.75rem"; }; readonly sm: { readonly height: "2rem"; readonly padding: "0.375rem 0.75rem"; readonly fontSize: "0.875rem"; }; readonly md: { readonly height: "2.5rem"; readonly padding: "0.5rem 1rem"; readonly fontSize: "1rem"; }; readonly lg: { readonly height: "3rem"; readonly padding: "0.625rem 1.5rem"; readonly fontSize: "1.125rem"; }; readonly xl: { readonly height: "3.5rem"; readonly padding: "0.75rem 2rem"; readonly fontSize: "1.25rem"; }; }; /** * Complete design token system */ declare const tokens: { readonly colors: { readonly base: { readonly white: "#ffffff"; readonly black: "#000000"; readonly gray: { readonly 50: "#f9fafb"; readonly 100: "#f3f4f6"; readonly 200: "#e5e7eb"; readonly 300: "#d1d5db"; readonly 400: "#9ca3af"; readonly 500: "#6b7280"; readonly 600: "#4b5563"; readonly 700: "#374151"; readonly 800: "#1f2937"; readonly 900: "#111827"; readonly 950: "#030712"; }; readonly blue: { readonly 50: "#eff6ff"; readonly 100: "#dbeafe"; readonly 200: "#bfdbfe"; readonly 300: "#93c5fd"; readonly 400: "#60a5fa"; readonly 500: "#3b82f6"; readonly 600: "#2563eb"; readonly 700: "#1d4ed8"; readonly 800: "#1e40af"; readonly 900: "#1e3a8a"; readonly 950: "#172554"; }; readonly green: { readonly 50: "#f0fdf4"; readonly 100: "#dcfce7"; readonly 200: "#bbf7d0"; readonly 300: "#86efac"; readonly 400: "#4ade80"; readonly 500: "#22c55e"; readonly 600: "#16a34a"; readonly 700: "#15803d"; readonly 800: "#166534"; readonly 900: "#14532d"; readonly 950: "#052e16"; }; readonly yellow: { readonly 50: "#fefce8"; readonly 100: "#fef3c7"; readonly 200: "#fde68a"; readonly 300: "#fcd34d"; readonly 400: "#fbbf24"; readonly 500: "#f59e0b"; readonly 600: "#d97706"; readonly 700: "#b45309"; readonly 800: "#92400e"; readonly 900: "#78350f"; readonly 950: "#451a03"; }; readonly red: { readonly 50: "#fef2f2"; readonly 100: "#fee2e2"; readonly 200: "#fecaca"; readonly 300: "#fca5a5"; readonly 400: "#f87171"; readonly 500: "#ef4444"; readonly 600: "#dc2626"; readonly 700: "#b91c1c"; readonly 800: "#991b1b"; readonly 900: "#7f1d1d"; readonly 950: "#450a0a"; }; readonly cyan: { readonly 50: "#ecfeff"; readonly 100: "#cffafe"; readonly 200: "#a5f3fc"; readonly 300: "#67e8f9"; readonly 400: "#22d3ee"; readonly 500: "#06b6d4"; readonly 600: "#0891b2"; readonly 700: "#0e7490"; readonly 800: "#155e75"; readonly 900: "#164e63"; readonly 950: "#083344"; }; }; readonly semantic: { readonly primary: { readonly 50: "#eff6ff"; readonly 100: "#dbeafe"; readonly 200: "#bfdbfe"; readonly 300: "#93c5fd"; readonly 400: "#60a5fa"; readonly 500: "#3b82f6"; readonly 600: "#2563eb"; readonly 700: "#1d4ed8"; readonly 800: "#1e40af"; readonly 900: "#1e3a8a"; readonly 950: "#172554"; }; readonly secondary: { readonly 50: "#f9fafb"; readonly 100: "#f3f4f6"; readonly 200: "#e5e7eb"; readonly 300: "#d1d5db"; readonly 400: "#9ca3af"; readonly 500: "#6b7280"; readonly 600: "#4b5563"; readonly 700: "#374151"; readonly 800: "#1f2937"; readonly 900: "#111827"; readonly 950: "#030712"; }; readonly success: { readonly 50: "#f0fdf4"; readonly 100: "#dcfce7"; readonly 200: "#bbf7d0"; readonly 300: "#86efac"; readonly 400: "#4ade80"; readonly 500: "#22c55e"; readonly 600: "#16a34a"; readonly 700: "#15803d"; readonly 800: "#166534"; readonly 900: "#14532d"; readonly 950: "#052e16"; }; readonly warning: { readonly 50: "#fefce8"; readonly 100: "#fef3c7"; readonly 200: "#fde68a"; readonly 300: "#fcd34d"; readonly 400: "#fbbf24"; readonly 500: "#f59e0b"; readonly 600: "#d97706"; readonly 700: "#b45309"; readonly 800: "#92400e"; readonly 900: "#78350f"; readonly 950: "#451a03"; }; readonly error: { readonly 50: "#fef2f2"; readonly 100: "#fee2e2"; readonly 200: "#fecaca"; readonly 300: "#fca5a5"; readonly 400: "#f87171"; readonly 500: "#ef4444"; readonly 600: "#dc2626"; readonly 700: "#b91c1c"; readonly 800: "#991b1b"; readonly 900: "#7f1d1d"; readonly 950: "#450a0a"; }; readonly info: { readonly 50: "#ecfeff"; readonly 100: "#cffafe"; readonly 200: "#a5f3fc"; readonly 300: "#67e8f9"; readonly 400: "#22d3ee"; readonly 500: "#06b6d4"; readonly 600: "#0891b2"; readonly 700: "#0e7490"; readonly 800: "#155e75"; readonly 900: "#164e63"; readonly 950: "#083344"; }; }; readonly theme: { readonly light: { readonly background: { readonly primary: "#ffffff"; readonly secondary: "#f9fafb"; readonly tertiary: "#f3f4f6"; }; readonly surface: { readonly primary: "#ffffff"; readonly secondary: "#f9fafb"; readonly tertiary: "#f3f4f6"; readonly elevated: "#ffffff"; }; readonly text: { readonly primary: "#111827"; readonly secondary: "#4b5563"; readonly tertiary: "#6b7280"; readonly inverse: "#ffffff"; readonly disabled: "#9ca3af"; }; readonly border: { readonly primary: "#e5e7eb"; readonly secondary: "#d1d5db"; readonly tertiary: "#9ca3af"; readonly focus: "#3b82f6"; }; readonly interactive: { readonly primary: "#2563eb"; readonly 'primary-hover': "#1d4ed8"; readonly 'primary-active': "#1e40af"; readonly secondary: "#f3f4f6"; readonly 'secondary-hover': "#e5e7eb"; readonly 'secondary-active': "#d1d5db"; }; readonly status: { readonly success: "#16a34a"; readonly warning: "#d97706"; readonly error: "#dc2626"; readonly info: "#0891b2"; }; }; readonly dark: { readonly background: { readonly primary: "#111827"; readonly secondary: "#1f2937"; readonly tertiary: "#374151"; }; readonly surface: { readonly primary: "#1f2937"; readonly secondary: "#374151"; readonly tertiary: "#4b5563"; readonly elevated: "#374151"; }; readonly text: { readonly primary: "#f3f4f6"; readonly secondary: "#d1d5db"; readonly tertiary: "#9ca3af"; readonly inverse: "#111827"; readonly disabled: "#6b7280"; }; readonly border: { readonly primary: "#374151"; readonly secondary: "#4b5563"; readonly tertiary: "#6b7280"; readonly focus: "#60a5fa"; }; readonly interactive: { readonly primary: "#3b82f6"; readonly 'primary-hover': "#60a5fa"; readonly 'primary-active': "#93c5fd"; readonly secondary: "#374151"; readonly 'secondary-hover': "#4b5563"; readonly 'secondary-active': "#6b7280"; }; readonly status: { readonly success: "#22c55e"; readonly warning: "#f59e0b"; readonly error: "#ef4444"; readonly info: "#06b6d4"; }; }; }; }; readonly typography: { readonly fontFamily: { readonly sans: readonly ["Inter", "-apple-system", "BlinkMacSystemFont", "\"Segoe UI\"", "Roboto", "\"Helvetica Neue\"", "Arial", "sans-serif"]; readonly mono: readonly ["\"JetBrains Mono\"", "Menlo", "Monaco", "Consolas", "\"Liberation Mono\"", "\"Courier New\"", "monospace"]; }; readonly fontSize: { readonly xs: readonly ["0.75rem", { readonly lineHeight: "1rem"; }]; readonly sm: readonly ["0.875rem", { readonly lineHeight: "1.25rem"; }]; readonly base: readonly ["1rem", { readonly lineHeight: "1.5rem"; }]; readonly lg: readonly ["1.125rem", { readonly lineHeight: "1.75rem"; }]; readonly xl: readonly ["1.25rem", { readonly lineHeight: "1.75rem"; }]; readonly '2xl': readonly ["1.5rem", { readonly lineHeight: "2rem"; }]; readonly '3xl': readonly ["1.875rem", { readonly lineHeight: "2.25rem"; }]; readonly '4xl': readonly ["2.25rem", { readonly lineHeight: "2.5rem"; }]; readonly '5xl': readonly ["3rem", { readonly lineHeight: "1"; }]; readonly '6xl': readonly ["3.75rem", { readonly lineHeight: "1"; }]; readonly '7xl': readonly ["4.5rem", { readonly lineHeight: "1"; }]; readonly '8xl': readonly ["6rem", { readonly lineHeight: "1"; }]; readonly '9xl': readonly ["8rem", { readonly lineHeight: "1"; }]; }; readonly fontWeight: { readonly thin: "100"; readonly extralight: "200"; readonly light: "300"; readonly normal: "400"; readonly medium: "500"; readonly semibold: "600"; readonly bold: "700"; readonly extrabold: "800"; readonly black: "900"; }; readonly letterSpacing: { readonly tighter: "-0.05em"; readonly tight: "-0.025em"; readonly normal: "0em"; readonly wide: "0.025em"; readonly wider: "0.05em"; readonly widest: "0.1em"; }; }; readonly spacing: { readonly 0: "0px"; readonly px: "1px"; readonly 0.5: "0.125rem"; readonly 1: "0.25rem"; readonly 1.5: "0.375rem"; readonly 2: "0.5rem"; readonly 2.5: "0.625rem"; readonly 3: "0.75rem"; readonly 3.5: "0.875rem"; readonly 4: "1rem"; readonly 5: "1.25rem"; readonly 6: "1.5rem"; readonly 7: "1.75rem"; readonly 8: "2rem"; readonly 9: "2.25rem"; readonly 10: "2.5rem"; readonly 11: "2.75rem"; readonly 12: "3rem"; readonly 14: "3.5rem"; readonly 16: "4rem"; readonly 20: "5rem"; readonly 24: "6rem"; readonly 28: "7rem"; readonly 32: "8rem"; readonly 36: "9rem"; readonly 40: "10rem"; readonly 44: "11rem"; readonly 48: "12rem"; readonly 52: "13rem"; readonly 56: "14rem"; readonly 60: "15rem"; readonly 64: "16rem"; readonly 72: "18rem"; readonly 80: "20rem"; readonly 96: "24rem"; }; readonly shadows: { readonly box: { readonly none: "none"; readonly sm: "0 1px 2px 0 rgb(0 0 0 / 0.05)"; readonly base: "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)"; readonly md: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)"; readonly lg: "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)"; readonly xl: "0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)"; readonly '2xl': "0 25px 50px -12px rgb(0 0 0 / 0.25)"; readonly inner: "inset 0 2px 4px 0 rgb(0 0 0 / 0.05)"; }; readonly drop: { readonly none: "none"; readonly sm: "0 1px 1px rgb(0 0 0 / 0.05)"; readonly base: "0 1px 2px rgb(0 0 0 / 0.1)"; readonly md: "0 4px 3px rgb(0 0 0 / 0.07)"; readonly lg: "0 10px 8px rgb(0 0 0 / 0.04)"; readonly xl: "0 20px 13px rgb(0 0 0 / 0.03)"; readonly '2xl': "0 25px 25px rgb(0 0 0 / 0.15)"; }; }; readonly borderRadius: { readonly none: "0px"; readonly sm: "0.125rem"; readonly base: "0.25rem"; readonly md: "0.375rem"; readonly lg: "0.5rem"; readonly xl: "0.75rem"; readonly '2xl': "1rem"; readonly '3xl': "1.5rem"; readonly full: "9999px"; }; readonly breakpoints: { readonly xs: "475px"; readonly sm: "640px"; readonly md: "768px"; readonly lg: "1024px"; readonly xl: "1280px"; readonly '2xl': "1536px"; }; readonly animation: { readonly duration: { readonly 75: "75ms"; readonly 100: "100ms"; readonly 150: "150ms"; readonly 200: "200ms"; readonly 300: "300ms"; readonly 500: "500ms"; readonly 700: "700ms"; readonly 1000: "1000ms"; }; readonly timingFunction: { readonly linear: "linear"; readonly in: "cubic-bezier(0.4, 0, 1, 1)"; readonly out: "cubic-bezier(0, 0, 0.2, 1)"; readonly 'in-out': "cubic-bezier(0.4, 0, 0.2, 1)"; }; }; readonly zIndex: { readonly auto: "auto"; readonly 0: "0"; readonly 10: "10"; readonly 20: "20"; readonly 30: "30"; readonly 40: "40"; readonly 50: "50"; readonly dropdown: "1000"; readonly sticky: "1020"; readonly fixed: "1030"; readonly modal: "1040"; readonly popover: "1050"; readonly tooltip: "1060"; readonly toast: "1070"; }; readonly components: { readonly sizes: { readonly xs: { readonly height: "1.5rem"; readonly padding: "0.25rem 0.5rem"; readonly fontSize: "0.75rem"; }; readonly sm: { readonly height: "2rem"; readonly padding: "0.375rem 0.75rem"; readonly fontSize: "0.875rem"; }; readonly md: { readonly height: "2.5rem"; readonly padding: "0.5rem 1rem"; readonly fontSize: "1rem"; }; readonly lg: { readonly height: "3rem"; readonly padding: "0.625rem 1.5rem"; readonly fontSize: "1.125rem"; }; readonly xl: { readonly height: "3.5rem"; readonly padding: "0.75rem 2rem"; readonly fontSize: "1.25rem"; }; }; }; }; declare const colors: { readonly white: "#ffffff"; readonly black: "#000000"; readonly gray: { readonly 50: "#f9fafb"; readonly 100: "#f3f4f6"; readonly 200: "#e5e7eb"; readonly 300: "#d1d5db"; readonly 400: "#9ca3af"; readonly 500: "#6b7280"; readonly 600: "#4b5563"; readonly 700: "#374151"; readonly 800: "#1f2937"; readonly 900: "#111827"; readonly 950: "#030712"; }; readonly blue: { readonly 50: "#eff6ff"; readonly 100: "#dbeafe"; readonly 200: "#bfdbfe"; readonly 300: "#93c5fd"; readonly 400: "#60a5fa"; readonly 500: "#3b82f6"; readonly 600: "#2563eb"; readonly 700: "#1d4ed8"; readonly 800: "#1e40af"; readonly 900: "#1e3a8a"; readonly 950: "#172554"; }; readonly green: { readonly 50: "#f0fdf4"; readonly 100: "#dcfce7"; readonly 200: "#bbf7d0"; readonly 300: "#86efac"; readonly 400: "#4ade80"; readonly 500: "#22c55e"; readonly 600: "#16a34a"; readonly 700: "#15803d"; readonly 800: "#166534"; readonly 900: "#14532d"; readonly 950: "#052e16"; }; readonly yellow: { readonly 50: "#fefce8"; readonly 100: "#fef3c7"; readonly 200: "#fde68a"; readonly 300: "#fcd34d"; readonly 400: "#fbbf24"; readonly 500: "#f59e0b"; readonly 600: "#d97706"; readonly 700: "#b45309"; readonly 800: "#92400e"; readonly 900: "#78350f"; readonly 950: "#451a03"; }; readonly red: { readonly 50: "#fef2f2"; readonly 100: "#fee2e2"; readonly 200: "#fecaca"; readonly 300: "#fca5a5"; readonly 400: "#f87171"; readonly 500: "#ef4444"; readonly 600: "#dc2626"; readonly 700: "#b91c1c"; readonly 800: "#991b1b"; readonly 900: "#7f1d1d"; readonly 950: "#450a0a"; }; readonly cyan: { readonly 50: "#ecfeff"; readonly 100: "#cffafe"; readonly 200: "#a5f3fc"; readonly 300: "#67e8f9"; readonly 400: "#22d3ee"; readonly 500: "#06b6d4"; readonly 600: "#0891b2"; readonly 700: "#0e7490"; readonly 800: "#155e75"; readonly 900: "#164e63"; readonly 950: "#083344"; }; }; declare const typography: { fontFamily: { readonly sans: readonly ["Inter", "-apple-system", "BlinkMacSystemFont", "\"Segoe UI\"", "Roboto", "\"Helvetica Neue\"", "Arial", "sans-serif"]; readonly mono: readonly ["\"JetBrains Mono\"", "Menlo", "Monaco", "Consolas", "\"Liberation Mono\"", "\"Courier New\"", "monospace"]; }; fontSize: { readonly xs: readonly ["0.75rem", { readonly lineHeight: "1rem"; }]; readonly sm: readonly ["0.875rem", { readonly lineHeight: "1.25rem"; }]; readonly base: readonly ["1rem", { readonly lineHeight: "1.5rem"; }]; readonly lg: readonly ["1.125rem", { readonly lineHeight: "1.75rem"; }]; readonly xl: readonly ["1.25rem", { readonly lineHeight: "1.75rem"; }]; readonly '2xl': readonly ["1.5rem", { readonly lineHeight: "2rem"; }]; readonly '3xl': readonly ["1.875rem", { readonly lineHeight: "2.25rem"; }]; readonly '4xl': readonly ["2.25rem", { readonly lineHeight: "2.5rem"; }]; readonly '5xl': readonly ["3rem", { readonly lineHeight: "1"; }]; readonly '6xl': readonly ["3.75rem", { readonly lineHeight: "1"; }]; readonly '7xl': readonly ["4.5rem", { readonly lineHeight: "1"; }]; readonly '8xl': readonly ["6rem", { readonly lineHeight: "1"; }]; readonly '9xl': readonly ["8rem", { readonly lineHeight: "1"; }]; }; fontWeight: { readonly thin: "100"; readonly extralight: "200"; readonly light: "300"; readonly normal: "400"; readonly medium: "500"; readonly semibold: "600"; readonly bold: "700"; readonly extrabold: "800"; readonly black: "900"; }; letterSpacing: { readonly tighter: "-0.05em"; readonly tight: "-0.025em"; readonly normal: "0em"; readonly wide: "0.025em"; readonly wider: "0.05em"; readonly widest: "0.1em"; }; }; declare const shadows: { readonly none: "none"; readonly sm: "0 1px 2px 0 rgb(0 0 0 / 0.05)"; readonly base: "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)"; readonly md: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)"; readonly lg: "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)"; readonly xl: "0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)"; readonly '2xl': "0 25px 50px -12px rgb(0 0 0 / 0.25)"; readonly inner: "inset 0 2px 4px 0 rgb(0 0 0 / 0.05)"; }; declare const transitions: { readonly linear: "linear"; readonly in: "cubic-bezier(0.4, 0, 1, 1)"; readonly out: "cubic-bezier(0, 0, 0.2, 1)"; readonly 'in-out': "cubic-bezier(0.4, 0, 0.2, 1)"; }; /** * TypeScript interfaces for design tokens * Provides type safety and IntelliSense for all design tokens */ /** * Color scale interface for consistent color definitions */ interface ColorScale { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; } /** * Base colors interface */ interface BaseColors { white: string; black: string; gray: ColorScale; blue: ColorScale; green: ColorScale; yellow: ColorScale; red: ColorScale; cyan: ColorScale; } /** * Semantic colors interface */ interface SemanticColors { primary: ColorScale; secondary: ColorScale; success: ColorScale; warning: ColorScale; error: ColorScale; info: ColorScale; } /** * Theme color categories */ interface ThemeColorCategory { primary: string; secondary: string; tertiary: string; elevated?: string; } /** * Theme text colors */ interface ThemeTextColors { primary: string; secondary: string; tertiary: string; inverse: string; disabled: string; } /** * Theme border colors */ interface ThemeBorderColors { primary: string; secondary: string; tertiary: string; focus: string; } /** * Theme interactive colors */ interface ThemeInteractiveColors { primary: string; 'primary-hover': string; 'primary-active': string; secondary: string; 'secondary-hover': string; 'secondary-active': string; } /** * Theme status colors */ interface ThemeStatusColors { success: string; warning: string; error: string; info: string; } /** * Complete theme colors interface */ interface ThemeColors { background: ThemeColorCategory; surface: ThemeColorCategory; text: ThemeTextColors; border: ThemeBorderColors; interactive: ThemeInteractiveColors; status: ThemeStatusColors; } /** * Theme-aware color system */ interface ThemeColorSystem { light: ThemeColors; dark: ThemeColors; } /** * Font family interface */ interface FontFamily { sans: string[]; mono: string[]; } /** * Font size with line height */ type FontSizeValue = [string, { lineHeight: string; }]; /** * Font size scale interface */ interface FontSize { xs: FontSizeValue; sm: FontSizeValue; base: FontSizeValue; lg: FontSizeValue; xl: FontSizeValue; '2xl': FontSizeValue; '3xl': FontSizeValue; '4xl': FontSizeValue; '5xl': FontSizeValue; '6xl': FontSizeValue; '7xl': FontSizeValue; '8xl': FontSizeValue; '9xl': FontSizeValue; } /** * Font weight interface */ interface FontWeight { thin: string; extralight: string; light: string; normal: string; medium: string; semibold: string; bold: string; extrabold: string; black: string; } /** * Letter spacing interface */ interface LetterSpacing { tighter: string; tight: string; normal: string; wide: string; wider: string; widest: string; } /** * Typography tokens interface */ interface Typography { fontFamily: FontFamily; fontSize: FontSize; fontWeight: FontWeight; letterSpacing: LetterSpacing; } /** * Spacing scale interface */ interface Spacing { 0: string; px: string; 0.5: string; 1: string; 1.5: string; 2: string; 2.5: string; 3: string; 3.5: string; 4: string; 5: string; 6: string; 7: string; 8: string; 9: string; 10: string; 11: string; 12: string; 14: string; 16: string; 20: string; 24: string; 28: string; 32: string; 36: string; 40: string; 44: string; 48: string; 52: string; 56: string; 60: string; 64: string; 72: string; 80: string; 96: string; } /** * Box shadow interface */ interface BoxShadow { none: string; sm: string; base: string; md: string; lg: string; xl: string; '2xl': string; inner: string; } /** * Drop shadow interface */ interface DropShadow { none: string; sm: string; base: string; md: string; lg: string; xl: string; '2xl': string; } /** * Shadow tokens interface */ interface Shadows { box: BoxShadow; drop: DropShadow; } /** * Border radius interface */ interface BorderRadius { none: string; sm: string; base: string; md: string; lg: string; xl: string; '2xl': string; '3xl': string; full: string; } /** * Breakpoints interface */ interface Breakpoints { xs: string; sm: string; md: string; lg: string; xl: string; '2xl': string; } /** * Animation duration interface */ interface AnimationDuration { 75: string; 100: string; 150: string; 200: string; 300: string; 500: string; 700: string; 1000: string; } /** * Animation timing function interface */ interface AnimationTimingFunction { linear: string; in: string; out: string; 'in-out': string; } /** * Animation tokens interface */ interface Animation { duration: AnimationDuration; timingFunction: AnimationTimingFunction; } /** * Z-index interface */ interface ZIndex { auto: string; 0: string; 10: string; 20: string; 30: string; 40: string; 50: string; dropdown: string; sticky: string; fixed: string; modal: string; popover: string; tooltip: string; toast: string; } /** * Component size configuration */ interface ComponentSize { height: string; padding: string; fontSize: string; } /** * Component sizes interface */ interface ComponentSizes { xs: ComponentSize; sm: ComponentSize; md: ComponentSize; lg: ComponentSize; xl: ComponentSize; } /** * Component tokens interface */ interface Components { sizes: ComponentSizes; } /** * Color tokens interface */ interface ColorTokens { base: BaseColors; semantic: SemanticColors; theme: ThemeColorSystem; } /** * Complete design token system interface */ interface DesignTokens { colors: ColorTokens; typography: Typography; spacing: Spacing; shadows: Shadows; borderRadius: BorderRadius; breakpoints: Breakpoints; animation: Animation; zIndex: ZIndex; components: Components; } /** * Available theme modes */ type ThemeMode = 'light' | 'dark' | 'system'; /** * Theme configuration */ interface ThemeConfig { mode: ThemeMode; colors: ThemeColors; } /** * Extract keys from token objects for type safety */ type ColorScaleKey = keyof ColorScale; type SpacingKey = keyof Spacing; type FontSizeKey = keyof FontSize; type FontWeightKey = keyof FontWeight; type BorderRadiusKey = keyof BorderRadius; type BoxShadowKey = keyof BoxShadow; type BreakpointKey = keyof Breakpoints; type ComponentSizeKey = keyof ComponentSizes; /** * Token value types for runtime validation */ type TokenValue = string | number | string[] | Record<string, unknown>; /** * Token path for nested access */ type TokenPath = string[]; /** * Token resolver function type */ type TokenResolver<T = TokenValue> = (path: TokenPath) => T | undefined; /** * Theme Management Utilities * Provides comprehensive theme switching and management functionality */ /** * Available theme modes */ declare const THEME_MODES: ThemeMode[]; /** * Storage key for theme preference */ declare const THEME_STORAGE_KEY: "mfe-shell-theme"; /** * CSS class names for themes */ declare const THEME_CLASS_NAMES: { readonly light: ""; readonly dark: "dark"; }; /** * Media query for system dark mode preference */ declare const DARK_MODE_MEDIA_QUERY: "(prefers-color-scheme: dark)"; /** * Detects the system's preferred color scheme */ declare function getSystemTheme(): 'light' | 'dark'; /** * Resolves the actual theme based on the theme mode */ declare function resolveTheme(mode: ThemeMode): 'light' | 'dark'; /** * Saves theme preference to localStorage */ declare function saveThemePreference(mode: ThemeMode): void; /** * Loads theme preference from localStorage */ declare function loadThemePreference(): ThemeMode; /** * Clears theme preference from localStorage */ declare function clearThemePreference(): void; /** * Applies theme classes to the document element */ declare function applyThemeToDOM(mode: ThemeMode): void; /** * Gets the current theme from the DOM */ declare function getCurrentThemeFromDOM(): 'light' | 'dark'; /** * Generates CSS custom properties for a theme */ declare function generateThemeCustomProperties(theme: ThemeColors): Record<string, string>; /** * Applies CSS custom properties to the document root */ declare function applyThemeCustomProperties(theme: ThemeColors): void; /** * Creates a media query listener for system theme changes */ declare function createSystemThemeListener(callback: (isDark: boolean) => void): (() => void) | null; /** * Creates a complete theme configuration */ declare function createThemeConfig(mode: ThemeMode): ThemeConfig; /** * Validates if a theme mode is valid */ declare function isValidThemeMode(mode: string): mode is ThemeMode; /** * Gets the opposite theme */ declare function getOppositeTheme(theme: 'light' | 'dark'): 'light' | 'dark'; /** * Checks if the current theme is dark */ declare function isDarkTheme(mode: ThemeMode): boolean; /** * Checks if the current theme is light */ declare function isLightTheme(mode: ThemeMode): boolean; /** * Gets theme-appropriate color value */ declare function getThemeColor(colorPath: string, mode?: ThemeMode): string; /** * Initializes the theme system */ declare function initializeTheme(): ThemeMode; /** * Sets up complete theme management */ declare function setupThemeManagement(onThemeChange?: (mode: ThemeMode, resolvedTheme: 'light' | 'dark') => void): { currentMode: ThemeMode; setTheme: (mode: ThemeMode) => void; cleanup: () => void; }; interface ValidationRule<T = unknown> { required?: boolean | string; minLength?: number | { value: number; message: string; }; maxLength?: number | { value: number; message: string; }; pattern?: RegExp | { value: RegExp; message: string; }; custom?: (value: T) => string | undefined; } interface FormFieldState<T = unknown> { value: T; error?: string; touched: boolean; dirty: boolean; } interface UseFormFieldOptions<T = unknown> { initialValue?: T; validation?: ValidationRule<T>; validateOnChange?: boolean; validateOnBlur?: boolean; } declare const validateField: <T = unknown>(value: T, rules?: ValidationRule<T>) => string | undefined; declare const useFormField: <T = string>({ initialValue, validation, validateOnChange, validateOnBlur, }?: UseFormFieldOptions<T>) => { setValue: (newValue: T) => void; setTouched: () => void; setError: (error?: string) => void; reset: () => void; validate: () => boolean; isValid: boolean; value: T; error?: string; touched: boolean; dirty: boolean; }; declare const validationPatterns: { email: { value: RegExp; message: string; }; phone: { value: RegExp; message: string; }; url: { value: RegExp; message: string; }; alphanumeric: { value: RegExp; message: string; }; noSpecialChars: { value: RegExp; message: string; }; }; declare const useFormFieldId: (prefix?: string) => string; declare const getFieldErrorProps: (error?: string, fieldId?: string) => { 'aria-invalid': "true" | "false"; 'aria-describedby': string | undefined; }; declare const getFormFieldAccessibility: (fieldId: string, error?: string, description?: string, required?: boolean) => { id: string; 'aria-invalid': "true" | "false"; 'aria-describedby': string | undefined; 'aria-required': "true" | undefined; }; declare const FORM_FIELD_SIZES: readonly ["sm", "md", "lg"]; declare const FORM_FIELD_VARIANTS: readonly ["default", "error", "success"]; type FormFieldSize = (typeof FORM_FIELD_SIZES)[number]; type FormFieldVariant = (typeof FORM_FIELD_VARIANTS)[number]; interface BaseFormFieldProps extends BaseComponentProps { id?: string; name?: string; label?: string; description?: string; error?: string; required?: boolean; disabled?: boolean; size?: FormFieldSize; validation?: ValidationRule; } interface FormFieldProps extends BaseFormFieldProps { children: React__default.ReactElement; htmlFor?: string; } interface SearchBoxProps extends Omit<BaseFormFieldProps, 'children'> { value?: string; onChange?: (value: string) => void; onClear?: () => void; placeh