@exyconn/common 2.1.0 → 2.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/README.md +969 -261
  2. package/dist/client/hooks/index.d.mts +1042 -0
  3. package/dist/client/hooks/index.d.ts +1042 -0
  4. package/dist/client/hooks/index.js +2276 -0
  5. package/dist/client/hooks/index.js.map +1 -0
  6. package/dist/client/hooks/index.mjs +2217 -0
  7. package/dist/client/hooks/index.mjs.map +1 -0
  8. package/dist/client/http/index.d.mts +217 -49
  9. package/dist/client/http/index.d.ts +217 -49
  10. package/dist/client/http/index.js +473 -94
  11. package/dist/client/http/index.js.map +1 -1
  12. package/dist/client/http/index.mjs +441 -84
  13. package/dist/client/http/index.mjs.map +1 -1
  14. package/dist/client/index.d.mts +6 -4
  15. package/dist/client/index.d.ts +6 -4
  16. package/dist/client/index.js +481 -319
  17. package/dist/client/index.js.map +1 -1
  18. package/dist/client/index.mjs +449 -290
  19. package/dist/client/index.mjs.map +1 -1
  20. package/dist/client/utils/index.d.mts +3 -279
  21. package/dist/client/utils/index.d.ts +3 -279
  22. package/dist/client/web/index.d.mts +1461 -0
  23. package/dist/client/web/index.d.ts +1461 -0
  24. package/dist/client/web/index.js +2681 -0
  25. package/dist/client/web/index.js.map +1 -0
  26. package/dist/client/web/index.mjs +2618 -0
  27. package/dist/client/web/index.mjs.map +1 -0
  28. package/dist/data/brand-identity.d.mts +149 -0
  29. package/dist/data/brand-identity.d.ts +149 -0
  30. package/dist/data/brand-identity.js +235 -0
  31. package/dist/data/brand-identity.js.map +1 -0
  32. package/dist/data/brand-identity.mjs +220 -0
  33. package/dist/data/brand-identity.mjs.map +1 -0
  34. package/dist/data/countries.d.mts +61 -0
  35. package/dist/data/countries.d.ts +61 -0
  36. package/dist/data/countries.js +987 -0
  37. package/dist/data/countries.js.map +1 -0
  38. package/dist/data/countries.mjs +971 -0
  39. package/dist/data/countries.mjs.map +1 -0
  40. package/dist/data/currencies.d.mts +19 -0
  41. package/dist/data/currencies.d.ts +19 -0
  42. package/dist/data/currencies.js +162 -0
  43. package/dist/data/currencies.js.map +1 -0
  44. package/dist/data/currencies.mjs +153 -0
  45. package/dist/data/currencies.mjs.map +1 -0
  46. package/dist/data/index.d.mts +7 -0
  47. package/dist/data/index.d.ts +7 -0
  48. package/dist/data/index.js +2087 -0
  49. package/dist/data/index.js.map +1 -0
  50. package/dist/data/index.mjs +1948 -0
  51. package/dist/data/index.mjs.map +1 -0
  52. package/dist/data/phone-codes.d.mts +15 -0
  53. package/dist/data/phone-codes.d.ts +15 -0
  54. package/dist/data/phone-codes.js +219 -0
  55. package/dist/data/phone-codes.js.map +1 -0
  56. package/dist/data/phone-codes.mjs +211 -0
  57. package/dist/data/phone-codes.mjs.map +1 -0
  58. package/dist/data/regex.d.mts +287 -0
  59. package/dist/data/regex.d.ts +287 -0
  60. package/dist/data/regex.js +306 -0
  61. package/dist/data/regex.js.map +1 -0
  62. package/dist/data/regex.mjs +208 -0
  63. package/dist/data/regex.mjs.map +1 -0
  64. package/dist/data/timezones.d.mts +16 -0
  65. package/dist/data/timezones.d.ts +16 -0
  66. package/dist/data/timezones.js +98 -0
  67. package/dist/data/timezones.js.map +1 -0
  68. package/dist/data/timezones.mjs +89 -0
  69. package/dist/data/timezones.mjs.map +1 -0
  70. package/dist/index-BZf42T3R.d.mts +305 -0
  71. package/dist/index-CF0D8PGE.d.ts +305 -0
  72. package/dist/index-Ckhm_HaX.d.mts +138 -0
  73. package/dist/index-DKn4raO7.d.ts +222 -0
  74. package/dist/index-NS8dS0p9.d.mts +222 -0
  75. package/dist/index-Nqm5_lwT.d.ts +188 -0
  76. package/dist/index-br6POSyA.d.ts +138 -0
  77. package/dist/index-jBi3V6e5.d.mts +188 -0
  78. package/dist/index.d.mts +21 -580
  79. package/dist/index.d.ts +21 -580
  80. package/dist/index.js +1839 -347
  81. package/dist/index.js.map +1 -1
  82. package/dist/index.mjs +1850 -359
  83. package/dist/index.mjs.map +1 -1
  84. package/dist/packageCheck-B_qfsD6R.d.ts +280 -0
  85. package/dist/packageCheck-C2_FT_Rl.d.mts +280 -0
  86. package/dist/server/configs/index.d.mts +602 -0
  87. package/dist/server/configs/index.d.ts +602 -0
  88. package/dist/server/configs/index.js +707 -0
  89. package/dist/server/configs/index.js.map +1 -0
  90. package/dist/server/configs/index.mjs +665 -0
  91. package/dist/server/configs/index.mjs.map +1 -0
  92. package/dist/server/index.d.mts +4 -1
  93. package/dist/server/index.d.ts +4 -1
  94. package/dist/server/index.js +1330 -0
  95. package/dist/server/index.js.map +1 -1
  96. package/dist/server/index.mjs +1286 -2
  97. package/dist/server/index.mjs.map +1 -1
  98. package/dist/server/middleware/index.d.mts +283 -2
  99. package/dist/server/middleware/index.d.ts +283 -2
  100. package/dist/server/middleware/index.js +761 -0
  101. package/dist/server/middleware/index.js.map +1 -1
  102. package/dist/server/middleware/index.mjs +751 -1
  103. package/dist/server/middleware/index.mjs.map +1 -1
  104. package/dist/shared/config/index.d.mts +40 -0
  105. package/dist/shared/config/index.d.ts +40 -0
  106. package/dist/shared/config/index.js +58 -0
  107. package/dist/shared/config/index.js.map +1 -0
  108. package/dist/shared/config/index.mjs +51 -0
  109. package/dist/shared/config/index.mjs.map +1 -0
  110. package/dist/shared/constants/index.d.mts +593 -0
  111. package/dist/shared/constants/index.d.ts +593 -0
  112. package/dist/shared/constants/index.js +391 -0
  113. package/dist/shared/constants/index.js.map +1 -0
  114. package/dist/shared/constants/index.mjs +360 -0
  115. package/dist/shared/constants/index.mjs.map +1 -0
  116. package/dist/shared/index.d.mts +5 -1
  117. package/dist/shared/index.d.ts +5 -1
  118. package/dist/shared/types/index.d.mts +140 -0
  119. package/dist/shared/types/index.d.ts +140 -0
  120. package/dist/shared/types/index.js +4 -0
  121. package/dist/shared/types/index.js.map +1 -0
  122. package/dist/shared/types/index.mjs +3 -0
  123. package/dist/shared/types/index.mjs.map +1 -0
  124. package/dist/shared/utils/index.d.mts +255 -0
  125. package/dist/shared/utils/index.d.ts +255 -0
  126. package/dist/shared/utils/index.js +623 -0
  127. package/dist/shared/utils/index.js.map +1 -0
  128. package/dist/shared/utils/index.mjs +324 -0
  129. package/dist/shared/utils/index.mjs.map +1 -0
  130. package/dist/shared/validation/index.d.mts +258 -0
  131. package/dist/shared/validation/index.d.ts +258 -0
  132. package/dist/shared/validation/index.js +185 -0
  133. package/dist/shared/validation/index.js.map +1 -0
  134. package/dist/shared/validation/index.mjs +172 -0
  135. package/dist/shared/validation/index.mjs.map +1 -0
  136. package/package.json +127 -62
  137. package/dist/index-BcxL4_V4.d.ts +0 -2946
  138. package/dist/index-DEzgM15j.d.ts +0 -67
  139. package/dist/index-DNFVgQx8.d.ts +0 -1375
  140. package/dist/index-DbV04Dx8.d.mts +0 -67
  141. package/dist/index-DfqEP6Oe.d.mts +0 -1375
  142. package/dist/index-bvvCev9Q.d.mts +0 -2946
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/client/web/theme/default-light-theme.ts","../../../src/client/web/theme/default-dark-theme.ts","../../../src/client/web/theme/theme-utils.ts","../../../src/client/web/theme/ThemeProvider.tsx","../../../src/client/web/astro/types.ts","../../../src/client/web/forms/types.ts","../../../src/client/web/forms/validation.ts","../../../src/client/web/forms/ContactForm.tsx","../../../src/client/web/forms/NewsletterForm.tsx","../../../src/client/web/forms/LoginForm.tsx","../../../src/client/web/forms/RegisterForm.tsx"],"names":["createContext","useContext","useState","theme","useMemo","useEffect","useCallback","jsxs","jsx","Yup","Formik","Form","Field","ErrorMessage","defaultInitialValues"],"mappings":"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","file":"index.js","sourcesContent":["/**\r\n * Default Light Theme\r\n * Complete theme definition with all micro-level customizations\r\n */\r\n\r\nimport type { Theme } from './theme.types';\r\n\r\nexport const defaultLightTheme: Theme = {\r\n name: 'default-light',\r\n mode: 'light',\r\n\r\n colors: {\r\n brand: {\r\n primary: '#3b82f6',\r\n secondary: '#6366f1',\r\n accent: '#f59e0b',\r\n background: '#ffffff',\r\n foreground: '#111827',\r\n },\r\n\r\n semantic: {\r\n primary: '#3b82f6',\r\n primaryHover: '#2563eb',\r\n primaryActive: '#1d4ed8',\r\n primaryDisabled: '#93c5fd',\r\n secondary: '#6366f1',\r\n secondaryHover: '#4f46e5',\r\n secondaryActive: '#4338ca',\r\n secondaryDisabled: '#a5b4fc',\r\n accent: '#f59e0b',\r\n accentHover: '#d97706',\r\n success: '#22c55e',\r\n successHover: '#16a34a',\r\n warning: '#f59e0b',\r\n warningHover: '#d97706',\r\n error: '#ef4444',\r\n errorHover: '#dc2626',\r\n info: '#3b82f6',\r\n infoHover: '#2563eb',\r\n },\r\n\r\n background: {\r\n default: '#ffffff',\r\n paper: '#f9fafb',\r\n card: '#ffffff',\r\n overlay: 'rgba(0, 0, 0, 0.5)',\r\n input: '#ffffff',\r\n disabled: '#f3f4f6',\r\n hover: '#f3f4f6',\r\n selected: '#eff6ff',\r\n },\r\n\r\n surface: {\r\n light: '#f9fafb',\r\n main: '#f3f4f6',\r\n dark: '#e5e7eb',\r\n },\r\n\r\n text: {\r\n primary: '#111827',\r\n secondary: '#6b7280',\r\n disabled: '#9ca3af',\r\n placeholder: '#9ca3af',\r\n link: '#3b82f6',\r\n linkHover: '#2563eb',\r\n inverse: '#ffffff',\r\n onPrimary: '#ffffff',\r\n onSecondary: '#ffffff',\r\n },\r\n\r\n border: {\r\n default: '#e5e7eb',\r\n light: '#f3f4f6',\r\n dark: '#d1d5db',\r\n focus: '#3b82f6',\r\n error: '#ef4444',\r\n success: '#22c55e',\r\n disabled: '#e5e7eb',\r\n },\r\n },\r\n\r\n shadows: {\r\n none: 'none',\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 button: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\r\n buttonHover: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\r\n card: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\r\n cardHover: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\r\n modal: '0 25px 50px -12px rgb(0 0 0 / 0.25)',\r\n dropdown: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\r\n },\r\n\r\n typography: {\r\n fontFamily: {\r\n sans: 'Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif',\r\n serif: 'ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif',\r\n mono: 'ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, \"Liberation Mono\", monospace',\r\n heading: 'Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\r\n body: 'Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\r\n },\r\n fontSize: {\r\n xs: '0.75rem',\r\n sm: '0.875rem',\r\n base: '1rem',\r\n lg: '1.125rem',\r\n xl: '1.25rem',\r\n '2xl': '1.5rem',\r\n '3xl': '1.875rem',\r\n '4xl': '2.25rem',\r\n '5xl': '3rem',\r\n '6xl': '3.75rem',\r\n },\r\n fontWeight: {\r\n light: 300,\r\n normal: 400,\r\n medium: 500,\r\n semibold: 600,\r\n bold: 700,\r\n extrabold: 800,\r\n },\r\n lineHeight: {\r\n none: 1,\r\n tight: 1.25,\r\n snug: 1.375,\r\n normal: 1.5,\r\n relaxed: 1.625,\r\n loose: 2,\r\n },\r\n },\r\n\r\n spacing: {\r\n 0: '0',\r\n px: '1px',\r\n 0.5: '0.125rem',\r\n 1: '0.25rem',\r\n 1.5: '0.375rem',\r\n 2: '0.5rem',\r\n 2.5: '0.625rem',\r\n 3: '0.75rem',\r\n 3.5: '0.875rem',\r\n 4: '1rem',\r\n 5: '1.25rem',\r\n 6: '1.5rem',\r\n 7: '1.75rem',\r\n 8: '2rem',\r\n 9: '2.25rem',\r\n 10: '2.5rem',\r\n 11: '2.75rem',\r\n 12: '3rem',\r\n 14: '3.5rem',\r\n 16: '4rem',\r\n 20: '5rem',\r\n 24: '6rem',\r\n 28: '7rem',\r\n 32: '8rem',\r\n 36: '9rem',\r\n 40: '10rem',\r\n 44: '11rem',\r\n 48: '12rem',\r\n 52: '13rem',\r\n 56: '14rem',\r\n 60: '15rem',\r\n 64: '16rem',\r\n 72: '18rem',\r\n 80: '20rem',\r\n 96: '24rem',\r\n },\r\n\r\n borderRadius: {\r\n none: '0',\r\n sm: '0.125rem',\r\n default: '0.25rem',\r\n md: '0.375rem',\r\n lg: '0.5rem',\r\n xl: '0.75rem',\r\n '2xl': '1rem',\r\n '3xl': '1.5rem',\r\n full: '9999px',\r\n },\r\n\r\n breakpoints: {\r\n xs: '475px',\r\n sm: '640px',\r\n md: '768px',\r\n lg: '1024px',\r\n xl: '1280px',\r\n '2xl': '1536px',\r\n },\r\n\r\n zIndex: {\r\n hide: -1,\r\n auto: 'auto',\r\n base: 0,\r\n dropdown: 1000,\r\n sticky: 1020,\r\n fixed: 1030,\r\n modalBackdrop: 1040,\r\n modal: 1050,\r\n popover: 1060,\r\n tooltip: 1070,\r\n toast: 1080,\r\n },\r\n\r\n transitions: {\r\n none: 'none',\r\n fast: '150ms ease-in-out',\r\n normal: '200ms ease-in-out',\r\n slow: '300ms ease-in-out',\r\n slower: '500ms ease-in-out',\r\n colors: 'color 200ms ease-in-out, background-color 200ms ease-in-out, border-color 200ms ease-in-out',\r\n transform: 'transform 200ms ease-in-out',\r\n opacity: 'opacity 200ms ease-in-out',\r\n shadow: 'box-shadow 200ms ease-in-out',\r\n all: 'all 200ms ease-in-out',\r\n },\r\n\r\n components: {\r\n button: {\r\n bg: '#3b82f6',\r\n bgHover: '#2563eb',\r\n bgActive: '#1d4ed8',\r\n bgDisabled: '#93c5fd',\r\n color: '#ffffff',\r\n colorHover: '#ffffff',\r\n colorDisabled: '#ffffff',\r\n border: 'transparent',\r\n borderHover: 'transparent',\r\n borderWidth: '1px',\r\n borderRadius: '0.375rem',\r\n shadow: '0 1px 3px 0 rgb(0 0 0 / 0.1)',\r\n shadowHover: '0 4px 6px -1px rgb(0 0 0 / 0.1)',\r\n paddingX: '1rem',\r\n paddingY: '0.5rem',\r\n fontSize: '0.875rem',\r\n fontWeight: 500,\r\n variants: {\r\n primary: {\r\n bg: '#3b82f6',\r\n bgHover: '#2563eb',\r\n color: '#ffffff',\r\n },\r\n secondary: {\r\n bg: '#6366f1',\r\n bgHover: '#4f46e5',\r\n color: '#ffffff',\r\n },\r\n outline: {\r\n bg: 'transparent',\r\n bgHover: '#f3f4f6',\r\n color: '#374151',\r\n border: '#d1d5db',\r\n borderHover: '#9ca3af',\r\n },\r\n ghost: {\r\n bg: 'transparent',\r\n bgHover: '#f3f4f6',\r\n color: '#374151',\r\n shadow: 'none',\r\n shadowHover: 'none',\r\n },\r\n link: {\r\n bg: 'transparent',\r\n bgHover: 'transparent',\r\n color: '#3b82f6',\r\n colorHover: '#2563eb',\r\n shadow: 'none',\r\n shadowHover: 'none',\r\n paddingX: '0',\r\n paddingY: '0',\r\n },\r\n danger: {\r\n bg: '#ef4444',\r\n bgHover: '#dc2626',\r\n color: '#ffffff',\r\n },\r\n success: {\r\n bg: '#22c55e',\r\n bgHover: '#16a34a',\r\n color: '#ffffff',\r\n },\r\n },\r\n sizes: {\r\n xs: {\r\n paddingX: '0.5rem',\r\n paddingY: '0.25rem',\r\n fontSize: '0.75rem',\r\n },\r\n sm: {\r\n paddingX: '0.75rem',\r\n paddingY: '0.375rem',\r\n fontSize: '0.875rem',\r\n },\r\n md: {\r\n paddingX: '1rem',\r\n paddingY: '0.5rem',\r\n fontSize: '0.875rem',\r\n },\r\n lg: {\r\n paddingX: '1.25rem',\r\n paddingY: '0.625rem',\r\n fontSize: '1rem',\r\n },\r\n xl: {\r\n paddingX: '1.5rem',\r\n paddingY: '0.75rem',\r\n fontSize: '1.125rem',\r\n },\r\n },\r\n },\r\n\r\n input: {\r\n bg: '#ffffff',\r\n bgFocus: '#ffffff',\r\n bgDisabled: '#f3f4f6',\r\n bgError: '#fef2f2',\r\n color: '#111827',\r\n colorPlaceholder: '#9ca3af',\r\n colorDisabled: '#9ca3af',\r\n border: '#d1d5db',\r\n borderFocus: '#3b82f6',\r\n borderError: '#ef4444',\r\n borderWidth: '1px',\r\n borderRadius: '0.375rem',\r\n shadow: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\r\n shadowFocus: '0 0 0 3px rgb(59 130 246 / 0.1)',\r\n paddingX: '0.75rem',\r\n paddingY: '0.5rem',\r\n fontSize: '0.875rem',\r\n labelColor: '#374151',\r\n labelFontSize: '0.875rem',\r\n labelFontWeight: 500,\r\n helperColor: '#6b7280',\r\n errorColor: '#ef4444',\r\n sizes: {\r\n sm: {\r\n paddingX: '0.5rem',\r\n paddingY: '0.375rem',\r\n fontSize: '0.75rem',\r\n },\r\n md: {\r\n paddingX: '0.75rem',\r\n paddingY: '0.5rem',\r\n fontSize: '0.875rem',\r\n },\r\n lg: {\r\n paddingX: '1rem',\r\n paddingY: '0.625rem',\r\n fontSize: '1rem',\r\n },\r\n },\r\n },\r\n\r\n card: {\r\n bg: '#ffffff',\r\n bgHover: '#ffffff',\r\n border: '#e5e7eb',\r\n borderWidth: '1px',\r\n borderRadius: '0.5rem',\r\n shadow: '0 1px 3px 0 rgb(0 0 0 / 0.1)',\r\n shadowHover: '0 10px 15px -3px rgb(0 0 0 / 0.1)',\r\n padding: '1.5rem',\r\n headerBg: '#f9fafb',\r\n headerBorder: '#e5e7eb',\r\n headerPadding: '1rem 1.5rem',\r\n footerBg: '#f9fafb',\r\n footerBorder: '#e5e7eb',\r\n footerPadding: '1rem 1.5rem',\r\n },\r\n\r\n header: {\r\n bg: '#ffffff',\r\n bgScrolled: 'rgba(255, 255, 255, 0.95)',\r\n color: '#111827',\r\n border: '#e5e7eb',\r\n shadow: 'none',\r\n shadowScrolled: '0 1px 3px 0 rgb(0 0 0 / 0.1)',\r\n height: '4rem',\r\n paddingX: '1.5rem',\r\n logoHeight: '2rem',\r\n navColor: '#374151',\r\n navColorHover: '#111827',\r\n navColorActive: '#3b82f6',\r\n navFontSize: '0.875rem',\r\n navFontWeight: 500,\r\n mobileMenuBg: '#ffffff',\r\n mobileMenuShadow: '0 10px 15px -3px rgb(0 0 0 / 0.1)',\r\n },\r\n\r\n footer: {\r\n bg: '#111827',\r\n color: '#d1d5db',\r\n colorMuted: '#9ca3af',\r\n border: '#374151',\r\n padding: '4rem 1.5rem',\r\n linkColor: '#d1d5db',\r\n linkColorHover: '#ffffff',\r\n headingColor: '#ffffff',\r\n headingFontSize: '1rem',\r\n headingFontWeight: 600,\r\n copyrightBg: '#0f172a',\r\n copyrightColor: '#9ca3af',\r\n },\r\n\r\n banner: {\r\n bg: '#eff6ff',\r\n color: '#1e40af',\r\n border: '#bfdbfe',\r\n borderRadius: '0.5rem',\r\n padding: '1rem 1.5rem',\r\n shadow: 'none',\r\n closeBg: 'transparent',\r\n closeColor: '#1e40af',\r\n variants: {\r\n info: {\r\n bg: '#eff6ff',\r\n color: '#1e40af',\r\n border: '#bfdbfe',\r\n },\r\n success: {\r\n bg: '#f0fdf4',\r\n color: '#166534',\r\n border: '#bbf7d0',\r\n },\r\n warning: {\r\n bg: '#fffbeb',\r\n color: '#92400e',\r\n border: '#fde68a',\r\n },\r\n error: {\r\n bg: '#fef2f2',\r\n color: '#991b1b',\r\n border: '#fecaca',\r\n },\r\n promo: {\r\n bg: '#faf5ff',\r\n color: '#6b21a8',\r\n border: '#e9d5ff',\r\n },\r\n },\r\n },\r\n\r\n loader: {\r\n color: '#3b82f6',\r\n colorSecondary: '#e5e7eb',\r\n size: '2.5rem',\r\n borderWidth: '3px',\r\n overlayBg: 'rgba(255, 255, 255, 0.8)',\r\n overlayOpacity: 1,\r\n sizes: {\r\n xs: '1rem',\r\n sm: '1.5rem',\r\n md: '2.5rem',\r\n lg: '3.5rem',\r\n xl: '5rem',\r\n },\r\n },\r\n\r\n modal: {\r\n bg: '#ffffff',\r\n color: '#111827',\r\n border: '#e5e7eb',\r\n borderRadius: '0.5rem',\r\n shadow: '0 25px 50px -12px rgb(0 0 0 / 0.25)',\r\n padding: '1.5rem',\r\n overlayBg: 'rgba(0, 0, 0, 0.5)',\r\n overlayOpacity: 1,\r\n headerBg: '#ffffff',\r\n headerBorder: '#e5e7eb',\r\n headerPadding: '1rem 1.5rem',\r\n footerBg: '#f9fafb',\r\n footerBorder: '#e5e7eb',\r\n footerPadding: '1rem 1.5rem',\r\n closeBg: 'transparent',\r\n closeColor: '#6b7280',\r\n closeHoverBg: '#f3f4f6',\r\n sizes: {\r\n sm: '24rem',\r\n md: '32rem',\r\n lg: '48rem',\r\n xl: '64rem',\r\n full: '100%',\r\n },\r\n },\r\n\r\n toast: {\r\n bg: '#ffffff',\r\n color: '#111827',\r\n border: '#e5e7eb',\r\n borderRadius: '0.5rem',\r\n shadow: '0 10px 15px -3px rgb(0 0 0 / 0.1)',\r\n padding: '1rem',\r\n variants: {\r\n success: {\r\n bg: '#f0fdf4',\r\n color: '#166534',\r\n border: '#bbf7d0',\r\n },\r\n error: {\r\n bg: '#fef2f2',\r\n color: '#991b1b',\r\n border: '#fecaca',\r\n },\r\n warning: {\r\n bg: '#fffbeb',\r\n color: '#92400e',\r\n border: '#fde68a',\r\n },\r\n info: {\r\n bg: '#eff6ff',\r\n color: '#1e40af',\r\n border: '#bfdbfe',\r\n },\r\n },\r\n },\r\n\r\n newsletter: {\r\n bg: '#f9fafb',\r\n color: '#111827',\r\n border: '#e5e7eb',\r\n borderRadius: '0.5rem',\r\n padding: '2rem',\r\n titleColor: '#111827',\r\n titleFontSize: '1.5rem',\r\n descColor: '#6b7280',\r\n descFontSize: '1rem',\r\n inputBg: '#ffffff',\r\n inputBorder: '#d1d5db',\r\n buttonBg: '#3b82f6',\r\n buttonColor: '#ffffff',\r\n },\r\n },\r\n};\r\n\r\nexport default defaultLightTheme;\r\n","/**\r\n * Default Dark Theme\r\n * Complete dark theme with all micro-level customizations\r\n */\r\n\r\nimport type { Theme } from './theme.types';\r\n\r\nexport const defaultDarkTheme: Theme = {\r\n name: 'default-dark',\r\n mode: 'dark',\r\n\r\n colors: {\r\n brand: {\r\n primary: '#60a5fa',\r\n secondary: '#818cf8',\r\n accent: '#fbbf24',\r\n background: '#0f172a',\r\n foreground: '#f8fafc',\r\n },\r\n\r\n semantic: {\r\n primary: '#60a5fa',\r\n primaryHover: '#3b82f6',\r\n primaryActive: '#2563eb',\r\n primaryDisabled: '#1e3a5f',\r\n secondary: '#818cf8',\r\n secondaryHover: '#6366f1',\r\n secondaryActive: '#4f46e5',\r\n secondaryDisabled: '#312e81',\r\n accent: '#fbbf24',\r\n accentHover: '#f59e0b',\r\n success: '#4ade80',\r\n successHover: '#22c55e',\r\n warning: '#fbbf24',\r\n warningHover: '#f59e0b',\r\n error: '#f87171',\r\n errorHover: '#ef4444',\r\n info: '#60a5fa',\r\n infoHover: '#3b82f6',\r\n },\r\n\r\n background: {\r\n default: '#0f172a',\r\n paper: '#1e293b',\r\n card: '#1e293b',\r\n overlay: 'rgba(0, 0, 0, 0.7)',\r\n input: '#1e293b',\r\n disabled: '#334155',\r\n hover: '#334155',\r\n selected: '#1e3a5f',\r\n },\r\n\r\n surface: {\r\n light: '#334155',\r\n main: '#1e293b',\r\n dark: '#0f172a',\r\n },\r\n\r\n text: {\r\n primary: '#f8fafc',\r\n secondary: '#94a3b8',\r\n disabled: '#64748b',\r\n placeholder: '#64748b',\r\n link: '#60a5fa',\r\n linkHover: '#3b82f6',\r\n inverse: '#0f172a',\r\n onPrimary: '#0f172a',\r\n onSecondary: '#0f172a',\r\n },\r\n\r\n border: {\r\n default: '#334155',\r\n light: '#475569',\r\n dark: '#1e293b',\r\n focus: '#60a5fa',\r\n error: '#f87171',\r\n success: '#4ade80',\r\n disabled: '#334155',\r\n },\r\n },\r\n\r\n shadows: {\r\n none: 'none',\r\n xs: '0 1px 2px 0 rgb(0 0 0 / 0.3)',\r\n sm: '0 1px 3px 0 rgb(0 0 0 / 0.4), 0 1px 2px -1px rgb(0 0 0 / 0.4)',\r\n md: '0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.4)',\r\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.4), 0 4px 6px -4px rgb(0 0 0 / 0.4)',\r\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.4), 0 8px 10px -6px rgb(0 0 0 / 0.4)',\r\n '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.6)',\r\n inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.3)',\r\n button: '0 1px 3px 0 rgb(0 0 0 / 0.4)',\r\n buttonHover: '0 4px 6px -1px rgb(0 0 0 / 0.4)',\r\n card: '0 1px 3px 0 rgb(0 0 0 / 0.4)',\r\n cardHover: '0 10px 15px -3px rgb(0 0 0 / 0.4)',\r\n modal: '0 25px 50px -12px rgb(0 0 0 / 0.6)',\r\n dropdown: '0 10px 15px -3px rgb(0 0 0 / 0.4)',\r\n },\r\n\r\n typography: {\r\n fontFamily: {\r\n sans: 'Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif',\r\n serif: 'ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif',\r\n mono: 'ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, \"Liberation Mono\", monospace',\r\n heading: 'Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\r\n body: 'Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\r\n },\r\n fontSize: {\r\n xs: '0.75rem',\r\n sm: '0.875rem',\r\n base: '1rem',\r\n lg: '1.125rem',\r\n xl: '1.25rem',\r\n '2xl': '1.5rem',\r\n '3xl': '1.875rem',\r\n '4xl': '2.25rem',\r\n '5xl': '3rem',\r\n '6xl': '3.75rem',\r\n },\r\n fontWeight: {\r\n light: 300,\r\n normal: 400,\r\n medium: 500,\r\n semibold: 600,\r\n bold: 700,\r\n extrabold: 800,\r\n },\r\n lineHeight: {\r\n none: 1,\r\n tight: 1.25,\r\n snug: 1.375,\r\n normal: 1.5,\r\n relaxed: 1.625,\r\n loose: 2,\r\n },\r\n },\r\n\r\n spacing: {\r\n 0: '0',\r\n px: '1px',\r\n 0.5: '0.125rem',\r\n 1: '0.25rem',\r\n 1.5: '0.375rem',\r\n 2: '0.5rem',\r\n 2.5: '0.625rem',\r\n 3: '0.75rem',\r\n 3.5: '0.875rem',\r\n 4: '1rem',\r\n 5: '1.25rem',\r\n 6: '1.5rem',\r\n 7: '1.75rem',\r\n 8: '2rem',\r\n 9: '2.25rem',\r\n 10: '2.5rem',\r\n 11: '2.75rem',\r\n 12: '3rem',\r\n 14: '3.5rem',\r\n 16: '4rem',\r\n 20: '5rem',\r\n 24: '6rem',\r\n 28: '7rem',\r\n 32: '8rem',\r\n 36: '9rem',\r\n 40: '10rem',\r\n 44: '11rem',\r\n 48: '12rem',\r\n 52: '13rem',\r\n 56: '14rem',\r\n 60: '15rem',\r\n 64: '16rem',\r\n 72: '18rem',\r\n 80: '20rem',\r\n 96: '24rem',\r\n },\r\n\r\n borderRadius: {\r\n none: '0',\r\n sm: '0.125rem',\r\n default: '0.25rem',\r\n md: '0.375rem',\r\n lg: '0.5rem',\r\n xl: '0.75rem',\r\n '2xl': '1rem',\r\n '3xl': '1.5rem',\r\n full: '9999px',\r\n },\r\n\r\n breakpoints: {\r\n xs: '475px',\r\n sm: '640px',\r\n md: '768px',\r\n lg: '1024px',\r\n xl: '1280px',\r\n '2xl': '1536px',\r\n },\r\n\r\n zIndex: {\r\n hide: -1,\r\n auto: 'auto',\r\n base: 0,\r\n dropdown: 1000,\r\n sticky: 1020,\r\n fixed: 1030,\r\n modalBackdrop: 1040,\r\n modal: 1050,\r\n popover: 1060,\r\n tooltip: 1070,\r\n toast: 1080,\r\n },\r\n\r\n transitions: {\r\n none: 'none',\r\n fast: '150ms ease-in-out',\r\n normal: '200ms ease-in-out',\r\n slow: '300ms ease-in-out',\r\n slower: '500ms ease-in-out',\r\n colors: 'color 200ms ease-in-out, background-color 200ms ease-in-out, border-color 200ms ease-in-out',\r\n transform: 'transform 200ms ease-in-out',\r\n opacity: 'opacity 200ms ease-in-out',\r\n shadow: 'box-shadow 200ms ease-in-out',\r\n all: 'all 200ms ease-in-out',\r\n },\r\n\r\n components: {\r\n button: {\r\n bg: '#60a5fa',\r\n bgHover: '#3b82f6',\r\n bgActive: '#2563eb',\r\n bgDisabled: '#1e3a5f',\r\n color: '#0f172a',\r\n colorHover: '#0f172a',\r\n colorDisabled: '#64748b',\r\n border: 'transparent',\r\n borderHover: 'transparent',\r\n borderWidth: '1px',\r\n borderRadius: '0.375rem',\r\n shadow: '0 1px 3px 0 rgb(0 0 0 / 0.4)',\r\n shadowHover: '0 4px 6px -1px rgb(0 0 0 / 0.4)',\r\n paddingX: '1rem',\r\n paddingY: '0.5rem',\r\n fontSize: '0.875rem',\r\n fontWeight: 500,\r\n variants: {\r\n primary: {\r\n bg: '#60a5fa',\r\n bgHover: '#3b82f6',\r\n color: '#0f172a',\r\n },\r\n secondary: {\r\n bg: '#818cf8',\r\n bgHover: '#6366f1',\r\n color: '#0f172a',\r\n },\r\n outline: {\r\n bg: 'transparent',\r\n bgHover: '#334155',\r\n color: '#f8fafc',\r\n border: '#475569',\r\n borderHover: '#64748b',\r\n },\r\n ghost: {\r\n bg: 'transparent',\r\n bgHover: '#334155',\r\n color: '#f8fafc',\r\n shadow: 'none',\r\n shadowHover: 'none',\r\n },\r\n link: {\r\n bg: 'transparent',\r\n bgHover: 'transparent',\r\n color: '#60a5fa',\r\n colorHover: '#3b82f6',\r\n shadow: 'none',\r\n shadowHover: 'none',\r\n paddingX: '0',\r\n paddingY: '0',\r\n },\r\n danger: {\r\n bg: '#f87171',\r\n bgHover: '#ef4444',\r\n color: '#0f172a',\r\n },\r\n success: {\r\n bg: '#4ade80',\r\n bgHover: '#22c55e',\r\n color: '#0f172a',\r\n },\r\n },\r\n sizes: {\r\n xs: {\r\n paddingX: '0.5rem',\r\n paddingY: '0.25rem',\r\n fontSize: '0.75rem',\r\n },\r\n sm: {\r\n paddingX: '0.75rem',\r\n paddingY: '0.375rem',\r\n fontSize: '0.875rem',\r\n },\r\n md: {\r\n paddingX: '1rem',\r\n paddingY: '0.5rem',\r\n fontSize: '0.875rem',\r\n },\r\n lg: {\r\n paddingX: '1.25rem',\r\n paddingY: '0.625rem',\r\n fontSize: '1rem',\r\n },\r\n xl: {\r\n paddingX: '1.5rem',\r\n paddingY: '0.75rem',\r\n fontSize: '1.125rem',\r\n },\r\n },\r\n },\r\n\r\n input: {\r\n bg: '#1e293b',\r\n bgFocus: '#1e293b',\r\n bgDisabled: '#334155',\r\n bgError: '#450a0a',\r\n color: '#f8fafc',\r\n colorPlaceholder: '#64748b',\r\n colorDisabled: '#64748b',\r\n border: '#475569',\r\n borderFocus: '#60a5fa',\r\n borderError: '#f87171',\r\n borderWidth: '1px',\r\n borderRadius: '0.375rem',\r\n shadow: '0 1px 2px 0 rgb(0 0 0 / 0.3)',\r\n shadowFocus: '0 0 0 3px rgb(96 165 250 / 0.2)',\r\n paddingX: '0.75rem',\r\n paddingY: '0.5rem',\r\n fontSize: '0.875rem',\r\n labelColor: '#e2e8f0',\r\n labelFontSize: '0.875rem',\r\n labelFontWeight: 500,\r\n helperColor: '#94a3b8',\r\n errorColor: '#f87171',\r\n sizes: {\r\n sm: {\r\n paddingX: '0.5rem',\r\n paddingY: '0.375rem',\r\n fontSize: '0.75rem',\r\n },\r\n md: {\r\n paddingX: '0.75rem',\r\n paddingY: '0.5rem',\r\n fontSize: '0.875rem',\r\n },\r\n lg: {\r\n paddingX: '1rem',\r\n paddingY: '0.625rem',\r\n fontSize: '1rem',\r\n },\r\n },\r\n },\r\n\r\n card: {\r\n bg: '#1e293b',\r\n bgHover: '#1e293b',\r\n border: '#334155',\r\n borderWidth: '1px',\r\n borderRadius: '0.5rem',\r\n shadow: '0 1px 3px 0 rgb(0 0 0 / 0.4)',\r\n shadowHover: '0 10px 15px -3px rgb(0 0 0 / 0.4)',\r\n padding: '1.5rem',\r\n headerBg: '#0f172a',\r\n headerBorder: '#334155',\r\n headerPadding: '1rem 1.5rem',\r\n footerBg: '#0f172a',\r\n footerBorder: '#334155',\r\n footerPadding: '1rem 1.5rem',\r\n },\r\n\r\n header: {\r\n bg: '#0f172a',\r\n bgScrolled: 'rgba(15, 23, 42, 0.95)',\r\n color: '#f8fafc',\r\n border: '#334155',\r\n shadow: 'none',\r\n shadowScrolled: '0 1px 3px 0 rgb(0 0 0 / 0.4)',\r\n height: '4rem',\r\n paddingX: '1.5rem',\r\n logoHeight: '2rem',\r\n navColor: '#94a3b8',\r\n navColorHover: '#f8fafc',\r\n navColorActive: '#60a5fa',\r\n navFontSize: '0.875rem',\r\n navFontWeight: 500,\r\n mobileMenuBg: '#1e293b',\r\n mobileMenuShadow: '0 10px 15px -3px rgb(0 0 0 / 0.4)',\r\n },\r\n\r\n footer: {\r\n bg: '#020617',\r\n color: '#94a3b8',\r\n colorMuted: '#64748b',\r\n border: '#1e293b',\r\n padding: '4rem 1.5rem',\r\n linkColor: '#94a3b8',\r\n linkColorHover: '#f8fafc',\r\n headingColor: '#f8fafc',\r\n headingFontSize: '1rem',\r\n headingFontWeight: 600,\r\n copyrightBg: '#0f172a',\r\n copyrightColor: '#64748b',\r\n },\r\n\r\n banner: {\r\n bg: '#1e3a5f',\r\n color: '#bfdbfe',\r\n border: '#3b82f6',\r\n borderRadius: '0.5rem',\r\n padding: '1rem 1.5rem',\r\n shadow: 'none',\r\n closeBg: 'transparent',\r\n closeColor: '#bfdbfe',\r\n variants: {\r\n info: {\r\n bg: '#1e3a5f',\r\n color: '#bfdbfe',\r\n border: '#3b82f6',\r\n },\r\n success: {\r\n bg: '#14532d',\r\n color: '#bbf7d0',\r\n border: '#22c55e',\r\n },\r\n warning: {\r\n bg: '#78350f',\r\n color: '#fde68a',\r\n border: '#f59e0b',\r\n },\r\n error: {\r\n bg: '#7f1d1d',\r\n color: '#fecaca',\r\n border: '#ef4444',\r\n },\r\n promo: {\r\n bg: '#581c87',\r\n color: '#e9d5ff',\r\n border: '#a855f7',\r\n },\r\n },\r\n },\r\n\r\n loader: {\r\n color: '#60a5fa',\r\n colorSecondary: '#334155',\r\n size: '2.5rem',\r\n borderWidth: '3px',\r\n overlayBg: 'rgba(15, 23, 42, 0.8)',\r\n overlayOpacity: 1,\r\n sizes: {\r\n xs: '1rem',\r\n sm: '1.5rem',\r\n md: '2.5rem',\r\n lg: '3.5rem',\r\n xl: '5rem',\r\n },\r\n },\r\n\r\n modal: {\r\n bg: '#1e293b',\r\n color: '#f8fafc',\r\n border: '#334155',\r\n borderRadius: '0.5rem',\r\n shadow: '0 25px 50px -12px rgb(0 0 0 / 0.6)',\r\n padding: '1.5rem',\r\n overlayBg: 'rgba(0, 0, 0, 0.7)',\r\n overlayOpacity: 1,\r\n headerBg: '#1e293b',\r\n headerBorder: '#334155',\r\n headerPadding: '1rem 1.5rem',\r\n footerBg: '#0f172a',\r\n footerBorder: '#334155',\r\n footerPadding: '1rem 1.5rem',\r\n closeBg: 'transparent',\r\n closeColor: '#94a3b8',\r\n closeHoverBg: '#334155',\r\n sizes: {\r\n sm: '24rem',\r\n md: '32rem',\r\n lg: '48rem',\r\n xl: '64rem',\r\n full: '100%',\r\n },\r\n },\r\n\r\n toast: {\r\n bg: '#1e293b',\r\n color: '#f8fafc',\r\n border: '#334155',\r\n borderRadius: '0.5rem',\r\n shadow: '0 10px 15px -3px rgb(0 0 0 / 0.4)',\r\n padding: '1rem',\r\n variants: {\r\n success: {\r\n bg: '#14532d',\r\n color: '#bbf7d0',\r\n border: '#22c55e',\r\n },\r\n error: {\r\n bg: '#7f1d1d',\r\n color: '#fecaca',\r\n border: '#ef4444',\r\n },\r\n warning: {\r\n bg: '#78350f',\r\n color: '#fde68a',\r\n border: '#f59e0b',\r\n },\r\n info: {\r\n bg: '#1e3a5f',\r\n color: '#bfdbfe',\r\n border: '#3b82f6',\r\n },\r\n },\r\n },\r\n\r\n newsletter: {\r\n bg: '#1e293b',\r\n color: '#f8fafc',\r\n border: '#334155',\r\n borderRadius: '0.5rem',\r\n padding: '2rem',\r\n titleColor: '#f8fafc',\r\n titleFontSize: '1.5rem',\r\n descColor: '#94a3b8',\r\n descFontSize: '1rem',\r\n inputBg: '#0f172a',\r\n inputBorder: '#475569',\r\n buttonBg: '#60a5fa',\r\n buttonColor: '#0f172a',\r\n },\r\n },\r\n};\r\n\r\nexport default defaultDarkTheme;\r\n","/**\r\n * Theme Utilities\r\n * Functions for theme manipulation, loading, and CSS variable generation\r\n */\r\n\r\nimport type { Theme, ThemeConfig, DeepPartial, ThemeMode } from './theme.types';\r\nimport type { BrandIdentity } from '../../../data/brand-identity';\r\nimport { defaultLightTheme } from './default-light-theme';\r\nimport { defaultDarkTheme } from './default-dark-theme';\r\n\r\n// ==========================================\r\n// DEEP MERGE UTILITY\r\n// ==========================================\r\n\r\n/**\r\n * Deep merge two objects\r\n */\r\nexport function deepMerge<T extends object>(target: T, source: DeepPartial<T>): T {\r\n const output = { ...target };\r\n\r\n for (const key in source) {\r\n if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n const sourceValue = source[key];\r\n const targetValue = target[key];\r\n\r\n if (\r\n sourceValue &&\r\n typeof sourceValue === 'object' &&\r\n !Array.isArray(sourceValue) &&\r\n targetValue &&\r\n typeof targetValue === 'object' &&\r\n !Array.isArray(targetValue)\r\n ) {\r\n (output as Record<string, unknown>)[key] = deepMerge(\r\n targetValue as object,\r\n sourceValue as DeepPartial<object>\r\n );\r\n } else if (sourceValue !== undefined) {\r\n (output as Record<string, unknown>)[key] = sourceValue;\r\n }\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\n// ==========================================\r\n// THEME FROM BRAND IDENTITY\r\n// ==========================================\r\n\r\n/**\r\n * Generate theme colors from brand identity\r\n */\r\nexport function createThemeFromBrand(\r\n brand: BrandIdentity,\r\n baseTheme: Theme = defaultLightTheme\r\n): Theme {\r\n const { colors } = brand;\r\n\r\n const brandOverrides: DeepPartial<Theme> = {\r\n brand,\r\n colors: {\r\n brand: {\r\n primary: colors.primary,\r\n secondary: colors.secondary,\r\n accent: colors.accent || colors.primary,\r\n background: colors.background || baseTheme.colors.background.default,\r\n foreground: colors.foreground || baseTheme.colors.text.primary,\r\n },\r\n semantic: {\r\n primary: colors.primary,\r\n primaryHover: adjustColor(colors.primary, -10),\r\n primaryActive: adjustColor(colors.primary, -20),\r\n primaryDisabled: adjustColor(colors.primary, 40),\r\n secondary: colors.secondary,\r\n secondaryHover: adjustColor(colors.secondary, -10),\r\n secondaryActive: adjustColor(colors.secondary, -20),\r\n secondaryDisabled: adjustColor(colors.secondary, 40),\r\n accent: colors.accent || colors.primary,\r\n accentHover: adjustColor(colors.accent || colors.primary, -10),\r\n },\r\n },\r\n components: {\r\n button: {\r\n bg: colors.primary,\r\n bgHover: adjustColor(colors.primary, -10),\r\n bgActive: adjustColor(colors.primary, -20),\r\n variants: {\r\n primary: {\r\n bg: colors.primary,\r\n bgHover: adjustColor(colors.primary, -10),\r\n },\r\n secondary: {\r\n bg: colors.secondary,\r\n bgHover: adjustColor(colors.secondary, -10),\r\n },\r\n },\r\n },\r\n input: {\r\n borderFocus: colors.primary,\r\n },\r\n header: {\r\n navColorActive: colors.primary,\r\n },\r\n loader: {\r\n color: colors.primary,\r\n },\r\n newsletter: {\r\n buttonBg: colors.primary,\r\n },\r\n },\r\n };\r\n\r\n return deepMerge(baseTheme, brandOverrides);\r\n}\r\n\r\n// ==========================================\r\n// COLOR UTILITIES\r\n// ==========================================\r\n\r\n/**\r\n * Adjust color brightness\r\n * @param hex - Hex color\r\n * @param percent - Positive to lighten, negative to darken\r\n */\r\nexport function adjustColor(hex: string, percent: number): string {\r\n // Remove # if present\r\n hex = hex.replace(/^#/, '');\r\n\r\n // Parse hex\r\n let r = parseInt(hex.substring(0, 2), 16);\r\n let g = parseInt(hex.substring(2, 4), 16);\r\n let b = parseInt(hex.substring(4, 6), 16);\r\n\r\n // Adjust\r\n r = Math.min(255, Math.max(0, r + (r * percent) / 100));\r\n g = Math.min(255, Math.max(0, g + (g * percent) / 100));\r\n b = Math.min(255, Math.max(0, b + (b * percent) / 100));\r\n\r\n // Convert back to hex\r\n const toHex = (n: number) => Math.round(n).toString(16).padStart(2, '0');\r\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\r\n}\r\n\r\n/**\r\n * Convert hex to rgba\r\n */\r\nexport function hexToRgba(hex: string, alpha: number = 1): string {\r\n hex = hex.replace(/^#/, '');\r\n\r\n const r = parseInt(hex.substring(0, 2), 16);\r\n const g = parseInt(hex.substring(2, 4), 16);\r\n const b = parseInt(hex.substring(4, 6), 16);\r\n\r\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\r\n}\r\n\r\n/**\r\n * Get contrasting text color (black or white)\r\n */\r\nexport function getContrastColor(hex: string): string {\r\n hex = hex.replace(/^#/, '');\r\n\r\n const r = parseInt(hex.substring(0, 2), 16);\r\n const g = parseInt(hex.substring(2, 4), 16);\r\n const b = parseInt(hex.substring(4, 6), 16);\r\n\r\n // Calculate relative luminance\r\n const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;\r\n\r\n return luminance > 0.5 ? '#000000' : '#ffffff';\r\n}\r\n\r\n// ==========================================\r\n// CSS VARIABLE GENERATION\r\n// ==========================================\r\n\r\n/**\r\n * Flatten nested object to CSS variables\r\n */\r\nexport function flattenToCssVars(\r\n obj: Record<string, unknown>,\r\n prefix: string = '--ec'\r\n): Record<string, string> {\r\n const result: Record<string, string> = {};\r\n\r\n function flatten(current: Record<string, unknown>, path: string[] = []) {\r\n for (const key in current) {\r\n if (Object.prototype.hasOwnProperty.call(current, key)) {\r\n const value = current[key];\r\n const newPath = [...path, key];\r\n const varName = `${prefix}-${newPath.join('-')}`;\r\n\r\n if (\r\n value &&\r\n typeof value === 'object' &&\r\n !Array.isArray(value)\r\n ) {\r\n flatten(value as Record<string, unknown>, newPath);\r\n } else if (typeof value === 'string' || typeof value === 'number') {\r\n result[varName] = String(value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n flatten(obj);\r\n return result;\r\n}\r\n\r\n/**\r\n * Generate CSS variables string from theme\r\n */\r\nexport function generateCssVars(theme: Theme, prefix: string = '--ec'): string {\r\n const cssVars = flattenToCssVars(theme as unknown as Record<string, unknown>, prefix);\r\n\r\n return Object.entries(cssVars)\r\n .map(([key, value]) => `${key}: ${value};`)\r\n .join('\\n');\r\n}\r\n\r\n/**\r\n * Inject CSS variables into document\r\n */\r\nexport function injectCssVars(theme: Theme, prefix: string = '--ec'): void {\r\n if (typeof document === 'undefined') return;\r\n\r\n const cssVars = flattenToCssVars(theme as unknown as Record<string, unknown>, prefix);\r\n const root = document.documentElement;\r\n\r\n for (const [key, value] of Object.entries(cssVars)) {\r\n root.style.setProperty(key, value);\r\n }\r\n}\r\n\r\n/**\r\n * Remove CSS variables from document\r\n */\r\nexport function removeCssVars(prefix: string = '--ec'): void {\r\n if (typeof document === 'undefined') return;\r\n\r\n const root = document.documentElement;\r\n const style = root.style;\r\n\r\n for (let i = style.length - 1; i >= 0; i--) {\r\n const name = style[i];\r\n if (name.startsWith(prefix)) {\r\n root.style.removeProperty(name);\r\n }\r\n }\r\n}\r\n\r\n// ==========================================\r\n// THEME LOADING\r\n// ==========================================\r\n\r\n/**\r\n * Load theme from URL\r\n */\r\nexport async function loadThemeFromUrl(url: string): Promise<DeepPartial<Theme> | null> {\r\n try {\r\n const response = await fetch(url, {\r\n headers: {\r\n Accept: 'application/json',\r\n },\r\n });\r\n\r\n if (!response.ok) {\r\n console.error(`Failed to load theme from ${url}: ${response.status}`);\r\n return null;\r\n }\r\n\r\n const themeData = await response.json();\r\n return themeData as DeepPartial<Theme>;\r\n } catch (error) {\r\n console.error(`Error loading theme from ${url}:`, error);\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Create theme with config\r\n */\r\nexport async function createTheme(config: ThemeConfig = {}): Promise<{\r\n light: Theme;\r\n dark: Theme;\r\n}> {\r\n let lightTheme = { ...defaultLightTheme };\r\n let darkTheme = { ...defaultDarkTheme };\r\n\r\n // Load theme from URL if provided\r\n if (config.themeUrl) {\r\n const urlTheme = await loadThemeFromUrl(config.themeUrl);\r\n if (urlTheme) {\r\n lightTheme = deepMerge(lightTheme, urlTheme);\r\n darkTheme = deepMerge(darkTheme, urlTheme);\r\n }\r\n }\r\n\r\n // Apply brand identity if provided\r\n if (config.brandIdentity) {\r\n lightTheme = createThemeFromBrand(config.brandIdentity, lightTheme);\r\n darkTheme = createThemeFromBrand(config.brandIdentity, darkTheme);\r\n }\r\n\r\n // Apply custom light overrides\r\n if (config.light) {\r\n lightTheme = deepMerge(lightTheme, config.light);\r\n }\r\n\r\n // Apply custom dark overrides\r\n if (config.dark) {\r\n darkTheme = deepMerge(darkTheme, config.dark);\r\n }\r\n\r\n return { light: lightTheme, dark: darkTheme };\r\n}\r\n\r\n// ==========================================\r\n// THEME PERSISTENCE\r\n// ==========================================\r\n\r\nconst DEFAULT_STORAGE_KEY = 'ec-theme-mode';\r\n\r\n/**\r\n * Save theme mode to storage\r\n */\r\nexport function saveThemeMode(mode: ThemeMode, storageKey: string = DEFAULT_STORAGE_KEY): void {\r\n if (typeof localStorage === 'undefined') return;\r\n\r\n try {\r\n localStorage.setItem(storageKey, mode);\r\n } catch (error) {\r\n console.error('Failed to save theme mode:', error);\r\n }\r\n}\r\n\r\n/**\r\n * Load theme mode from storage\r\n */\r\nexport function loadThemeMode(storageKey: string = DEFAULT_STORAGE_KEY): ThemeMode | null {\r\n if (typeof localStorage === 'undefined') return null;\r\n\r\n try {\r\n const mode = localStorage.getItem(storageKey);\r\n if (mode === 'light' || mode === 'dark' || mode === 'system') {\r\n return mode;\r\n }\r\n return null;\r\n } catch (error) {\r\n console.error('Failed to load theme mode:', error);\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Get system preferred color scheme\r\n */\r\nexport function getSystemColorScheme(): 'light' | 'dark' {\r\n if (typeof window === 'undefined') return 'light';\r\n\r\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\r\n}\r\n\r\n/**\r\n * Resolve theme mode (handle 'system')\r\n */\r\nexport function resolveThemeMode(mode: ThemeMode): 'light' | 'dark' {\r\n if (mode === 'system') {\r\n return getSystemColorScheme();\r\n }\r\n return mode;\r\n}\r\n\r\n// ==========================================\r\n// EXPORTS\r\n// ==========================================\r\n\r\nexport { defaultLightTheme, defaultDarkTheme };\r\n","/**\r\n * ThemeProvider Component\r\n * Global theme provider with light/dark mode support and brand identity integration\r\n */\r\n\r\nimport React, {\r\n createContext,\r\n useContext,\r\n useState,\r\n useEffect,\r\n useCallback,\r\n useMemo,\r\n} from 'react';\r\n\r\nimport type {\r\n Theme,\r\n ThemeConfig,\r\n ThemeContextValue,\r\n ThemeMode,\r\n DeepPartial,\r\n} from './theme.types';\r\n\r\nimport {\r\n defaultLightTheme,\r\n defaultDarkTheme,\r\n deepMerge,\r\n createThemeFromBrand,\r\n loadThemeFromUrl,\r\n saveThemeMode,\r\n loadThemeMode,\r\n resolveThemeMode,\r\n injectCssVars,\r\n} from './theme-utils';\r\n\r\n// ==========================================\r\n// CONTEXT\r\n// ==========================================\r\n\r\nconst ThemeContext = createContext<ThemeContextValue | null>(null);\r\n\r\n// ==========================================\r\n// HOOK\r\n// ==========================================\r\n\r\n/**\r\n * Hook to access theme context\r\n */\r\nexport function useTheme(): ThemeContextValue {\r\n const context = useContext(ThemeContext);\r\n\r\n if (!context) {\r\n throw new Error('useTheme must be used within a ThemeProvider');\r\n }\r\n\r\n return context;\r\n}\r\n\r\n// ==========================================\r\n// PROVIDER PROPS\r\n// ==========================================\r\n\r\nexport interface ThemeProviderProps {\r\n children: React.ReactNode;\r\n config?: ThemeConfig;\r\n /** Initial theme (overrides config) */\r\n initialTheme?: Theme;\r\n}\r\n\r\n// ==========================================\r\n// PROVIDER COMPONENT\r\n// ==========================================\r\n\r\nexport function ThemeProvider({\r\n children,\r\n config = {},\r\n initialTheme,\r\n}: ThemeProviderProps): React.ReactElement {\r\n const {\r\n defaultMode = 'system',\r\n themeUrl,\r\n light: lightOverrides,\r\n dark: darkOverrides,\r\n brandIdentity,\r\n enableSystemTheme = true,\r\n persistTheme = true,\r\n storageKey = 'ec-theme-mode',\r\n cssVarPrefix = '--ec',\r\n } = config;\r\n\r\n // State\r\n const [mode, setModeState] = useState<ThemeMode>(() => {\r\n // Try to load from storage first\r\n if (persistTheme && typeof window !== 'undefined') {\r\n const savedMode = loadThemeMode(storageKey);\r\n if (savedMode) return savedMode;\r\n }\r\n return defaultMode;\r\n });\r\n\r\n const [lightTheme, setLightTheme] = useState<Theme>(() => {\r\n if (initialTheme && initialTheme.mode === 'light') return initialTheme;\r\n\r\n let theme = defaultLightTheme;\r\n\r\n // Apply brand identity\r\n if (brandIdentity) {\r\n theme = createThemeFromBrand(brandIdentity, theme);\r\n }\r\n\r\n // Apply overrides\r\n if (lightOverrides) {\r\n theme = deepMerge(theme, lightOverrides);\r\n }\r\n\r\n return theme;\r\n });\r\n\r\n const [darkTheme, setDarkTheme] = useState<Theme>(() => {\r\n if (initialTheme && initialTheme.mode === 'dark') return initialTheme;\r\n\r\n let theme = defaultDarkTheme;\r\n\r\n // Apply brand identity\r\n if (brandIdentity) {\r\n theme = createThemeFromBrand(brandIdentity, theme);\r\n }\r\n\r\n // Apply overrides\r\n if (darkOverrides) {\r\n theme = deepMerge(theme, darkOverrides);\r\n }\r\n\r\n return theme;\r\n });\r\n\r\n const [isLoading, setIsLoading] = useState(!!themeUrl);\r\n const [error, setError] = useState<string | null>(null);\r\n\r\n // Computed values\r\n const resolvedMode = useMemo(() => resolveThemeMode(mode), [mode]);\r\n const theme = useMemo(\r\n () => (resolvedMode === 'dark' ? darkTheme : lightTheme),\r\n [resolvedMode, lightTheme, darkTheme]\r\n );\r\n const isDark = resolvedMode === 'dark';\r\n const isLight = resolvedMode === 'light';\r\n\r\n // Load theme from URL\r\n useEffect(() => {\r\n if (!themeUrl) return;\r\n\r\n setIsLoading(true);\r\n setError(null);\r\n\r\n loadThemeFromUrl(themeUrl)\r\n .then((urlTheme) => {\r\n if (urlTheme) {\r\n setLightTheme((prev) => deepMerge(prev, urlTheme));\r\n setDarkTheme((prev) => deepMerge(prev, urlTheme));\r\n }\r\n })\r\n .catch((err) => {\r\n setError(err instanceof Error ? err.message : 'Failed to load theme');\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n }, [themeUrl]);\r\n\r\n // Inject CSS variables\r\n useEffect(() => {\r\n if (typeof window !== 'undefined') {\r\n injectCssVars(theme, cssVarPrefix);\r\n }\r\n }, [theme, cssVarPrefix]);\r\n\r\n // Update document color scheme\r\n useEffect(() => {\r\n if (typeof document !== 'undefined') {\r\n document.documentElement.setAttribute('data-theme', resolvedMode);\r\n document.documentElement.style.colorScheme = resolvedMode;\r\n }\r\n }, [resolvedMode]);\r\n\r\n // Listen for system theme changes\r\n useEffect(() => {\r\n if (!enableSystemTheme || typeof window === 'undefined') return;\r\n\r\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\r\n\r\n const handleChange = () => {\r\n if (mode === 'system') {\r\n // Force re-render by updating state\r\n setModeState('system');\r\n }\r\n };\r\n\r\n mediaQuery.addEventListener('change', handleChange);\r\n return () => mediaQuery.removeEventListener('change', handleChange);\r\n }, [mode, enableSystemTheme]);\r\n\r\n // Save mode to storage\r\n useEffect(() => {\r\n if (persistTheme && typeof window !== 'undefined') {\r\n saveThemeMode(mode, storageKey);\r\n }\r\n }, [mode, persistTheme, storageKey]);\r\n\r\n // Methods\r\n const setMode = useCallback((newMode: ThemeMode) => {\r\n setModeState(newMode);\r\n }, []);\r\n\r\n const toggleMode = useCallback(() => {\r\n setModeState((prev) => {\r\n const current = resolveThemeMode(prev);\r\n return current === 'dark' ? 'light' : 'dark';\r\n });\r\n }, []);\r\n\r\n const updateTheme = useCallback((updates: DeepPartial<Theme>) => {\r\n setLightTheme((prev) => deepMerge(prev, updates));\r\n setDarkTheme((prev) => deepMerge(prev, updates));\r\n }, []);\r\n\r\n const resetTheme = useCallback(() => {\r\n let light = defaultLightTheme;\r\n let dark = defaultDarkTheme;\r\n\r\n if (brandIdentity) {\r\n light = createThemeFromBrand(brandIdentity, light);\r\n dark = createThemeFromBrand(brandIdentity, dark);\r\n }\r\n\r\n if (lightOverrides) {\r\n light = deepMerge(light, lightOverrides);\r\n }\r\n\r\n if (darkOverrides) {\r\n dark = deepMerge(dark, darkOverrides);\r\n }\r\n\r\n setLightTheme(light);\r\n setDarkTheme(dark);\r\n }, [brandIdentity, lightOverrides, darkOverrides]);\r\n\r\n // Context value\r\n const contextValue = useMemo<ThemeContextValue>(\r\n () => ({\r\n theme,\r\n mode,\r\n setMode,\r\n toggleMode,\r\n updateTheme,\r\n resetTheme,\r\n isDark,\r\n isLight,\r\n isLoading,\r\n error,\r\n }),\r\n [theme, mode, setMode, toggleMode, updateTheme, resetTheme, isDark, isLight, isLoading, error]\r\n );\r\n\r\n return (\r\n <ThemeContext.Provider value={contextValue}>\r\n {children}\r\n </ThemeContext.Provider>\r\n );\r\n}\r\n\r\n// ==========================================\r\n// STYLED WRAPPER (CSS-in-JS style)\r\n// ==========================================\r\n\r\n/**\r\n * Get CSS variable value from theme path\r\n * @example cssVar('colors.brand.primary') => 'var(--ec-colors-brand-primary)'\r\n */\r\nexport function cssVar(path: string, prefix: string = '--ec'): string {\r\n return `var(${prefix}-${path.replace(/\\./g, '-')})`;\r\n}\r\n\r\n/**\r\n * Get theme value directly\r\n */\r\nexport function useThemeValue<T>(\r\n selector: (theme: Theme) => T\r\n): T {\r\n const { theme } = useTheme();\r\n return selector(theme);\r\n}\r\n\r\n// ==========================================\r\n// THEME TOGGLE COMPONENT\r\n// ==========================================\r\n\r\nexport interface ThemeToggleProps {\r\n className?: string;\r\n size?: number;\r\n showLabel?: boolean;\r\n lightLabel?: string;\r\n darkLabel?: string;\r\n}\r\n\r\nexport function ThemeToggle({\r\n className = '',\r\n size = 24,\r\n showLabel = false,\r\n lightLabel = 'Light',\r\n darkLabel = 'Dark',\r\n}: ThemeToggleProps): React.ReactElement {\r\n const { isDark, toggleMode } = useTheme();\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n onClick={toggleMode}\r\n className={`ec-theme-toggle ${className}`}\r\n aria-label={isDark ? 'Switch to light mode' : 'Switch to dark mode'}\r\n style={{\r\n background: 'none',\r\n border: 'none',\r\n cursor: 'pointer',\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '0.5rem',\r\n padding: '0.5rem',\r\n borderRadius: '0.375rem',\r\n transition: 'background-color 200ms ease-in-out',\r\n }}\r\n >\r\n {isDark ? (\r\n // Sun icon for dark mode (click to go light)\r\n <svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <circle cx=\"12\" cy=\"12\" r=\"5\" />\r\n <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\" />\r\n <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\" />\r\n <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\" />\r\n <line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\" />\r\n <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" />\r\n <line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" />\r\n <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\" />\r\n <line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\" />\r\n </svg>\r\n ) : (\r\n // Moon icon for light mode (click to go dark)\r\n <svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\" />\r\n </svg>\r\n )}\r\n {showLabel && <span>{isDark ? darkLabel : lightLabel}</span>}\r\n </button>\r\n );\r\n}\r\n\r\n// ==========================================\r\n// EXPORTS\r\n// ==========================================\r\n\r\nexport { ThemeContext };\r\n","/**\r\n * Astro Component Types\r\n * Highly typed props for all Astro components with Tailwind class support\r\n */\r\n\r\n// ==========================================\r\n// BASE TYPES\r\n// ==========================================\r\n\r\n/** Common Tailwind text colors */\r\nexport type TailwindTextColor =\r\n | 'text-white' | 'text-black'\r\n | 'text-gray-50' | 'text-gray-100' | 'text-gray-200' | 'text-gray-300' | 'text-gray-400'\r\n | 'text-gray-500' | 'text-gray-600' | 'text-gray-700' | 'text-gray-800' | 'text-gray-900'\r\n | 'text-slate-50' | 'text-slate-100' | 'text-slate-200' | 'text-slate-300' | 'text-slate-400'\r\n | 'text-slate-500' | 'text-slate-600' | 'text-slate-700' | 'text-slate-800' | 'text-slate-900'\r\n | 'text-blue-500' | 'text-blue-600' | 'text-blue-700'\r\n | 'text-green-500' | 'text-green-600' | 'text-green-700'\r\n | 'text-red-500' | 'text-red-600' | 'text-red-700'\r\n | 'text-yellow-500' | 'text-yellow-600' | 'text-yellow-700'\r\n | 'text-purple-500' | 'text-purple-600' | 'text-purple-700'\r\n | 'text-pink-500' | 'text-pink-600' | 'text-pink-700'\r\n | 'text-indigo-500' | 'text-indigo-600' | 'text-indigo-700'\r\n | string;\r\n\r\n/** Common Tailwind background colors */\r\nexport type TailwindBgColor =\r\n | 'bg-white' | 'bg-black' | 'bg-transparent'\r\n | 'bg-gray-50' | 'bg-gray-100' | 'bg-gray-200' | 'bg-gray-300' | 'bg-gray-400'\r\n | 'bg-gray-500' | 'bg-gray-600' | 'bg-gray-700' | 'bg-gray-800' | 'bg-gray-900'\r\n | 'bg-slate-50' | 'bg-slate-100' | 'bg-slate-200' | 'bg-slate-300' | 'bg-slate-400'\r\n | 'bg-slate-500' | 'bg-slate-600' | 'bg-slate-700' | 'bg-slate-800' | 'bg-slate-900'\r\n | 'bg-blue-500' | 'bg-blue-600' | 'bg-blue-700'\r\n | 'bg-green-500' | 'bg-green-600' | 'bg-green-700'\r\n | 'bg-red-500' | 'bg-red-600' | 'bg-red-700'\r\n | 'bg-yellow-500' | 'bg-yellow-600' | 'bg-yellow-700'\r\n | 'bg-purple-500' | 'bg-purple-600' | 'bg-purple-700'\r\n | 'bg-gradient-to-r' | 'bg-gradient-to-l' | 'bg-gradient-to-t' | 'bg-gradient-to-b'\r\n | 'bg-gradient-to-br' | 'bg-gradient-to-bl' | 'bg-gradient-to-tr' | 'bg-gradient-to-tl'\r\n | string;\r\n\r\n/** Common Tailwind padding */\r\nexport type TailwindPadding =\r\n | 'p-0' | 'p-1' | 'p-2' | 'p-3' | 'p-4' | 'p-5' | 'p-6' | 'p-8' | 'p-10' | 'p-12' | 'p-16' | 'p-20' | 'p-24'\r\n | 'px-0' | 'px-1' | 'px-2' | 'px-3' | 'px-4' | 'px-5' | 'px-6' | 'px-8' | 'px-10' | 'px-12' | 'px-16'\r\n | 'py-0' | 'py-1' | 'py-2' | 'py-3' | 'py-4' | 'py-5' | 'py-6' | 'py-8' | 'py-10' | 'py-12' | 'py-16' | 'py-20' | 'py-24'\r\n | 'pt-0' | 'pt-4' | 'pt-8' | 'pt-12' | 'pt-16' | 'pt-20' | 'pt-24'\r\n | 'pb-0' | 'pb-4' | 'pb-8' | 'pb-12' | 'pb-16' | 'pb-20' | 'pb-24'\r\n | string;\r\n\r\n/** Common Tailwind margin */\r\nexport type TailwindMargin =\r\n | 'm-0' | 'm-1' | 'm-2' | 'm-3' | 'm-4' | 'm-5' | 'm-6' | 'm-8' | 'm-auto'\r\n | 'mx-auto' | 'mx-0' | 'mx-4' | 'mx-6' | 'mx-8'\r\n | 'my-0' | 'my-4' | 'my-6' | 'my-8' | 'my-10' | 'my-12' | 'my-16'\r\n | 'mt-0' | 'mt-2' | 'mt-4' | 'mt-6' | 'mt-8' | 'mt-10' | 'mt-12' | 'mt-16'\r\n | 'mb-0' | 'mb-2' | 'mb-4' | 'mb-6' | 'mb-8' | 'mb-10' | 'mb-12' | 'mb-16'\r\n | 'ml-auto' | 'mr-auto'\r\n | string;\r\n\r\n/** Common Tailwind font sizes */\r\nexport type TailwindFontSize =\r\n | 'text-xs' | 'text-sm' | 'text-base' | 'text-lg' | 'text-xl'\r\n | 'text-2xl' | 'text-3xl' | 'text-4xl' | 'text-5xl' | 'text-6xl'\r\n | 'text-7xl' | 'text-8xl' | 'text-9xl'\r\n | string;\r\n\r\n/** Common Tailwind font weights */\r\nexport type TailwindFontWeight =\r\n | 'font-thin' | 'font-extralight' | 'font-light' | 'font-normal'\r\n | 'font-medium' | 'font-semibold' | 'font-bold' | 'font-extrabold' | 'font-black'\r\n | string;\r\n\r\n/** Common Tailwind border radius */\r\nexport type TailwindBorderRadius =\r\n | 'rounded-none' | 'rounded-sm' | 'rounded' | 'rounded-md'\r\n | 'rounded-lg' | 'rounded-xl' | 'rounded-2xl' | 'rounded-3xl' | 'rounded-full'\r\n | string;\r\n\r\n/** Common Tailwind shadow */\r\nexport type TailwindShadow =\r\n | 'shadow-none' | 'shadow-sm' | 'shadow' | 'shadow-md'\r\n | 'shadow-lg' | 'shadow-xl' | 'shadow-2xl' | 'shadow-inner'\r\n | string;\r\n\r\n/** Common Tailwind width */\r\nexport type TailwindWidth =\r\n | 'w-full' | 'w-screen' | 'w-auto' | 'w-fit' | 'w-max' | 'w-min'\r\n | 'w-1/2' | 'w-1/3' | 'w-2/3' | 'w-1/4' | 'w-3/4' | 'w-1/5' | 'w-2/5' | 'w-3/5' | 'w-4/5'\r\n | 'w-8' | 'w-10' | 'w-12' | 'w-16' | 'w-20' | 'w-24' | 'w-32' | 'w-40' | 'w-48' | 'w-56' | 'w-64'\r\n | 'max-w-sm' | 'max-w-md' | 'max-w-lg' | 'max-w-xl' | 'max-w-2xl' | 'max-w-3xl' | 'max-w-4xl' | 'max-w-5xl' | 'max-w-6xl' | 'max-w-7xl' | 'max-w-full'\r\n | string;\r\n\r\n/** Common Tailwind height */\r\nexport type TailwindHeight =\r\n | 'h-full' | 'h-screen' | 'h-auto' | 'h-fit' | 'h-max' | 'h-min'\r\n | 'h-8' | 'h-10' | 'h-12' | 'h-16' | 'h-20' | 'h-24' | 'h-32' | 'h-40' | 'h-48' | 'h-56' | 'h-64'\r\n | 'min-h-screen' | 'min-h-full'\r\n | string;\r\n\r\n/** Common Tailwind gap */\r\nexport type TailwindGap =\r\n | 'gap-0' | 'gap-1' | 'gap-2' | 'gap-3' | 'gap-4' | 'gap-5' | 'gap-6' | 'gap-8' | 'gap-10' | 'gap-12'\r\n | 'gap-x-0' | 'gap-x-2' | 'gap-x-4' | 'gap-x-6' | 'gap-x-8'\r\n | 'gap-y-0' | 'gap-y-2' | 'gap-y-4' | 'gap-y-6' | 'gap-y-8'\r\n | string;\r\n\r\n/** Custom class string */\r\nexport type TailwindClasses = string;\r\n\r\n// ==========================================\r\n// BUTTON COMPONENT\r\n// ==========================================\r\n\r\nexport type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'link' | 'danger' | 'success';\r\nexport type ButtonSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface ButtonProps {\r\n /** Button text content */\r\n text: string;\r\n /** Button variant */\r\n variant?: ButtonVariant;\r\n /** Button size */\r\n size?: ButtonSize;\r\n /** Full width button */\r\n fullWidth?: boolean;\r\n /** Disabled state */\r\n disabled?: boolean;\r\n /** Button type */\r\n type?: 'button' | 'submit' | 'reset';\r\n /** Link href (renders as anchor) */\r\n href?: string;\r\n /** Open in new tab */\r\n target?: '_blank' | '_self' | '_parent' | '_top';\r\n /** Left icon (SVG string or component) */\r\n leftIcon?: string;\r\n /** Right icon (SVG string or component) */\r\n rightIcon?: string;\r\n /** Additional class override */\r\n class?: TailwindClasses;\r\n /** Container class */\r\n containerClass?: TailwindClasses;\r\n /** ID attribute */\r\n id?: string;\r\n /** Aria label */\r\n ariaLabel?: string;\r\n}\r\n\r\n// ==========================================\r\n// LOADER COMPONENT\r\n// ==========================================\r\n\r\nexport type LoaderVariant = 'spinner' | 'dots' | 'pulse' | 'bars';\r\nexport type LoaderSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface LoaderProps {\r\n /** Loader variant */\r\n variant?: LoaderVariant;\r\n /** Loader size */\r\n size?: LoaderSize;\r\n /** Custom color */\r\n color?: TailwindTextColor;\r\n /** Label text */\r\n label?: string;\r\n /** Show label */\r\n showLabel?: boolean;\r\n /** Additional classes */\r\n class?: TailwindClasses;\r\n}\r\n\r\n// ==========================================\r\n// GRID/LAYOUT COMPONENTS\r\n// ==========================================\r\n\r\nexport interface ContainerProps {\r\n /** Max width */\r\n maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl' | '7xl' | 'full';\r\n /** Padding */\r\n padding?: TailwindPadding;\r\n /** Center content */\r\n centered?: boolean;\r\n /** Additional classes */\r\n class?: TailwindClasses;\r\n}\r\n\r\nexport interface RowProps {\r\n /** Gap between columns */\r\n gap?: TailwindGap;\r\n /** Vertical alignment */\r\n alignItems?: 'start' | 'center' | 'end' | 'stretch' | 'baseline';\r\n /** Horizontal alignment */\r\n justifyContent?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\r\n /** Wrap behavior */\r\n wrap?: boolean;\r\n /** Reverse order */\r\n reverse?: boolean;\r\n /** Additional classes */\r\n class?: TailwindClasses;\r\n}\r\n\r\nexport interface ColProps {\r\n /** Column span (1-12) */\r\n span?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 'auto' | 'full';\r\n /** Span on sm screens */\r\n sm?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 'auto' | 'full';\r\n /** Span on md screens */\r\n md?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 'auto' | 'full';\r\n /** Span on lg screens */\r\n lg?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 'auto' | 'full';\r\n /** Span on xl screens */\r\n xl?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 'auto' | 'full';\r\n /** Additional classes */\r\n class?: TailwindClasses;\r\n}\r\n\r\nexport interface TwoColumnProps {\r\n /** Left column content ratio */\r\n leftRatio?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11;\r\n /** Gap between columns */\r\n gap?: TailwindGap;\r\n /** Reverse on mobile */\r\n reverseMobile?: boolean;\r\n /** Vertical alignment */\r\n alignItems?: 'start' | 'center' | 'end' | 'stretch';\r\n /** Additional classes */\r\n class?: TailwindClasses;\r\n /** Left column class */\r\n leftClass?: TailwindClasses;\r\n /** Right column class */\r\n rightClass?: TailwindClasses;\r\n}\r\n\r\nexport interface ThreeColumnProps {\r\n /** Gap between columns */\r\n gap?: TailwindGap;\r\n /** Vertical alignment */\r\n alignItems?: 'start' | 'center' | 'end' | 'stretch';\r\n /** Additional classes */\r\n class?: TailwindClasses;\r\n /** Column 1 class */\r\n col1Class?: TailwindClasses;\r\n /** Column 2 class */\r\n col2Class?: TailwindClasses;\r\n /** Column 3 class */\r\n col3Class?: TailwindClasses;\r\n}\r\n\r\n// ==========================================\r\n// HEADER COMPONENT\r\n// ==========================================\r\n\r\nexport interface NavLink {\r\n /** Link text */\r\n text: string;\r\n /** Link URL */\r\n href: string;\r\n /** Active state */\r\n active?: boolean;\r\n /** Open in new tab */\r\n external?: boolean;\r\n /** Dropdown items */\r\n children?: NavLink[];\r\n /** Icon SVG string */\r\n icon?: string;\r\n}\r\n\r\nexport interface HeaderProps {\r\n /** Logo image URL */\r\n logo?: string;\r\n /** Logo alt text */\r\n logoAlt?: string;\r\n /** Logo text (if no image) */\r\n logoText?: string;\r\n /** Navigation links */\r\n navLinks?: NavLink[];\r\n /** CTA button */\r\n cta?: {\r\n text: string;\r\n href: string;\r\n variant?: ButtonVariant;\r\n };\r\n /** Sticky header */\r\n sticky?: boolean;\r\n /** Transparent background */\r\n transparent?: boolean;\r\n /** Background class */\r\n bgClass?: TailwindBgColor;\r\n /** Text color class */\r\n textClass?: TailwindTextColor;\r\n /** Additional classes */\r\n class?: TailwindClasses;\r\n /** Logo class */\r\n logoClass?: TailwindClasses;\r\n /** Nav class */\r\n navClass?: TailwindClasses;\r\n /** Container max width */\r\n maxWidth?: ContainerProps['maxWidth'];\r\n}\r\n\r\n// ==========================================\r\n// FOOTER COMPONENT\r\n// ==========================================\r\n\r\nexport interface FooterColumn {\r\n /** Column title */\r\n title: string;\r\n /** Column links */\r\n links: NavLink[];\r\n}\r\n\r\nexport interface SocialLink {\r\n /** Platform name */\r\n platform: 'facebook' | 'twitter' | 'instagram' | 'linkedin' | 'youtube' | 'github' | 'discord' | 'tiktok';\r\n /** Profile URL */\r\n href: string;\r\n /** Icon SVG (optional, defaults based on platform) */\r\n icon?: string;\r\n}\r\n\r\nexport interface FooterProps {\r\n /** Logo image URL */\r\n logo?: string;\r\n /** Logo alt text */\r\n logoAlt?: string;\r\n /** Logo text */\r\n logoText?: string;\r\n /** Company description */\r\n description?: string;\r\n /** Footer columns */\r\n columns?: FooterColumn[];\r\n /** Social links */\r\n socialLinks?: SocialLink[];\r\n /** Copyright text */\r\n copyright?: string;\r\n /** Background class */\r\n bgClass?: TailwindBgColor;\r\n /** Text color class */\r\n textClass?: TailwindTextColor;\r\n /** Additional classes */\r\n class?: TailwindClasses;\r\n /** Container max width */\r\n maxWidth?: ContainerProps['maxWidth'];\r\n /** Show newsletter signup */\r\n showNewsletter?: boolean;\r\n /** Newsletter title */\r\n newsletterTitle?: string;\r\n /** Newsletter description */\r\n newsletterDescription?: string;\r\n}\r\n\r\n// ==========================================\r\n// BANNER/HERO COMPONENT\r\n// ==========================================\r\n\r\nexport interface BannerProps {\r\n /** Main heading */\r\n title: string;\r\n /** Subtitle/description */\r\n subtitle?: string;\r\n /** Background image URL */\r\n backgroundImage?: string;\r\n /** Background gradient/color */\r\n bgClass?: TailwindBgColor;\r\n /** Text color */\r\n textClass?: TailwindTextColor;\r\n /** Overlay opacity (0-100) */\r\n overlayOpacity?: number;\r\n /** Overlay color class */\r\n overlayClass?: string;\r\n /** Primary CTA */\r\n primaryCta?: {\r\n text: string;\r\n href: string;\r\n variant?: ButtonVariant;\r\n };\r\n /** Secondary CTA */\r\n secondaryCta?: {\r\n text: string;\r\n href: string;\r\n variant?: ButtonVariant;\r\n };\r\n /** Banner height */\r\n height?: 'sm' | 'md' | 'lg' | 'xl' | 'screen';\r\n /** Content alignment */\r\n align?: 'left' | 'center' | 'right';\r\n /** Additional classes */\r\n class?: TailwindClasses;\r\n /** Title class */\r\n titleClass?: TailwindClasses;\r\n /** Subtitle class */\r\n subtitleClass?: TailwindClasses;\r\n /** Content container class */\r\n contentClass?: TailwindClasses;\r\n}\r\n\r\n// ==========================================\r\n// CTA SECTION COMPONENT\r\n// ==========================================\r\n\r\nexport interface CtaSectionProps {\r\n /** Main heading */\r\n title: string;\r\n /** Description text */\r\n description?: string;\r\n /** Primary button */\r\n primaryButton?: {\r\n text: string;\r\n href: string;\r\n variant?: ButtonVariant;\r\n };\r\n /** Secondary button */\r\n secondaryButton?: {\r\n text: string;\r\n href: string;\r\n variant?: ButtonVariant;\r\n };\r\n /** Background class */\r\n bgClass?: TailwindBgColor;\r\n /** Text color */\r\n textClass?: TailwindTextColor;\r\n /** Content alignment */\r\n align?: 'left' | 'center' | 'right';\r\n /** Additional classes */\r\n class?: TailwindClasses;\r\n /** Padding */\r\n padding?: TailwindPadding;\r\n}\r\n\r\n// ==========================================\r\n// NEWSLETTER SECTION COMPONENT\r\n// ==========================================\r\n\r\nexport interface NewsletterSectionProps {\r\n /** Main heading */\r\n title?: string;\r\n /** Description text */\r\n description?: string;\r\n /** Placeholder text */\r\n placeholder?: string;\r\n /** Submit button text */\r\n buttonText?: string;\r\n /** Success message */\r\n successMessage?: string;\r\n /** Error message */\r\n errorMessage?: string;\r\n /** Form action URL */\r\n actionUrl?: string;\r\n /** Background class */\r\n bgClass?: TailwindBgColor;\r\n /** Text color */\r\n textClass?: TailwindTextColor;\r\n /** Additional classes */\r\n class?: TailwindClasses;\r\n /** Input class */\r\n inputClass?: TailwindClasses;\r\n /** Button class */\r\n buttonClass?: TailwindClasses;\r\n /** Show privacy note */\r\n showPrivacyNote?: boolean;\r\n /** Privacy note text */\r\n privacyNote?: string;\r\n}\r\n\r\n// ==========================================\r\n// CARD COMPONENT\r\n// ==========================================\r\n\r\nexport interface CardProps {\r\n /** Card title */\r\n title?: string;\r\n /** Card description */\r\n description?: string;\r\n /** Card image URL */\r\n image?: string;\r\n /** Image alt text */\r\n imageAlt?: string;\r\n /** Image position */\r\n imagePosition?: 'top' | 'bottom' | 'left' | 'right';\r\n /** Card link */\r\n href?: string;\r\n /** Background class */\r\n bgClass?: TailwindBgColor;\r\n /** Text color */\r\n textClass?: TailwindTextColor;\r\n /** Border radius */\r\n rounded?: TailwindBorderRadius;\r\n /** Shadow */\r\n shadow?: TailwindShadow;\r\n /** Hover effect */\r\n hoverEffect?: boolean;\r\n /** Additional classes */\r\n class?: TailwindClasses;\r\n /** Image class */\r\n imageClass?: TailwindClasses;\r\n /** Content class */\r\n contentClass?: TailwindClasses;\r\n /** Title class */\r\n titleClass?: TailwindClasses;\r\n /** Description class */\r\n descriptionClass?: TailwindClasses;\r\n /** Padding */\r\n padding?: TailwindPadding;\r\n}\r\n\r\n// ==========================================\r\n// FEATURE SECTION COMPONENT\r\n// ==========================================\r\n\r\nexport interface Feature {\r\n /** Feature title */\r\n title: string;\r\n /** Feature description */\r\n description: string;\r\n /** Feature icon (SVG string) */\r\n icon?: string;\r\n /** Feature image */\r\n image?: string;\r\n /** Feature link */\r\n href?: string;\r\n}\r\n\r\nexport interface FeatureSectionProps {\r\n /** Section title */\r\n title?: string;\r\n /** Section subtitle */\r\n subtitle?: string;\r\n /** Features array */\r\n features: Feature[];\r\n /** Layout columns */\r\n columns?: 2 | 3 | 4;\r\n /** Background class */\r\n bgClass?: TailwindBgColor;\r\n /** Text color */\r\n textClass?: TailwindTextColor;\r\n /** Additional classes */\r\n class?: TailwindClasses;\r\n /** Feature card class */\r\n featureClass?: TailwindClasses;\r\n /** Icon class */\r\n iconClass?: TailwindClasses;\r\n}\r\n\r\n// ==========================================\r\n// TESTIMONIAL COMPONENT\r\n// ==========================================\r\n\r\nexport interface Testimonial {\r\n /** Author name */\r\n name: string;\r\n /** Author role/title */\r\n role?: string;\r\n /** Author company */\r\n company?: string;\r\n /** Author avatar URL */\r\n avatar?: string;\r\n /** Testimonial text */\r\n text: string;\r\n /** Rating (1-5) */\r\n rating?: 1 | 2 | 3 | 4 | 5;\r\n}\r\n\r\nexport interface TestimonialSectionProps {\r\n /** Section title */\r\n title?: string;\r\n /** Section subtitle */\r\n subtitle?: string;\r\n /** Testimonials array */\r\n testimonials: Testimonial[];\r\n /** Layout style */\r\n layout?: 'grid' | 'carousel' | 'single';\r\n /** Background class */\r\n bgClass?: TailwindBgColor;\r\n /** Text color */\r\n textClass?: TailwindTextColor;\r\n /** Additional classes */\r\n class?: TailwindClasses;\r\n /** Testimonial card class */\r\n cardClass?: TailwindClasses;\r\n}\r\n\r\n// ==========================================\r\n// PRICING COMPONENT\r\n// ==========================================\r\n\r\nexport interface PricingFeature {\r\n /** Feature text */\r\n text: string;\r\n /** Included or not */\r\n included: boolean;\r\n}\r\n\r\nexport interface PricingPlan {\r\n /** Plan name */\r\n name: string;\r\n /** Plan description */\r\n description?: string;\r\n /** Price */\r\n price: string;\r\n /** Price period */\r\n period?: string;\r\n /** Features list */\r\n features: PricingFeature[];\r\n /** CTA button text */\r\n ctaText: string;\r\n /** CTA button href */\r\n ctaHref: string;\r\n /** Highlighted/popular plan */\r\n popular?: boolean;\r\n /** Badge text */\r\n badge?: string;\r\n}\r\n\r\nexport interface PricingSectionProps {\r\n /** Section title */\r\n title?: string;\r\n /** Section subtitle */\r\n subtitle?: string;\r\n /** Pricing plans */\r\n plans: PricingPlan[];\r\n /** Background class */\r\n bgClass?: TailwindBgColor;\r\n /** Text color */\r\n textClass?: TailwindTextColor;\r\n /** Additional classes */\r\n class?: TailwindClasses;\r\n /** Plan card class */\r\n planClass?: TailwindClasses;\r\n}\r\n\r\n// ==========================================\r\n// FAQ COMPONENT\r\n// ==========================================\r\n\r\nexport interface FaqItem {\r\n /** Question */\r\n question: string;\r\n /** Answer */\r\n answer: string;\r\n}\r\n\r\nexport interface FaqSectionProps {\r\n /** Section title */\r\n title?: string;\r\n /** Section subtitle */\r\n subtitle?: string;\r\n /** FAQ items */\r\n items: FaqItem[];\r\n /** Layout style */\r\n layout?: 'accordion' | 'grid' | 'list';\r\n /** Background class */\r\n bgClass?: TailwindBgColor;\r\n /** Text color */\r\n textClass?: TailwindTextColor;\r\n /** Additional classes */\r\n class?: TailwindClasses;\r\n}\r\n\r\n// ==========================================\r\n// IMAGE COMPONENT\r\n// ==========================================\r\n\r\nexport interface ImageProps {\r\n /** Image source URL */\r\n src: string;\r\n /** Alt text */\r\n alt: string;\r\n /** Width */\r\n width?: number;\r\n /** Height */\r\n height?: number;\r\n /** Lazy loading */\r\n loading?: 'lazy' | 'eager';\r\n /** Object fit */\r\n objectFit?: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';\r\n /** Border radius */\r\n rounded?: TailwindBorderRadius;\r\n /** Shadow */\r\n shadow?: TailwindShadow;\r\n /** Additional classes */\r\n class?: TailwindClasses;\r\n}\r\n\r\n// ==========================================\r\n// BADGE COMPONENT\r\n// ==========================================\r\n\r\nexport type BadgeVariant = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info' | 'outline';\r\n\r\nexport interface BadgeProps {\r\n /** Badge text */\r\n text: string;\r\n /** Badge variant */\r\n variant?: BadgeVariant;\r\n /** Size */\r\n size?: 'sm' | 'md' | 'lg';\r\n /** Rounded pill style */\r\n pill?: boolean;\r\n /** Additional classes */\r\n class?: TailwindClasses;\r\n}\r\n\r\n// ==========================================\r\n// DIVIDER COMPONENT\r\n// ==========================================\r\n\r\nexport interface DividerProps {\r\n /** Divider style */\r\n variant?: 'solid' | 'dashed' | 'dotted';\r\n /** Divider color */\r\n color?: string;\r\n /** Thickness */\r\n thickness?: string;\r\n /** Margin */\r\n margin?: TailwindMargin;\r\n /** Additional classes */\r\n class?: TailwindClasses;\r\n}\r\n\r\n// ==========================================\r\n// SPACER COMPONENT\r\n// ==========================================\r\n\r\nexport interface SpacerProps {\r\n /** Spacer height */\r\n height?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';\r\n /** Responsive height */\r\n responsive?: boolean;\r\n /** Additional classes */\r\n class?: TailwindClasses;\r\n}\r\n\r\n// ==========================================\r\n// DUMMY DATA HELPERS\r\n// ==========================================\r\n\r\n/** Generate dummy image URL */\r\nexport function dummyImage(\r\n width: number,\r\n height: number,\r\n text?: string,\r\n bgColor: string = 'cccccc',\r\n textColor: string = '969696'\r\n): string {\r\n const label = text ? `&text=${encodeURIComponent(text)}` : '';\r\n return `https://dummyimage.com/${width}x${height}/${bgColor}/${textColor}${label}`;\r\n}\r\n\r\n/** Lorem ipsum generator */\r\nexport function loremIpsum(\r\n type: 'word' | 'sentence' | 'paragraph' = 'paragraph',\r\n count: number = 1\r\n): string {\r\n const words = [\r\n 'lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipiscing', 'elit',\r\n 'sed', 'do', 'eiusmod', 'tempor', 'incididunt', 'ut', 'labore', 'et', 'dolore',\r\n 'magna', 'aliqua', 'enim', 'ad', 'minim', 'veniam', 'quis', 'nostrud',\r\n 'exercitation', 'ullamco', 'laboris', 'nisi', 'aliquip', 'ex', 'ea', 'commodo',\r\n 'consequat', 'duis', 'aute', 'irure', 'in', 'reprehenderit', 'voluptate',\r\n 'velit', 'esse', 'cillum', 'fugiat', 'nulla', 'pariatur', 'excepteur', 'sint',\r\n 'occaecat', 'cupidatat', 'non', 'proident', 'sunt', 'culpa', 'qui', 'officia',\r\n 'deserunt', 'mollit', 'anim', 'id', 'est', 'laborum',\r\n ];\r\n\r\n const getWords = (n: number) => {\r\n const result: string[] = [];\r\n for (let i = 0; i < n; i++) {\r\n result.push(words[Math.floor(Math.random() * words.length)]);\r\n }\r\n return result;\r\n };\r\n\r\n const capitalize = (str: string) => str.charAt(0).toUpperCase() + str.slice(1);\r\n\r\n if (type === 'word') {\r\n return getWords(count).join(' ');\r\n }\r\n\r\n if (type === 'sentence') {\r\n const sentences: string[] = [];\r\n for (let i = 0; i < count; i++) {\r\n const sentence = capitalize(getWords(Math.floor(Math.random() * 10) + 5).join(' ')) + '.';\r\n sentences.push(sentence);\r\n }\r\n return sentences.join(' ');\r\n }\r\n\r\n // paragraph\r\n const paragraphs: string[] = [];\r\n for (let i = 0; i < count; i++) {\r\n const sentences: string[] = [];\r\n const sentenceCount = Math.floor(Math.random() * 4) + 3;\r\n for (let j = 0; j < sentenceCount; j++) {\r\n sentences.push(capitalize(getWords(Math.floor(Math.random() * 10) + 5).join(' ')) + '.');\r\n }\r\n paragraphs.push(sentences.join(' '));\r\n }\r\n return paragraphs.join('\\n\\n');\r\n}\r\n\r\n// ==========================================\r\n// DEFAULT DUMMY DATA\r\n// ==========================================\r\n\r\nexport const dummyHeaderData: HeaderProps = {\r\n logo: dummyImage(120, 40, 'Logo'),\r\n logoAlt: 'Company Logo',\r\n navLinks: [\r\n { text: 'Home', href: '/', active: true },\r\n { text: 'About', href: '/about' },\r\n { text: 'Services', href: '/services' },\r\n { text: 'Blog', href: '/blog' },\r\n { text: 'Contact', href: '/contact' },\r\n ],\r\n cta: {\r\n text: 'Get Started',\r\n href: '/signup',\r\n variant: 'primary',\r\n },\r\n sticky: true,\r\n};\r\n\r\nexport const dummyFooterData: FooterProps = {\r\n logo: dummyImage(120, 40, 'Logo'),\r\n logoAlt: 'Company Logo',\r\n description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.',\r\n columns: [\r\n {\r\n title: 'Product',\r\n links: [\r\n { text: 'Features', href: '/features' },\r\n { text: 'Pricing', href: '/pricing' },\r\n { text: 'Integrations', href: '/integrations' },\r\n { text: 'API', href: '/api' },\r\n ],\r\n },\r\n {\r\n title: 'Company',\r\n links: [\r\n { text: 'About', href: '/about' },\r\n { text: 'Blog', href: '/blog' },\r\n { text: 'Careers', href: '/careers' },\r\n { text: 'Contact', href: '/contact' },\r\n ],\r\n },\r\n {\r\n title: 'Legal',\r\n links: [\r\n { text: 'Privacy Policy', href: '/privacy' },\r\n { text: 'Terms of Service', href: '/terms' },\r\n { text: 'Cookie Policy', href: '/cookies' },\r\n ],\r\n },\r\n ],\r\n socialLinks: [\r\n { platform: 'twitter', href: 'https://twitter.com' },\r\n { platform: 'facebook', href: 'https://facebook.com' },\r\n { platform: 'instagram', href: 'https://instagram.com' },\r\n { platform: 'linkedin', href: 'https://linkedin.com' },\r\n { platform: 'github', href: 'https://github.com' },\r\n ],\r\n copyright: `© ${new Date().getFullYear()} Company Name. All rights reserved.`,\r\n};\r\n\r\nexport const dummyBannerData: BannerProps = {\r\n title: 'Build Something Amazing Today',\r\n subtitle: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',\r\n backgroundImage: dummyImage(1920, 800, 'Hero+Background', '1e293b', '334155'),\r\n primaryCta: {\r\n text: 'Get Started Free',\r\n href: '/signup',\r\n variant: 'primary',\r\n },\r\n secondaryCta: {\r\n text: 'Learn More',\r\n href: '/about',\r\n variant: 'outline',\r\n },\r\n height: 'lg',\r\n align: 'center',\r\n};\r\n\r\nexport const dummyFeatures: Feature[] = [\r\n {\r\n title: 'Lightning Fast',\r\n description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',\r\n icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M13 10V3L4 14h7v7l9-11h-7z\" /></svg>',\r\n },\r\n {\r\n title: 'Secure & Reliable',\r\n description: 'Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',\r\n icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z\" /></svg>',\r\n },\r\n {\r\n title: 'Easy to Use',\r\n description: 'Ut enim ad minim veniam, quis nostrud exercitation ullamco.',\r\n icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z\" /></svg>',\r\n },\r\n];\r\n\r\nexport const dummyTestimonials: Testimonial[] = [\r\n {\r\n name: 'John Doe',\r\n role: 'CEO',\r\n company: 'Tech Corp',\r\n avatar: dummyImage(80, 80, 'JD', '3b82f6', 'ffffff'),\r\n text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',\r\n rating: 5,\r\n },\r\n {\r\n name: 'Jane Smith',\r\n role: 'CTO',\r\n company: 'Startup Inc',\r\n avatar: dummyImage(80, 80, 'JS', '10b981', 'ffffff'),\r\n text: 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',\r\n rating: 5,\r\n },\r\n {\r\n name: 'Bob Wilson',\r\n role: 'Product Manager',\r\n company: 'Enterprise Co',\r\n avatar: dummyImage(80, 80, 'BW', 'f59e0b', 'ffffff'),\r\n text: 'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.',\r\n rating: 4,\r\n },\r\n];\r\n\r\nexport const dummyPricingPlans: PricingPlan[] = [\r\n {\r\n name: 'Starter',\r\n description: 'Perfect for individuals',\r\n price: '$9',\r\n period: '/month',\r\n features: [\r\n { text: '5 Projects', included: true },\r\n { text: '10GB Storage', included: true },\r\n { text: 'Email Support', included: true },\r\n { text: 'API Access', included: false },\r\n { text: 'Custom Domain', included: false },\r\n ],\r\n ctaText: 'Start Free Trial',\r\n ctaHref: '/signup?plan=starter',\r\n },\r\n {\r\n name: 'Professional',\r\n description: 'Best for growing teams',\r\n price: '$29',\r\n period: '/month',\r\n features: [\r\n { text: 'Unlimited Projects', included: true },\r\n { text: '100GB Storage', included: true },\r\n { text: 'Priority Support', included: true },\r\n { text: 'API Access', included: true },\r\n { text: 'Custom Domain', included: false },\r\n ],\r\n ctaText: 'Start Free Trial',\r\n ctaHref: '/signup?plan=pro',\r\n popular: true,\r\n badge: 'Most Popular',\r\n },\r\n {\r\n name: 'Enterprise',\r\n description: 'For large organizations',\r\n price: '$99',\r\n period: '/month',\r\n features: [\r\n { text: 'Unlimited Projects', included: true },\r\n { text: 'Unlimited Storage', included: true },\r\n { text: '24/7 Support', included: true },\r\n { text: 'API Access', included: true },\r\n { text: 'Custom Domain', included: true },\r\n ],\r\n ctaText: 'Contact Sales',\r\n ctaHref: '/contact?plan=enterprise',\r\n },\r\n];\r\n\r\nexport const dummyFaqItems: FaqItem[] = [\r\n {\r\n question: 'What is your refund policy?',\r\n answer: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',\r\n },\r\n {\r\n question: 'How do I cancel my subscription?',\r\n answer: 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',\r\n },\r\n {\r\n question: 'Can I change my plan later?',\r\n answer: 'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.',\r\n },\r\n {\r\n question: 'Do you offer discounts for non-profits?',\r\n answer: 'Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',\r\n },\r\n];\r\n","/**\r\n * Form Types\r\n * Types for all form components\r\n */\r\n\r\n// ==========================================\r\n// COMMON TYPES\r\n// ==========================================\r\n\r\nexport type TailwindClasses = string;\r\n\r\nexport interface FormFieldError {\r\n field: string;\r\n message: string;\r\n}\r\n\r\nexport interface FormSubmitResult {\r\n success: boolean;\r\n message?: string;\r\n errors?: FormFieldError[];\r\n data?: Record<string, unknown>;\r\n}\r\n\r\n// ==========================================\r\n// CONTACT FORM\r\n// ==========================================\r\n\r\nexport interface ContactFormValues {\r\n name: string;\r\n email: string;\r\n phone?: string;\r\n subject?: string;\r\n message: string;\r\n}\r\n\r\nexport interface ContactFormProps {\r\n /** Form action URL */\r\n actionUrl?: string;\r\n /** Submit handler */\r\n onSubmit?: (values: ContactFormValues) => Promise<FormSubmitResult>;\r\n /** Initial values */\r\n initialValues?: Partial<ContactFormValues>;\r\n /** Show phone field */\r\n showPhone?: boolean;\r\n /** Show subject field */\r\n showSubject?: boolean;\r\n /** Subject options (if select) */\r\n subjectOptions?: string[];\r\n /** Submit button text */\r\n submitText?: string;\r\n /** Success message */\r\n successMessage?: string;\r\n /** Container class */\r\n className?: TailwindClasses;\r\n /** Form class */\r\n formClass?: TailwindClasses;\r\n /** Input class */\r\n inputClass?: TailwindClasses;\r\n /** Label class */\r\n labelClass?: TailwindClasses;\r\n /** Button class */\r\n buttonClass?: TailwindClasses;\r\n /** Error class */\r\n errorClass?: TailwindClasses;\r\n}\r\n\r\n// ==========================================\r\n// NEWSLETTER FORM\r\n// ==========================================\r\n\r\nexport interface NewsletterFormValues {\r\n email: string;\r\n firstName?: string;\r\n lastName?: string;\r\n}\r\n\r\nexport interface NewsletterFormProps {\r\n /** Form action URL */\r\n actionUrl?: string;\r\n /** Submit handler */\r\n onSubmit?: (values: NewsletterFormValues) => Promise<FormSubmitResult>;\r\n /** Initial values */\r\n initialValues?: Partial<NewsletterFormValues>;\r\n /** Show name fields */\r\n showName?: boolean;\r\n /** Placeholder */\r\n placeholder?: string;\r\n /** Submit button text */\r\n submitText?: string;\r\n /** Success message */\r\n successMessage?: string;\r\n /** Layout */\r\n layout?: 'inline' | 'stacked';\r\n /** Container class */\r\n className?: TailwindClasses;\r\n /** Form class */\r\n formClass?: TailwindClasses;\r\n /** Input class */\r\n inputClass?: TailwindClasses;\r\n /** Button class */\r\n buttonClass?: TailwindClasses;\r\n}\r\n\r\n// ==========================================\r\n// LOGIN FORM\r\n// ==========================================\r\n\r\nexport interface LoginFormValues {\r\n email: string;\r\n password: string;\r\n rememberMe?: boolean;\r\n}\r\n\r\nexport interface LoginFormProps {\r\n /** Form action URL */\r\n actionUrl?: string;\r\n /** Submit handler */\r\n onSubmit?: (values: LoginFormValues) => Promise<FormSubmitResult>;\r\n /** Initial values */\r\n initialValues?: Partial<LoginFormValues>;\r\n /** Show remember me */\r\n showRememberMe?: boolean;\r\n /** Forgot password link */\r\n forgotPasswordLink?: string;\r\n /** Register link */\r\n registerLink?: string;\r\n /** Submit button text */\r\n submitText?: string;\r\n /** Success redirect URL */\r\n successRedirect?: string;\r\n /** Container class */\r\n className?: TailwindClasses;\r\n /** Form class */\r\n formClass?: TailwindClasses;\r\n /** Input class */\r\n inputClass?: TailwindClasses;\r\n /** Button class */\r\n buttonClass?: TailwindClasses;\r\n}\r\n\r\n// ==========================================\r\n// REGISTER FORM\r\n// ==========================================\r\n\r\nexport interface RegisterFormValues {\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n password: string;\r\n confirmPassword: string;\r\n acceptTerms: boolean;\r\n}\r\n\r\nexport interface RegisterFormProps {\r\n /** Form action URL */\r\n actionUrl?: string;\r\n /** Submit handler */\r\n onSubmit?: (values: RegisterFormValues) => Promise<FormSubmitResult>;\r\n /** Initial values */\r\n initialValues?: Partial<RegisterFormValues>;\r\n /** Terms link */\r\n termsLink?: string;\r\n /** Privacy link */\r\n privacyLink?: string;\r\n /** Login link */\r\n loginLink?: string;\r\n /** Submit button text */\r\n submitText?: string;\r\n /** Success redirect URL */\r\n successRedirect?: string;\r\n /** Password requirements */\r\n passwordRequirements?: {\r\n minLength?: number;\r\n requireUppercase?: boolean;\r\n requireLowercase?: boolean;\r\n requireNumber?: boolean;\r\n requireSpecial?: boolean;\r\n };\r\n /** Container class */\r\n className?: TailwindClasses;\r\n /** Form class */\r\n formClass?: TailwindClasses;\r\n /** Input class */\r\n inputClass?: TailwindClasses;\r\n /** Button class */\r\n buttonClass?: TailwindClasses;\r\n}\r\n\r\n// ==========================================\r\n// VALIDATION SCHEMAS (for reference)\r\n// ==========================================\r\n\r\nexport const VALIDATION_MESSAGES = {\r\n required: 'This field is required',\r\n email: 'Please enter a valid email address',\r\n phone: 'Please enter a valid phone number',\r\n minLength: (min: number) => `Must be at least ${min} characters`,\r\n maxLength: (max: number) => `Must be no more than ${max} characters`,\r\n passwordMatch: 'Passwords must match',\r\n acceptTerms: 'You must accept the terms and conditions',\r\n passwordUppercase: 'Password must contain at least one uppercase letter',\r\n passwordLowercase: 'Password must contain at least one lowercase letter',\r\n passwordNumber: 'Password must contain at least one number',\r\n passwordSpecial: 'Password must contain at least one special character',\r\n} as const;\r\n","/**\r\n * Form Validation Schemas\r\n * Yup validation schemas for all forms\r\n */\r\n\r\nimport * as Yup from 'yup';\r\nimport { VALIDATION_MESSAGES } from './types';\r\n\r\n// ==========================================\r\n// CONTACT FORM SCHEMA\r\n// ==========================================\r\n\r\nexport const contactFormSchema = Yup.object().shape({\r\n name: Yup.string()\r\n .required(VALIDATION_MESSAGES.required)\r\n .min(2, VALIDATION_MESSAGES.minLength(2))\r\n .max(100, VALIDATION_MESSAGES.maxLength(100)),\r\n email: Yup.string()\r\n .required(VALIDATION_MESSAGES.required)\r\n .email(VALIDATION_MESSAGES.email),\r\n phone: Yup.string()\r\n .matches(\r\n /^[+]?[(]?[0-9]{1,4}[)]?[-\\s./0-9]*$/,\r\n VALIDATION_MESSAGES.phone\r\n )\r\n .nullable(),\r\n subject: Yup.string()\r\n .max(200, VALIDATION_MESSAGES.maxLength(200))\r\n .nullable(),\r\n message: Yup.string()\r\n .required(VALIDATION_MESSAGES.required)\r\n .min(10, VALIDATION_MESSAGES.minLength(10))\r\n .max(2000, VALIDATION_MESSAGES.maxLength(2000)),\r\n});\r\n\r\n// ==========================================\r\n// NEWSLETTER FORM SCHEMA\r\n// ==========================================\r\n\r\nexport const newsletterFormSchema = Yup.object().shape({\r\n email: Yup.string()\r\n .required(VALIDATION_MESSAGES.required)\r\n .email(VALIDATION_MESSAGES.email),\r\n firstName: Yup.string()\r\n .min(2, VALIDATION_MESSAGES.minLength(2))\r\n .max(50, VALIDATION_MESSAGES.maxLength(50))\r\n .nullable(),\r\n lastName: Yup.string()\r\n .min(2, VALIDATION_MESSAGES.minLength(2))\r\n .max(50, VALIDATION_MESSAGES.maxLength(50))\r\n .nullable(),\r\n});\r\n\r\n// ==========================================\r\n// LOGIN FORM SCHEMA\r\n// ==========================================\r\n\r\nexport const loginFormSchema = Yup.object().shape({\r\n email: Yup.string()\r\n .required(VALIDATION_MESSAGES.required)\r\n .email(VALIDATION_MESSAGES.email),\r\n password: Yup.string()\r\n .required(VALIDATION_MESSAGES.required)\r\n .min(8, VALIDATION_MESSAGES.minLength(8)),\r\n rememberMe: Yup.boolean(),\r\n});\r\n\r\n// ==========================================\r\n// REGISTER FORM SCHEMA\r\n// ==========================================\r\n\r\nexport interface PasswordRequirements {\r\n minLength?: number;\r\n requireUppercase?: boolean;\r\n requireLowercase?: boolean;\r\n requireNumber?: boolean;\r\n requireSpecial?: boolean;\r\n}\r\n\r\nexport function createRegisterFormSchema(requirements: PasswordRequirements = {}) {\r\n const {\r\n minLength = 8,\r\n requireUppercase = true,\r\n requireLowercase = true,\r\n requireNumber = true,\r\n requireSpecial = false,\r\n } = requirements;\r\n\r\n let passwordSchema = Yup.string()\r\n .required(VALIDATION_MESSAGES.required)\r\n .min(minLength, VALIDATION_MESSAGES.minLength(minLength));\r\n\r\n if (requireUppercase) {\r\n passwordSchema = passwordSchema.matches(\r\n /[A-Z]/,\r\n VALIDATION_MESSAGES.passwordUppercase\r\n );\r\n }\r\n\r\n if (requireLowercase) {\r\n passwordSchema = passwordSchema.matches(\r\n /[a-z]/,\r\n VALIDATION_MESSAGES.passwordLowercase\r\n );\r\n }\r\n\r\n if (requireNumber) {\r\n passwordSchema = passwordSchema.matches(\r\n /[0-9]/,\r\n VALIDATION_MESSAGES.passwordNumber\r\n );\r\n }\r\n\r\n if (requireSpecial) {\r\n passwordSchema = passwordSchema.matches(\r\n /[!@#$%^&*(),.?\":{}|<>]/,\r\n VALIDATION_MESSAGES.passwordSpecial\r\n );\r\n }\r\n\r\n return Yup.object().shape({\r\n firstName: Yup.string()\r\n .required(VALIDATION_MESSAGES.required)\r\n .min(2, VALIDATION_MESSAGES.minLength(2))\r\n .max(50, VALIDATION_MESSAGES.maxLength(50)),\r\n lastName: Yup.string()\r\n .required(VALIDATION_MESSAGES.required)\r\n .min(2, VALIDATION_MESSAGES.minLength(2))\r\n .max(50, VALIDATION_MESSAGES.maxLength(50)),\r\n email: Yup.string()\r\n .required(VALIDATION_MESSAGES.required)\r\n .email(VALIDATION_MESSAGES.email),\r\n password: passwordSchema,\r\n confirmPassword: Yup.string()\r\n .required(VALIDATION_MESSAGES.required)\r\n .oneOf([Yup.ref('password')], VALIDATION_MESSAGES.passwordMatch),\r\n acceptTerms: Yup.boolean()\r\n .oneOf([true], VALIDATION_MESSAGES.acceptTerms),\r\n });\r\n}\r\n\r\nexport const registerFormSchema = createRegisterFormSchema();\r\n","/**\r\n * Contact Form Component\r\n * React form with Formik and Yup validation\r\n */\r\n\r\nimport React, { useState } from 'react';\r\nimport { Formik, Form, Field, ErrorMessage, FormikHelpers } from 'formik';\r\nimport type { ContactFormProps, ContactFormValues, FormSubmitResult } from './types';\r\nimport { contactFormSchema } from './validation';\r\n\r\nconst defaultInitialValues: ContactFormValues = {\r\n name: '',\r\n email: '',\r\n phone: '',\r\n subject: '',\r\n message: '',\r\n};\r\n\r\nconst defaultSubjectOptions = [\r\n 'General Inquiry',\r\n 'Support Request',\r\n 'Sales Question',\r\n 'Partnership',\r\n 'Feedback',\r\n 'Other',\r\n];\r\n\r\nexport function ContactForm({\r\n actionUrl,\r\n onSubmit,\r\n initialValues,\r\n showPhone = true,\r\n showSubject = true,\r\n subjectOptions = defaultSubjectOptions,\r\n submitText = 'Send Message',\r\n successMessage = 'Thank you! Your message has been sent successfully.',\r\n className = '',\r\n formClass = '',\r\n inputClass = '',\r\n labelClass = '',\r\n buttonClass = '',\r\n errorClass = '',\r\n}: ContactFormProps): React.ReactElement {\r\n const [submitStatus, setSubmitStatus] = useState<'idle' | 'success' | 'error'>('idle');\r\n const [submitMessage, setSubmitMessage] = useState('');\r\n\r\n const mergedInitialValues: ContactFormValues = {\r\n ...defaultInitialValues,\r\n ...initialValues,\r\n };\r\n\r\n const baseInputClass = 'w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors';\r\n const baseLabelClass = 'block text-sm font-medium text-gray-700 mb-1';\r\n const baseErrorClass = 'text-sm text-red-600 mt-1';\r\n const baseButtonClass = 'w-full px-6 py-3 bg-blue-600 hover:bg-blue-700 text-white font-medium rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed';\r\n\r\n const handleSubmit = async (\r\n values: ContactFormValues,\r\n { setSubmitting, resetForm }: FormikHelpers<ContactFormValues>\r\n ) => {\r\n try {\r\n let result: FormSubmitResult;\r\n\r\n if (onSubmit) {\r\n result = await onSubmit(values);\r\n } else if (actionUrl) {\r\n const response = await fetch(actionUrl, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(values),\r\n });\r\n result = await response.json();\r\n } else {\r\n // Demo mode - simulate success\r\n await new Promise((resolve) => setTimeout(resolve, 1000));\r\n result = { success: true };\r\n }\r\n\r\n if (result.success) {\r\n setSubmitStatus('success');\r\n setSubmitMessage(result.message || successMessage);\r\n resetForm();\r\n } else {\r\n setSubmitStatus('error');\r\n setSubmitMessage(result.message || 'Something went wrong. Please try again.');\r\n }\r\n } catch (error) {\r\n setSubmitStatus('error');\r\n setSubmitMessage('An error occurred. Please try again later.');\r\n } finally {\r\n setSubmitting(false);\r\n }\r\n };\r\n\r\n return (\r\n <div className={`ec-contact-form ${className}`}>\r\n {submitStatus === 'success' ? (\r\n <div className=\"p-6 bg-green-50 border border-green-200 rounded-lg text-center\">\r\n <svg className=\"w-12 h-12 text-green-500 mx-auto mb-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\" />\r\n </svg>\r\n <p className=\"text-green-800 font-medium\">{submitMessage}</p>\r\n <button\r\n type=\"button\"\r\n onClick={() => setSubmitStatus('idle')}\r\n className=\"mt-4 text-green-600 hover:text-green-700 text-sm font-medium\"\r\n >\r\n Send another message\r\n </button>\r\n </div>\r\n ) : (\r\n <Formik\r\n initialValues={mergedInitialValues}\r\n validationSchema={contactFormSchema}\r\n onSubmit={handleSubmit}\r\n >\r\n {({ isSubmitting, errors, touched }) => (\r\n <Form className={`space-y-4 ${formClass}`} noValidate>\r\n {/* Name Field */}\r\n <div>\r\n <label htmlFor=\"contact-name\" className={`${baseLabelClass} ${labelClass}`}>\r\n Name <span className=\"text-red-500\">*</span>\r\n </label>\r\n <Field\r\n type=\"text\"\r\n id=\"contact-name\"\r\n name=\"name\"\r\n placeholder=\"John Doe\"\r\n className={`${baseInputClass} ${inputClass} ${\r\n errors.name && touched.name ? 'border-red-500 focus:ring-red-500' : ''\r\n }`}\r\n />\r\n <ErrorMessage name=\"name\" component=\"p\" className={`${baseErrorClass} ${errorClass}`} />\r\n </div>\r\n\r\n {/* Email Field */}\r\n <div>\r\n <label htmlFor=\"contact-email\" className={`${baseLabelClass} ${labelClass}`}>\r\n Email <span className=\"text-red-500\">*</span>\r\n </label>\r\n <Field\r\n type=\"email\"\r\n id=\"contact-email\"\r\n name=\"email\"\r\n placeholder=\"john@example.com\"\r\n className={`${baseInputClass} ${inputClass} ${\r\n errors.email && touched.email ? 'border-red-500 focus:ring-red-500' : ''\r\n }`}\r\n />\r\n <ErrorMessage name=\"email\" component=\"p\" className={`${baseErrorClass} ${errorClass}`} />\r\n </div>\r\n\r\n {/* Phone Field */}\r\n {showPhone && (\r\n <div>\r\n <label htmlFor=\"contact-phone\" className={`${baseLabelClass} ${labelClass}`}>\r\n Phone\r\n </label>\r\n <Field\r\n type=\"tel\"\r\n id=\"contact-phone\"\r\n name=\"phone\"\r\n placeholder=\"+1 (555) 000-0000\"\r\n className={`${baseInputClass} ${inputClass} ${\r\n errors.phone && touched.phone ? 'border-red-500 focus:ring-red-500' : ''\r\n }`}\r\n />\r\n <ErrorMessage name=\"phone\" component=\"p\" className={`${baseErrorClass} ${errorClass}`} />\r\n </div>\r\n )}\r\n\r\n {/* Subject Field */}\r\n {showSubject && (\r\n <div>\r\n <label htmlFor=\"contact-subject\" className={`${baseLabelClass} ${labelClass}`}>\r\n Subject\r\n </label>\r\n <Field\r\n as=\"select\"\r\n id=\"contact-subject\"\r\n name=\"subject\"\r\n className={`${baseInputClass} ${inputClass}`}\r\n >\r\n <option value=\"\">Select a subject...</option>\r\n {subjectOptions.map((option) => (\r\n <option key={option} value={option}>\r\n {option}\r\n </option>\r\n ))}\r\n </Field>\r\n <ErrorMessage name=\"subject\" component=\"p\" className={`${baseErrorClass} ${errorClass}`} />\r\n </div>\r\n )}\r\n\r\n {/* Message Field */}\r\n <div>\r\n <label htmlFor=\"contact-message\" className={`${baseLabelClass} ${labelClass}`}>\r\n Message <span className=\"text-red-500\">*</span>\r\n </label>\r\n <Field\r\n as=\"textarea\"\r\n id=\"contact-message\"\r\n name=\"message\"\r\n rows={5}\r\n placeholder=\"Your message...\"\r\n className={`${baseInputClass} ${inputClass} resize-none ${\r\n errors.message && touched.message ? 'border-red-500 focus:ring-red-500' : ''\r\n }`}\r\n />\r\n <ErrorMessage name=\"message\" component=\"p\" className={`${baseErrorClass} ${errorClass}`} />\r\n </div>\r\n\r\n {/* Error Message */}\r\n {submitStatus === 'error' && (\r\n <div className=\"p-4 bg-red-50 border border-red-200 rounded-lg\">\r\n <p className=\"text-red-800 text-sm\">{submitMessage}</p>\r\n </div>\r\n )}\r\n\r\n {/* Submit Button */}\r\n <button\r\n type=\"submit\"\r\n disabled={isSubmitting}\r\n className={`${baseButtonClass} ${buttonClass}`}\r\n >\r\n {isSubmitting ? (\r\n <span className=\"flex items-center justify-center gap-2\">\r\n <svg className=\"animate-spin w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\r\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" />\r\n </svg>\r\n Sending...\r\n </span>\r\n ) : (\r\n submitText\r\n )}\r\n </button>\r\n </Form>\r\n )}\r\n </Formik>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ContactForm;\r\n","/**\r\n * Newsletter Form Component\r\n * React form with Formik and Yup validation\r\n */\r\n\r\nimport React, { useState } from 'react';\r\nimport { Formik, Form, Field, ErrorMessage, FormikHelpers } from 'formik';\r\nimport type { NewsletterFormProps, NewsletterFormValues, FormSubmitResult } from './types';\r\nimport { newsletterFormSchema } from './validation';\r\n\r\nconst defaultInitialValues: NewsletterFormValues = {\r\n email: '',\r\n firstName: '',\r\n lastName: '',\r\n};\r\n\r\nexport function NewsletterForm({\r\n actionUrl,\r\n onSubmit,\r\n initialValues,\r\n showName = false,\r\n placeholder = 'Enter your email',\r\n submitText = 'Subscribe',\r\n successMessage = 'Thank you for subscribing!',\r\n layout = 'inline',\r\n className = '',\r\n formClass = '',\r\n inputClass = '',\r\n buttonClass = '',\r\n}: NewsletterFormProps): React.ReactElement {\r\n const [submitStatus, setSubmitStatus] = useState<'idle' | 'success' | 'error'>('idle');\r\n const [submitMessage, setSubmitMessage] = useState('');\r\n\r\n const mergedInitialValues: NewsletterFormValues = {\r\n ...defaultInitialValues,\r\n ...initialValues,\r\n };\r\n\r\n const baseInputClass = 'px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors';\r\n const baseButtonClass = 'px-6 py-3 bg-blue-600 hover:bg-blue-700 text-white font-medium rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed';\r\n\r\n const handleSubmit = async (\r\n values: NewsletterFormValues,\r\n { setSubmitting, resetForm }: FormikHelpers<NewsletterFormValues>\r\n ) => {\r\n try {\r\n let result: FormSubmitResult;\r\n\r\n if (onSubmit) {\r\n result = await onSubmit(values);\r\n } else if (actionUrl) {\r\n const response = await fetch(actionUrl, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(values),\r\n });\r\n result = await response.json();\r\n } else {\r\n // Demo mode - simulate success\r\n await new Promise((resolve) => setTimeout(resolve, 1000));\r\n result = { success: true };\r\n }\r\n\r\n if (result.success) {\r\n setSubmitStatus('success');\r\n setSubmitMessage(result.message || successMessage);\r\n resetForm();\r\n } else {\r\n setSubmitStatus('error');\r\n setSubmitMessage(result.message || 'Something went wrong. Please try again.');\r\n }\r\n } catch (error) {\r\n setSubmitStatus('error');\r\n setSubmitMessage('An error occurred. Please try again later.');\r\n } finally {\r\n setSubmitting(false);\r\n }\r\n };\r\n\r\n if (submitStatus === 'success') {\r\n return (\r\n <div className={`ec-newsletter-form ${className}`}>\r\n <div className=\"p-4 bg-green-50 border border-green-200 rounded-lg text-center\">\r\n <p className=\"text-green-800 font-medium\">{submitMessage}</p>\r\n <button\r\n type=\"button\"\r\n onClick={() => setSubmitStatus('idle')}\r\n className=\"mt-2 text-green-600 hover:text-green-700 text-sm\"\r\n >\r\n Subscribe another email\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className={`ec-newsletter-form ${className}`}>\r\n <Formik\r\n initialValues={mergedInitialValues}\r\n validationSchema={newsletterFormSchema}\r\n onSubmit={handleSubmit}\r\n >\r\n {({ isSubmitting, errors, touched }) => (\r\n <Form\r\n className={`${layout === 'inline' ? 'flex flex-col sm:flex-row gap-3' : 'space-y-4'} ${formClass}`}\r\n noValidate\r\n >\r\n {/* Name Fields */}\r\n {showName && (\r\n <div className={layout === 'inline' ? 'flex gap-3 flex-1' : 'grid grid-cols-2 gap-4'}>\r\n <div className=\"flex-1\">\r\n <Field\r\n type=\"text\"\r\n name=\"firstName\"\r\n placeholder=\"First name\"\r\n className={`w-full ${baseInputClass} ${inputClass} ${\r\n errors.firstName && touched.firstName ? 'border-red-500' : ''\r\n }`}\r\n />\r\n {layout === 'stacked' && (\r\n <ErrorMessage name=\"firstName\" component=\"p\" className=\"text-sm text-red-600 mt-1\" />\r\n )}\r\n </div>\r\n <div className=\"flex-1\">\r\n <Field\r\n type=\"text\"\r\n name=\"lastName\"\r\n placeholder=\"Last name\"\r\n className={`w-full ${baseInputClass} ${inputClass} ${\r\n errors.lastName && touched.lastName ? 'border-red-500' : ''\r\n }`}\r\n />\r\n {layout === 'stacked' && (\r\n <ErrorMessage name=\"lastName\" component=\"p\" className=\"text-sm text-red-600 mt-1\" />\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Email Field */}\r\n <div className={layout === 'inline' ? 'flex-1' : ''}>\r\n <Field\r\n type=\"email\"\r\n name=\"email\"\r\n placeholder={placeholder}\r\n className={`w-full ${baseInputClass} ${inputClass} ${\r\n errors.email && touched.email ? 'border-red-500' : ''\r\n }`}\r\n />\r\n {layout === 'stacked' && (\r\n <ErrorMessage name=\"email\" component=\"p\" className=\"text-sm text-red-600 mt-1\" />\r\n )}\r\n </div>\r\n\r\n {/* Submit Button */}\r\n <button\r\n type=\"submit\"\r\n disabled={isSubmitting}\r\n className={`${baseButtonClass} ${buttonClass} ${layout === 'stacked' ? 'w-full' : ''}`}\r\n >\r\n {isSubmitting ? (\r\n <span className=\"flex items-center justify-center gap-2\">\r\n <svg className=\"animate-spin w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\r\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" />\r\n </svg>\r\n Subscribing...\r\n </span>\r\n ) : (\r\n submitText\r\n )}\r\n </button>\r\n\r\n {/* Inline Error */}\r\n {layout === 'inline' && errors.email && touched.email && (\r\n <div className=\"w-full sm:w-auto\">\r\n <p className=\"text-sm text-red-600\">{errors.email}</p>\r\n </div>\r\n )}\r\n </Form>\r\n )}\r\n </Formik>\r\n\r\n {/* Error Message */}\r\n {submitStatus === 'error' && (\r\n <div className=\"mt-4 p-4 bg-red-50 border border-red-200 rounded-lg\">\r\n <p className=\"text-red-800 text-sm\">{submitMessage}</p>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default NewsletterForm;\r\n","/**\r\n * Login Form Component\r\n * React form with Formik and Yup validation\r\n */\r\n\r\nimport React, { useState } from 'react';\r\nimport { Formik, Form, Field, ErrorMessage, FormikHelpers } from 'formik';\r\nimport type { LoginFormProps, LoginFormValues, FormSubmitResult } from './types';\r\nimport { loginFormSchema } from './validation';\r\n\r\nconst defaultInitialValues: LoginFormValues = {\r\n email: '',\r\n password: '',\r\n rememberMe: false,\r\n};\r\n\r\nexport function LoginForm({\r\n actionUrl,\r\n onSubmit,\r\n initialValues,\r\n showRememberMe = true,\r\n forgotPasswordLink = '/forgot-password',\r\n registerLink = '/register',\r\n submitText = 'Sign In',\r\n successRedirect,\r\n className = '',\r\n formClass = '',\r\n inputClass = '',\r\n buttonClass = '',\r\n}: LoginFormProps): React.ReactElement {\r\n const [submitStatus, setSubmitStatus] = useState<'idle' | 'success' | 'error'>('idle');\r\n const [submitMessage, setSubmitMessage] = useState('');\r\n const [showPassword, setShowPassword] = useState(false);\r\n\r\n const mergedInitialValues: LoginFormValues = {\r\n ...defaultInitialValues,\r\n ...initialValues,\r\n };\r\n\r\n const baseInputClass = 'w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors';\r\n const baseLabelClass = 'block text-sm font-medium text-gray-700 mb-1';\r\n const baseErrorClass = 'text-sm text-red-600 mt-1';\r\n const baseButtonClass = 'w-full px-6 py-3 bg-blue-600 hover:bg-blue-700 text-white font-medium rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed';\r\n\r\n const handleSubmit = async (\r\n values: LoginFormValues,\r\n { setSubmitting }: FormikHelpers<LoginFormValues>\r\n ) => {\r\n try {\r\n let result: FormSubmitResult;\r\n\r\n if (onSubmit) {\r\n result = await onSubmit(values);\r\n } else if (actionUrl) {\r\n const response = await fetch(actionUrl, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(values),\r\n });\r\n result = await response.json();\r\n } else {\r\n // Demo mode - simulate success\r\n await new Promise((resolve) => setTimeout(resolve, 1000));\r\n result = { success: true };\r\n }\r\n\r\n if (result.success) {\r\n setSubmitStatus('success');\r\n setSubmitMessage(result.message || 'Login successful!');\r\n if (successRedirect && typeof window !== 'undefined') {\r\n window.location.href = successRedirect;\r\n }\r\n } else {\r\n setSubmitStatus('error');\r\n setSubmitMessage(result.message || 'Invalid email or password.');\r\n }\r\n } catch (error) {\r\n setSubmitStatus('error');\r\n setSubmitMessage('An error occurred. Please try again later.');\r\n } finally {\r\n setSubmitting(false);\r\n }\r\n };\r\n\r\n return (\r\n <div className={`ec-login-form ${className}`}>\r\n <Formik\r\n initialValues={mergedInitialValues}\r\n validationSchema={loginFormSchema}\r\n onSubmit={handleSubmit}\r\n >\r\n {({ isSubmitting, errors, touched }) => (\r\n <Form className={`space-y-4 ${formClass}`} noValidate>\r\n {/* Email Field */}\r\n <div>\r\n <label htmlFor=\"login-email\" className={baseLabelClass}>\r\n Email\r\n </label>\r\n <Field\r\n type=\"email\"\r\n id=\"login-email\"\r\n name=\"email\"\r\n placeholder=\"you@example.com\"\r\n autoComplete=\"email\"\r\n className={`${baseInputClass} ${inputClass} ${\r\n errors.email && touched.email ? 'border-red-500 focus:ring-red-500' : ''\r\n }`}\r\n />\r\n <ErrorMessage name=\"email\" component=\"p\" className={baseErrorClass} />\r\n </div>\r\n\r\n {/* Password Field */}\r\n <div>\r\n <label htmlFor=\"login-password\" className={baseLabelClass}>\r\n Password\r\n </label>\r\n <div className=\"relative\">\r\n <Field\r\n type={showPassword ? 'text' : 'password'}\r\n id=\"login-password\"\r\n name=\"password\"\r\n placeholder=\"••••••••\"\r\n autoComplete=\"current-password\"\r\n className={`${baseInputClass} ${inputClass} pr-12 ${\r\n errors.password && touched.password ? 'border-red-500 focus:ring-red-500' : ''\r\n }`}\r\n />\r\n <button\r\n type=\"button\"\r\n onClick={() => setShowPassword(!showPassword)}\r\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-gray-500 hover:text-gray-700\"\r\n tabIndex={-1}\r\n >\r\n {showPassword ? (\r\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21\" />\r\n </svg>\r\n ) : (\r\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\" />\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z\" />\r\n </svg>\r\n )}\r\n </button>\r\n </div>\r\n <ErrorMessage name=\"password\" component=\"p\" className={baseErrorClass} />\r\n </div>\r\n\r\n {/* Remember Me & Forgot Password */}\r\n <div className=\"flex items-center justify-between\">\r\n {showRememberMe && (\r\n <label className=\"flex items-center gap-2 cursor-pointer\">\r\n <Field\r\n type=\"checkbox\"\r\n name=\"rememberMe\"\r\n className=\"w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500\"\r\n />\r\n <span className=\"text-sm text-gray-600\">Remember me</span>\r\n </label>\r\n )}\r\n {forgotPasswordLink && (\r\n <a\r\n href={forgotPasswordLink}\r\n className=\"text-sm text-blue-600 hover:text-blue-700 font-medium\"\r\n >\r\n Forgot password?\r\n </a>\r\n )}\r\n </div>\r\n\r\n {/* Error Message */}\r\n {submitStatus === 'error' && (\r\n <div className=\"p-4 bg-red-50 border border-red-200 rounded-lg\">\r\n <p className=\"text-red-800 text-sm\">{submitMessage}</p>\r\n </div>\r\n )}\r\n\r\n {/* Submit Button */}\r\n <button\r\n type=\"submit\"\r\n disabled={isSubmitting}\r\n className={`${baseButtonClass} ${buttonClass}`}\r\n >\r\n {isSubmitting ? (\r\n <span className=\"flex items-center justify-center gap-2\">\r\n <svg className=\"animate-spin w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\r\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" />\r\n </svg>\r\n Signing in...\r\n </span>\r\n ) : (\r\n submitText\r\n )}\r\n </button>\r\n\r\n {/* Register Link */}\r\n {registerLink && (\r\n <p className=\"text-center text-sm text-gray-600\">\r\n Don't have an account?{' '}\r\n <a href={registerLink} className=\"text-blue-600 hover:text-blue-700 font-medium\">\r\n Sign up\r\n </a>\r\n </p>\r\n )}\r\n </Form>\r\n )}\r\n </Formik>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoginForm;\r\n","/**\r\n * Register Form Component\r\n * React form with Formik and Yup validation\r\n */\r\n\r\nimport React, { useState } from 'react';\r\nimport { Formik, Form, Field, ErrorMessage, FormikHelpers } from 'formik';\r\nimport type { RegisterFormProps, RegisterFormValues, FormSubmitResult } from './types';\r\nimport { createRegisterFormSchema } from './validation';\r\n\r\nconst defaultInitialValues: RegisterFormValues = {\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n password: '',\r\n confirmPassword: '',\r\n acceptTerms: false,\r\n};\r\n\r\nexport function RegisterForm({\r\n actionUrl,\r\n onSubmit,\r\n initialValues,\r\n termsLink = '/terms',\r\n privacyLink = '/privacy',\r\n loginLink = '/login',\r\n submitText = 'Create Account',\r\n successRedirect,\r\n passwordRequirements = {\r\n minLength: 8,\r\n requireUppercase: true,\r\n requireLowercase: true,\r\n requireNumber: true,\r\n requireSpecial: false,\r\n },\r\n className = '',\r\n formClass = '',\r\n inputClass = '',\r\n buttonClass = '',\r\n}: RegisterFormProps): React.ReactElement {\r\n const [submitStatus, setSubmitStatus] = useState<'idle' | 'success' | 'error'>('idle');\r\n const [submitMessage, setSubmitMessage] = useState('');\r\n const [showPassword, setShowPassword] = useState(false);\r\n const [showConfirmPassword, setShowConfirmPassword] = useState(false);\r\n\r\n const mergedInitialValues: RegisterFormValues = {\r\n ...defaultInitialValues,\r\n ...initialValues,\r\n };\r\n\r\n const validationSchema = createRegisterFormSchema(passwordRequirements);\r\n\r\n const baseInputClass = 'w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors';\r\n const baseLabelClass = 'block text-sm font-medium text-gray-700 mb-1';\r\n const baseErrorClass = 'text-sm text-red-600 mt-1';\r\n const baseButtonClass = 'w-full px-6 py-3 bg-blue-600 hover:bg-blue-700 text-white font-medium rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed';\r\n\r\n const handleSubmit = async (\r\n values: RegisterFormValues,\r\n { setSubmitting }: FormikHelpers<RegisterFormValues>\r\n ) => {\r\n try {\r\n let result: FormSubmitResult;\r\n\r\n if (onSubmit) {\r\n result = await onSubmit(values);\r\n } else if (actionUrl) {\r\n const response = await fetch(actionUrl, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(values),\r\n });\r\n result = await response.json();\r\n } else {\r\n // Demo mode - simulate success\r\n await new Promise((resolve) => setTimeout(resolve, 1000));\r\n result = { success: true };\r\n }\r\n\r\n if (result.success) {\r\n setSubmitStatus('success');\r\n setSubmitMessage(result.message || 'Account created successfully!');\r\n if (successRedirect && typeof window !== 'undefined') {\r\n window.location.href = successRedirect;\r\n }\r\n } else {\r\n setSubmitStatus('error');\r\n setSubmitMessage(result.message || 'Registration failed. Please try again.');\r\n }\r\n } catch (error) {\r\n setSubmitStatus('error');\r\n setSubmitMessage('An error occurred. Please try again later.');\r\n } finally {\r\n setSubmitting(false);\r\n }\r\n };\r\n\r\n if (submitStatus === 'success') {\r\n return (\r\n <div className={`ec-register-form ${className}`}>\r\n <div className=\"p-6 bg-green-50 border border-green-200 rounded-lg text-center\">\r\n <svg className=\"w-12 h-12 text-green-500 mx-auto mb-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\" />\r\n </svg>\r\n <p className=\"text-green-800 font-medium\">{submitMessage}</p>\r\n {loginLink && (\r\n <a\r\n href={loginLink}\r\n className=\"inline-block mt-4 text-green-600 hover:text-green-700 font-medium\"\r\n >\r\n Sign in to your account\r\n </a>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className={`ec-register-form ${className}`}>\r\n <Formik\r\n initialValues={mergedInitialValues}\r\n validationSchema={validationSchema}\r\n onSubmit={handleSubmit}\r\n >\r\n {({ isSubmitting, errors, touched }) => (\r\n <Form className={`space-y-4 ${formClass}`} noValidate>\r\n {/* Name Fields */}\r\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\r\n <div>\r\n <label htmlFor=\"register-firstName\" className={baseLabelClass}>\r\n First Name <span className=\"text-red-500\">*</span>\r\n </label>\r\n <Field\r\n type=\"text\"\r\n id=\"register-firstName\"\r\n name=\"firstName\"\r\n placeholder=\"John\"\r\n autoComplete=\"given-name\"\r\n className={`${baseInputClass} ${inputClass} ${\r\n errors.firstName && touched.firstName ? 'border-red-500 focus:ring-red-500' : ''\r\n }`}\r\n />\r\n <ErrorMessage name=\"firstName\" component=\"p\" className={baseErrorClass} />\r\n </div>\r\n <div>\r\n <label htmlFor=\"register-lastName\" className={baseLabelClass}>\r\n Last Name <span className=\"text-red-500\">*</span>\r\n </label>\r\n <Field\r\n type=\"text\"\r\n id=\"register-lastName\"\r\n name=\"lastName\"\r\n placeholder=\"Doe\"\r\n autoComplete=\"family-name\"\r\n className={`${baseInputClass} ${inputClass} ${\r\n errors.lastName && touched.lastName ? 'border-red-500 focus:ring-red-500' : ''\r\n }`}\r\n />\r\n <ErrorMessage name=\"lastName\" component=\"p\" className={baseErrorClass} />\r\n </div>\r\n </div>\r\n\r\n {/* Email Field */}\r\n <div>\r\n <label htmlFor=\"register-email\" className={baseLabelClass}>\r\n Email <span className=\"text-red-500\">*</span>\r\n </label>\r\n <Field\r\n type=\"email\"\r\n id=\"register-email\"\r\n name=\"email\"\r\n placeholder=\"you@example.com\"\r\n autoComplete=\"email\"\r\n className={`${baseInputClass} ${inputClass} ${\r\n errors.email && touched.email ? 'border-red-500 focus:ring-red-500' : ''\r\n }`}\r\n />\r\n <ErrorMessage name=\"email\" component=\"p\" className={baseErrorClass} />\r\n </div>\r\n\r\n {/* Password Field */}\r\n <div>\r\n <label htmlFor=\"register-password\" className={baseLabelClass}>\r\n Password <span className=\"text-red-500\">*</span>\r\n </label>\r\n <div className=\"relative\">\r\n <Field\r\n type={showPassword ? 'text' : 'password'}\r\n id=\"register-password\"\r\n name=\"password\"\r\n placeholder=\"••••••••\"\r\n autoComplete=\"new-password\"\r\n className={`${baseInputClass} ${inputClass} pr-12 ${\r\n errors.password && touched.password ? 'border-red-500 focus:ring-red-500' : ''\r\n }`}\r\n />\r\n <button\r\n type=\"button\"\r\n onClick={() => setShowPassword(!showPassword)}\r\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-gray-500 hover:text-gray-700\"\r\n tabIndex={-1}\r\n >\r\n {showPassword ? (\r\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21\" />\r\n </svg>\r\n ) : (\r\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\" />\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z\" />\r\n </svg>\r\n )}\r\n </button>\r\n </div>\r\n <ErrorMessage name=\"password\" component=\"p\" className={baseErrorClass} />\r\n <p className=\"text-xs text-gray-500 mt-1\">\r\n Min {passwordRequirements.minLength} characters\r\n {passwordRequirements.requireUppercase && ', uppercase'}\r\n {passwordRequirements.requireLowercase && ', lowercase'}\r\n {passwordRequirements.requireNumber && ', number'}\r\n {passwordRequirements.requireSpecial && ', special character'}\r\n </p>\r\n </div>\r\n\r\n {/* Confirm Password Field */}\r\n <div>\r\n <label htmlFor=\"register-confirmPassword\" className={baseLabelClass}>\r\n Confirm Password <span className=\"text-red-500\">*</span>\r\n </label>\r\n <div className=\"relative\">\r\n <Field\r\n type={showConfirmPassword ? 'text' : 'password'}\r\n id=\"register-confirmPassword\"\r\n name=\"confirmPassword\"\r\n placeholder=\"••••••••\"\r\n autoComplete=\"new-password\"\r\n className={`${baseInputClass} ${inputClass} pr-12 ${\r\n errors.confirmPassword && touched.confirmPassword ? 'border-red-500 focus:ring-red-500' : ''\r\n }`}\r\n />\r\n <button\r\n type=\"button\"\r\n onClick={() => setShowConfirmPassword(!showConfirmPassword)}\r\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-gray-500 hover:text-gray-700\"\r\n tabIndex={-1}\r\n >\r\n {showConfirmPassword ? (\r\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21\" />\r\n </svg>\r\n ) : (\r\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\" />\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z\" />\r\n </svg>\r\n )}\r\n </button>\r\n </div>\r\n <ErrorMessage name=\"confirmPassword\" component=\"p\" className={baseErrorClass} />\r\n </div>\r\n\r\n {/* Terms Checkbox */}\r\n <div>\r\n <label className=\"flex items-start gap-2 cursor-pointer\">\r\n <Field\r\n type=\"checkbox\"\r\n name=\"acceptTerms\"\r\n className=\"w-4 h-4 mt-1 rounded border-gray-300 text-blue-600 focus:ring-blue-500\"\r\n />\r\n <span className=\"text-sm text-gray-600\">\r\n I agree to the{' '}\r\n <a href={termsLink} className=\"text-blue-600 hover:underline\" target=\"_blank\" rel=\"noopener noreferrer\">\r\n Terms of Service\r\n </a>{' '}\r\n and{' '}\r\n <a href={privacyLink} className=\"text-blue-600 hover:underline\" target=\"_blank\" rel=\"noopener noreferrer\">\r\n Privacy Policy\r\n </a>\r\n <span className=\"text-red-500\"> *</span>\r\n </span>\r\n </label>\r\n <ErrorMessage name=\"acceptTerms\" component=\"p\" className={baseErrorClass} />\r\n </div>\r\n\r\n {/* Error Message */}\r\n {submitStatus === 'error' && (\r\n <div className=\"p-4 bg-red-50 border border-red-200 rounded-lg\">\r\n <p className=\"text-red-800 text-sm\">{submitMessage}</p>\r\n </div>\r\n )}\r\n\r\n {/* Submit Button */}\r\n <button\r\n type=\"submit\"\r\n disabled={isSubmitting}\r\n className={`${baseButtonClass} ${buttonClass}`}\r\n >\r\n {isSubmitting ? (\r\n <span className=\"flex items-center justify-center gap-2\">\r\n <svg className=\"animate-spin w-5 h-5\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\r\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" />\r\n </svg>\r\n Creating account...\r\n </span>\r\n ) : (\r\n submitText\r\n )}\r\n </button>\r\n\r\n {/* Login Link */}\r\n {loginLink && (\r\n <p className=\"text-center text-sm text-gray-600\">\r\n Already have an account?{' '}\r\n <a href={loginLink} className=\"text-blue-600 hover:text-blue-700 font-medium\">\r\n Sign in\r\n </a>\r\n </p>\r\n )}\r\n </Form>\r\n )}\r\n </Formik>\r\n </div>\r\n );\r\n}\r\n\r\nexport default RegisterForm;\r\n"]}