@camp2gether/c2g-ui 0.0.7

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 (56) hide show
  1. package/README.md +95 -0
  2. package/charts/index.d.ts +199 -0
  3. package/fesm2022/camp2gether-c2g-ui-beach-animation-ipi3OoKW.mjs +54156 -0
  4. package/fesm2022/camp2gether-c2g-ui-beach-animation-ipi3OoKW.mjs.map +1 -0
  5. package/fesm2022/camp2gether-c2g-ui-camping-animation-DY6XWXyF.mjs +35807 -0
  6. package/fesm2022/camp2gether-c2g-ui-camping-animation-DY6XWXyF.mjs.map +1 -0
  7. package/fesm2022/camp2gether-c2g-ui-car-animation-DnDp7WfG.mjs +45189 -0
  8. package/fesm2022/camp2gether-c2g-ui-car-animation-DnDp7WfG.mjs.map +1 -0
  9. package/fesm2022/camp2gether-c2g-ui-car-driving-landscape-animation-CawNeMKD.mjs +43833 -0
  10. package/fesm2022/camp2gether-c2g-ui-car-driving-landscape-animation-CawNeMKD.mjs.map +1 -0
  11. package/fesm2022/camp2gether-c2g-ui-cat-love-animation-ewC7fZyY.mjs +30789 -0
  12. package/fesm2022/camp2gether-c2g-ui-cat-love-animation-ewC7fZyY.mjs.map +1 -0
  13. package/fesm2022/camp2gether-c2g-ui-charts.mjs +404 -0
  14. package/fesm2022/camp2gether-c2g-ui-charts.mjs.map +1 -0
  15. package/fesm2022/camp2gether-c2g-ui-checklist-animation-DqUkcLqI.mjs +19868 -0
  16. package/fesm2022/camp2gether-c2g-ui-checklist-animation-DqUkcLqI.mjs.map +1 -0
  17. package/fesm2022/camp2gether-c2g-ui-coffee-time-animation-DQilaE0A.mjs +6816 -0
  18. package/fesm2022/camp2gether-c2g-ui-coffee-time-animation-DQilaE0A.mjs.map +1 -0
  19. package/fesm2022/camp2gether-c2g-ui-error-404-pdjg-EHb.mjs +49742 -0
  20. package/fesm2022/camp2gether-c2g-ui-error-404-pdjg-EHb.mjs.map +1 -0
  21. package/fesm2022/camp2gether-c2g-ui-fishing-animation-DwE3IF-V.mjs +38941 -0
  22. package/fesm2022/camp2gether-c2g-ui-fishing-animation-DwE3IF-V.mjs.map +1 -0
  23. package/fesm2022/camp2gether-c2g-ui-layout.mjs +768 -0
  24. package/fesm2022/camp2gether-c2g-ui-layout.mjs.map +1 -0
  25. package/fesm2022/camp2gether-c2g-ui-maps.mjs +223 -0
  26. package/fesm2022/camp2gether-c2g-ui-maps.mjs.map +1 -0
  27. package/fesm2022/camp2gether-c2g-ui-mountain-search-animation-TebM1gS4.mjs +69245 -0
  28. package/fesm2022/camp2gether-c2g-ui-mountain-search-animation-TebM1gS4.mjs.map +1 -0
  29. package/fesm2022/camp2gether-c2g-ui-planning-animation-D8QSsZk6.mjs +28330 -0
  30. package/fesm2022/camp2gether-c2g-ui-planning-animation-D8QSsZk6.mjs.map +1 -0
  31. package/fesm2022/camp2gether-c2g-ui-presets.mjs +2855 -0
  32. package/fesm2022/camp2gether-c2g-ui-presets.mjs.map +1 -0
  33. package/fesm2022/camp2gether-c2g-ui-share-animation-qgqs-k59.mjs +59129 -0
  34. package/fesm2022/camp2gether-c2g-ui-share-animation-qgqs-k59.mjs.map +1 -0
  35. package/fesm2022/camp2gether-c2g-ui-summer-camp-animation-DPzirVNH.mjs +89317 -0
  36. package/fesm2022/camp2gether-c2g-ui-summer-camp-animation-DPzirVNH.mjs.map +1 -0
  37. package/fesm2022/camp2gether-c2g-ui-theme.mjs +479 -0
  38. package/fesm2022/camp2gether-c2g-ui-theme.mjs.map +1 -0
  39. package/fesm2022/camp2gether-c2g-ui-thinking-animation--X3er_pf.mjs +27929 -0
  40. package/fesm2022/camp2gether-c2g-ui-thinking-animation--X3er_pf.mjs.map +1 -0
  41. package/fesm2022/camp2gether-c2g-ui-walking-avocado-animation-CQMU2C9-.mjs +4064 -0
  42. package/fesm2022/camp2gether-c2g-ui-walking-avocado-animation-CQMU2C9-.mjs.map +1 -0
  43. package/fesm2022/camp2gether-c2g-ui-walking-orange-animation-CTJniCsF.mjs +3113 -0
  44. package/fesm2022/camp2gether-c2g-ui-walking-orange-animation-CTJniCsF.mjs.map +1 -0
  45. package/fesm2022/camp2gether-c2g-ui-weather-partly-cloudy-animation-Cnw3W4cS.mjs +1731 -0
  46. package/fesm2022/camp2gether-c2g-ui-weather-partly-cloudy-animation-Cnw3W4cS.mjs.map +1 -0
  47. package/fesm2022/camp2gether-c2g-ui.mjs +2099 -0
  48. package/fesm2022/camp2gether-c2g-ui.mjs.map +1 -0
  49. package/index.d.ts +578 -0
  50. package/layout/index.d.ts +443 -0
  51. package/maps/index.d.ts +62 -0
  52. package/package.json +51 -0
  53. package/presets/index.d.ts +1437 -0
  54. package/src/lib/styles/design-tokens.css +153 -0
  55. package/src/lib/styles/themes.scss +346 -0
  56. package/theme/index.d.ts +63 -0
@@ -0,0 +1,153 @@
1
+ :root {
2
+ /* Colors */
3
+ --c2g-color-bg-base: #f8f6f3;
4
+ --c2g-color-bg-secondary: #efe9e0;
5
+ --c2g-color-bg-tertiary: #e1d9ce;
6
+ --c2g-color-surface: #ffffff;
7
+ --c2g-color-surface-glass: rgba(255, 255, 255, 0.95);
8
+ --c2g-color-primary: #ff6b35;
9
+ --c2g-color-primary-light: #fff4f0;
10
+ --c2g-color-primary-dark: #e55623;
11
+ --c2g-color-primary-container: #ffede6;
12
+ --c2g-color-on-primary-container: #4a1800;
13
+ --c2g-color-primary-rgb: 255, 107, 53;
14
+ --c2g-color-secondary: #4ecdc4;
15
+ --c2g-color-secondary-light: #7ed8d2;
16
+ --c2g-color-secondary-dark: #3ba99f;
17
+ --c2g-color-secondary-container: #e5f9f7;
18
+ --c2g-color-tertiary: #ffb347;
19
+ --c2g-color-accent-light: #ffe570;
20
+ --c2g-color-accent-dark: #f4c430;
21
+ --c2g-color-success: #95e1d3;
22
+ --c2g-color-warning: #ffb347;
23
+ --c2g-color-error: #ff6b6b;
24
+ --c2g-color-info: #74c0fc;
25
+ --c2g-color-neutral-50: #f8f6f3;
26
+ --c2g-color-neutral-100: #efe9e0;
27
+ --c2g-color-neutral-200: #e1d9ce;
28
+ --c2g-color-neutral-300: #d1c4b5;
29
+ --c2g-color-neutral-400: #b8a89b;
30
+ --c2g-color-neutral-500: #98877a;
31
+ --c2g-color-neutral-600: #6b5e52;
32
+ --c2g-color-neutral-700: #4a423b;
33
+ --c2g-color-neutral-800: #2f2b27;
34
+ --c2g-color-neutral-900: #1a1714;
35
+ --c2g-color-text-primary: #1a1714;
36
+ --c2g-color-text-secondary: #4a423b;
37
+ --c2g-color-text-muted: #6b5e52;
38
+ --c2g-color-outline: #d1c4b5;
39
+ --c2g-color-outline-variant: #e1d9ce;
40
+ --c2g-color-border-subtle: rgba(74, 66, 59, 0.18);
41
+ --c2g-color-border-soft: rgba(74, 66, 59, 0.12);
42
+ --c2g-color-accent: #ff6b35;
43
+ --c2g-color-focus: #e55623;
44
+ --c2g-color-button-primary: #ff6b35;
45
+ --c2g-color-button-primary-hover: #e55623;
46
+ --c2g-color-button-secondary: #4ecdc4;
47
+ --c2g-color-button-secondary-hover: #3ba99f;
48
+ --c2g-color-button-secondary-text: #1a1714;
49
+ --c2g-color-button-primary-text: #1a1714;
50
+ --c2g-color-button-ghost-hover: #ffe0d6;
51
+
52
+ /* Map marker activity/status colors */
53
+ --c2g-activity-water: #1976d2;
54
+ --c2g-activity-forest: #2e7d32;
55
+ --c2g-activity-mountain: #6d4c41;
56
+ --c2g-activity-desert: #f9a825;
57
+ --c2g-activity-urban: #546e7a;
58
+ --c2g-activity-adventure: #8e24aa;
59
+ --c2g-activity-point-of-interest: #d81b60;
60
+ --c2g-tour-declined: #b71c1c;
61
+ --c2g-tour-completed: #2e7d32;
62
+ --c2g-tour-current: #ef6c00;
63
+ --c2g-tour-upcoming: #1565c0;
64
+
65
+ /* Typography */
66
+ --c2g-font-family-base: "Quicksand", "Segoe UI", sans-serif;
67
+ --c2g-font-size-xs: 0.75rem;
68
+ --c2g-font-size-sm: 0.875rem;
69
+ --c2g-font-size-md: 1rem;
70
+ --c2g-font-size-lg: 1.25rem;
71
+ --c2g-font-weight-semibold: 600;
72
+ --c2g-font-weight-bold: 700;
73
+ --c2g-font-weight-extrabold: 800;
74
+ --c2g-letter-spacing-tight: -0.02em;
75
+ --c2g-letter-spacing-wide: 0.1em;
76
+
77
+ /* Spacing */
78
+ --c2g-space-1: 0.25rem;
79
+ --c2g-space-2: 0.5rem;
80
+ --c2g-space-3: 0.75rem;
81
+ --c2g-space-4: 1rem;
82
+ --c2g-space-5: 1.25rem;
83
+ --c2g-space-6: 1.5rem;
84
+
85
+ /* Radius */
86
+ --c2g-radius-sm: 0.375rem;
87
+ --c2g-radius-md: 0.625rem;
88
+ --c2g-radius-lg: 0.75rem;
89
+ --c2g-radius-xl: 1.125rem;
90
+
91
+ /* Shadow */
92
+ --c2g-shadow-sm: 0 0 3px rgba(31, 28, 25, 0.06);
93
+ --c2g-shadow-md: 0 0 6px rgba(31, 28, 25, 0.08);
94
+
95
+ /* Motion */
96
+ --c2g-motion-duration-fast: 120ms;
97
+ --c2g-motion-duration-base: 200ms;
98
+ --c2g-motion-ease-standard: ease;
99
+
100
+ /* Z-index */
101
+ --c2g-z-index-base: 1;
102
+ --c2g-z-index-dropdown: 1000;
103
+ --c2g-z-index-sticky: 1100;
104
+ --c2g-z-index-overlay: 1200;
105
+ --c2g-z-index-modal: 1300;
106
+ --c2g-z-index-toast: 1400;
107
+
108
+ /* Breakpoints */
109
+ --c2g-breakpoint-sm: 36rem;
110
+ --c2g-breakpoint-md: 48rem;
111
+ --c2g-breakpoint-lg: 64rem;
112
+ --c2g-breakpoint-xl: 80rem;
113
+
114
+ /* Backward-compatible aliases used by existing components */
115
+ --c2g-glass-bg: var(--c2g-color-surface-glass);
116
+
117
+ /* Neutral color aliases (short form without -color- infix) */
118
+ --c2g-neutral-50: var(--c2g-color-neutral-50);
119
+ --c2g-neutral-100: var(--c2g-color-neutral-100);
120
+ --c2g-neutral-200: var(--c2g-color-neutral-200);
121
+ --c2g-neutral-300: var(--c2g-color-neutral-300);
122
+ --c2g-neutral-400: var(--c2g-color-neutral-400);
123
+ --c2g-neutral-500: var(--c2g-color-neutral-500);
124
+ --c2g-neutral-600: var(--c2g-color-neutral-600);
125
+ --c2g-neutral-700: var(--c2g-color-neutral-700);
126
+ --c2g-neutral-800: var(--c2g-color-neutral-800);
127
+ --c2g-neutral-900: var(--c2g-color-neutral-900);
128
+
129
+ /* Semantic space aliases */
130
+ --c2g-space-sm: var(--c2g-space-2);
131
+ --c2g-space-md: var(--c2g-space-4);
132
+ --c2g-space-lg: var(--c2g-space-6);
133
+ --c2g-space-xl: calc(var(--c2g-space-6) * 1.5);
134
+
135
+ /* Transition shorthand alias */
136
+ --c2g-transition-fast: var(--c2g-motion-duration-fast) var(--c2g-motion-ease-standard);
137
+
138
+ --c2g-primary: var(--c2g-color-primary);
139
+ --c2g-primary-light: var(--c2g-color-primary-light);
140
+ --c2g-primary-dark: var(--c2g-color-primary-dark);
141
+ --c2g-secondary: var(--c2g-color-secondary);
142
+ --c2g-secondary-light: var(--c2g-color-secondary-light);
143
+ --c2g-secondary-dark: var(--c2g-color-secondary-dark);
144
+ --c2g-accent: var(--c2g-color-tertiary);
145
+ --c2g-success: var(--c2g-color-success);
146
+ --c2g-warning: var(--c2g-color-warning);
147
+ --c2g-error: var(--c2g-color-error);
148
+ --c2g-info: var(--c2g-color-info);
149
+ --c2g-text-primary: var(--c2g-color-text-primary);
150
+ --c2g-text-secondary: var(--c2g-color-text-secondary);
151
+ --c2g-text-muted: var(--c2g-color-text-muted);
152
+ --spacing-3: var(--c2g-space-3);
153
+ }
@@ -0,0 +1,346 @@
1
+ // ==========================================================================
2
+ // CAMP2GETHER THEME SYSTEM
3
+ // ==========================================================================
4
+ // Universal theme variables that adapt to all theme modes
5
+ // Supports: light, dark, auto, high-contrast
6
+ // Uses C2G's warm color palette
7
+
8
+ // Base theme variables (always available)
9
+ :root {
10
+ // Animation and transitions
11
+ --c2g-transition-fast: var(--c2g-motion-duration-fast) var(--c2g-motion-ease-standard);
12
+ --c2g-transition-medium: 250ms cubic-bezier(0.4, 0, 0.2, 1);
13
+ --c2g-transition-slow: 350ms cubic-bezier(0.4, 0, 0.2, 1);
14
+
15
+ // Border radius (inherit from design tokens)
16
+ --c2g-radius-sm: var(--c2g-radius-sm);
17
+ --c2g-radius-md: var(--c2g-radius-md);
18
+ --c2g-radius-lg: var(--c2g-radius-lg);
19
+ --c2g-radius-xl: var(--c2g-radius-xl);
20
+
21
+ // Shadows (inherit from design tokens)
22
+ --c2g-shadow-sm: var(--c2g-shadow-sm);
23
+ --c2g-shadow-md: var(--c2g-shadow-md);
24
+ --c2g-shadow-lg: 0 10px 15px -3px rgba(31, 28, 25, 0.1), 0 4px 6px -2px rgba(31, 28, 25, 0.05);
25
+ --c2g-shadow-xl: 0 20px 25px -5px rgba(31, 28, 25, 0.1), 0 10px 10px -5px rgba(31, 28, 25, 0.04);
26
+ }
27
+
28
+ // ==========================================================================
29
+ // LIGHT THEME (Default - Uses C2G warm colors)
30
+ // ==========================================================================
31
+ body,
32
+ body.theme-light {
33
+ // Primary colors (C2G warm orange)
34
+ --c2g-theme-primary: var(--c2g-color-primary);
35
+ --c2g-theme-primary-dark: var(--c2g-color-primary-dark, #c0391a);
36
+ --c2g-theme-primary-hover: var(--c2g-color-primary-dark);
37
+ --c2g-theme-primary-container: var(--c2g-color-primary-container);
38
+ --c2g-theme-on-primary: #ffffff;
39
+ --c2g-theme-on-primary-container: var(--c2g-color-on-primary-container);
40
+ --c2g-theme-primary-shadow: rgba(255, 107, 53, 0.35);
41
+ --c2g-theme-primary-shadow-lg: rgba(255, 107, 53, 0.45);
42
+
43
+ // Secondary colors (C2G teal)
44
+ --c2g-theme-secondary: var(--c2g-color-secondary);
45
+ --c2g-theme-secondary-hover: var(--c2g-color-secondary-dark);
46
+ --c2g-theme-secondary-container: var(--c2g-color-secondary-container);
47
+ --c2g-theme-on-secondary: #ffffff;
48
+ --c2g-theme-on-secondary-container: var(--c2g-color-text-primary);
49
+
50
+ // Surface colors (C2G warm neutrals)
51
+ --c2g-theme-surface: var(--c2g-color-surface);
52
+ --c2g-theme-surface-container-lowest: var(--c2g-color-surface);
53
+ --c2g-theme-surface-container-low: var(--c2g-color-bg-base);
54
+ --c2g-theme-surface-container: var(--c2g-color-bg-secondary);
55
+ --c2g-theme-surface-container-high: var(--c2g-color-bg-tertiary);
56
+ --c2g-theme-surface-container-highest: var(--c2g-color-neutral-300);
57
+ --c2g-theme-on-surface: var(--c2g-color-text-primary);
58
+ --c2g-theme-on-surface-variant: var(--c2g-color-text-secondary);
59
+
60
+ // Background (C2G warm base)
61
+ --c2g-theme-background: var(--c2g-color-bg-base);
62
+ --c2g-theme-on-background: var(--c2g-color-text-primary);
63
+
64
+ // Error colors
65
+ --c2g-theme-error: var(--c2g-color-error);
66
+ --c2g-theme-error-container: #fff5f5;
67
+ --c2g-theme-on-error: #ffffff;
68
+ --c2g-theme-on-error-container: #7f1d1d;
69
+
70
+ // Success colors
71
+ --c2g-theme-success: var(--c2g-color-success);
72
+ --c2g-theme-success-container: #f0fdfa;
73
+ --c2g-theme-on-success: #ffffff;
74
+ --c2g-theme-on-success-container: #134e4a;
75
+
76
+ // Warning colors
77
+ --c2g-theme-warning: var(--c2g-color-warning);
78
+ --c2g-theme-warning-container: #fffbeb;
79
+ --c2g-theme-on-warning: #ffffff;
80
+ --c2g-theme-on-warning-container: #78350f;
81
+
82
+ // Outline colors
83
+ --c2g-theme-outline: var(--c2g-color-outline);
84
+ --c2g-theme-outline-variant: var(--c2g-color-outline-variant);
85
+
86
+ // Theme-specific shadows
87
+ --c2g-shadow-color: rgba(31, 28, 25, 0.1);
88
+ }
89
+
90
+ // ==========================================================================
91
+ // DARK THEME (C2G warm colors adapted for dark mode)
92
+ // ==========================================================================
93
+ body.theme-dark {
94
+ // Primary colors (brighter warm orange for dark)
95
+ --c2g-theme-primary: #ff8c5a;
96
+ --c2g-theme-primary-dark: #c0391a;
97
+ --c2g-theme-primary-hover: var(--c2g-color-primary);
98
+ --c2g-theme-primary-container: #4a1800;
99
+ --c2g-theme-on-primary: var(--c2g-color-neutral-900);
100
+ --c2g-theme-on-primary-container: #ffe0d6;
101
+ --c2g-theme-primary-shadow: rgba(255, 140, 90, 0.25);
102
+ --c2g-theme-primary-shadow-lg: rgba(255, 140, 90, 0.35);
103
+
104
+ // Secondary colors (lighter teal for dark)
105
+ --c2g-theme-secondary: #7ed8d2;
106
+ --c2g-theme-secondary-hover: var(--c2g-color-secondary-light);
107
+ --c2g-theme-secondary-container: #134e4a;
108
+ --c2g-theme-on-secondary: var(--c2g-color-neutral-900);
109
+ --c2g-theme-on-secondary-container: #a7f3d0;
110
+
111
+ // Surface colors (dark warm neutrals)
112
+ --c2g-theme-surface: var(--c2g-color-neutral-900);
113
+ --c2g-theme-surface-container-lowest: #0f0d0b;
114
+ --c2g-theme-surface-container-low: var(--c2g-color-neutral-800);
115
+ --c2g-theme-surface-container: var(--c2g-color-neutral-700);
116
+ --c2g-theme-surface-container-high: var(--c2g-color-neutral-600);
117
+ --c2g-theme-surface-container-highest: var(--c2g-color-neutral-500);
118
+ --c2g-theme-on-surface: var(--c2g-color-neutral-50);
119
+ --c2g-theme-on-surface-variant: var(--c2g-color-neutral-300);
120
+
121
+ // Background (darkest warm)
122
+ --c2g-theme-background: #0f0d0b;
123
+ --c2g-theme-on-background: var(--c2g-color-neutral-50);
124
+
125
+ // Error colors (adjusted for dark)
126
+ --c2g-theme-error: #ff9999;
127
+ --c2g-theme-error-container: #7f1d1d;
128
+ --c2g-theme-on-error: var(--c2g-color-neutral-900);
129
+ --c2g-theme-on-error-container: #fecaca;
130
+
131
+ // Success colors (adjusted for dark)
132
+ --c2g-theme-success: #a7f3d0;
133
+ --c2g-theme-success-container: #134e4a;
134
+ --c2g-theme-on-success: var(--c2g-color-neutral-900);
135
+ --c2g-theme-on-success-container: #d1fae5;
136
+
137
+ // Warning colors (adjusted for dark)
138
+ --c2g-theme-warning: #fcd34d;
139
+ --c2g-theme-warning-container: #78350f;
140
+ --c2g-theme-on-warning: var(--c2g-color-neutral-900);
141
+ --c2g-theme-on-warning-container: #fde68a;
142
+
143
+ // Outline colors
144
+ --c2g-theme-outline: var(--c2g-color-neutral-600);
145
+ --c2g-theme-outline-variant: var(--c2g-color-neutral-700);
146
+
147
+ // Theme-specific shadows
148
+ --c2g-shadow-color: rgba(0, 0, 0, 0.4);
149
+ }
150
+
151
+ // ==========================================================================
152
+ // HIGH CONTRAST THEME (WCAG AAA Compliant with C2G accent)
153
+ // ==========================================================================
154
+ body.theme-high-contrast {
155
+ // Primary colors - Maximum contrast with C2G orange
156
+ --c2g-theme-primary: #cc5529;
157
+ --c2g-theme-primary-dark: #7a2610;
158
+ --c2g-theme-primary-hover: #994020;
159
+ --c2g-theme-primary-container: #ffe6cc;
160
+ --c2g-theme-on-primary: #ffffff;
161
+ --c2g-theme-on-primary-container: #000000;
162
+ --c2g-theme-primary-shadow: rgba(0, 0, 0, 0.0);
163
+ --c2g-theme-primary-shadow-lg: rgba(0, 0, 0, 0.0);
164
+
165
+ // Secondary colors
166
+ --c2g-theme-secondary: #006666;
167
+ --c2g-theme-secondary-hover: #004444;
168
+ --c2g-theme-secondary-container: #ccffff;
169
+ --c2g-theme-on-secondary: #ffffff;
170
+ --c2g-theme-on-secondary-container: #000000;
171
+
172
+ // Surface colors - High contrast
173
+ --c2g-theme-surface: #ffffff;
174
+ --c2g-theme-surface-container-lowest: #ffffff;
175
+ --c2g-theme-surface-container-low: #f8f8f8;
176
+ --c2g-theme-surface-container: #f0f0f0;
177
+ --c2g-theme-surface-container-high: #e8e8e8;
178
+ --c2g-theme-surface-container-highest: #d0d0d0;
179
+ --c2g-theme-on-surface: #000000;
180
+ --c2g-theme-on-surface-variant: #333333;
181
+
182
+ // Background
183
+ --c2g-theme-background: #ffffff;
184
+ --c2g-theme-on-background: #000000;
185
+
186
+ // Error colors - High contrast
187
+ --c2g-theme-error: #cc0000;
188
+ --c2g-theme-error-container: #ffcccc;
189
+ --c2g-theme-on-error: #ffffff;
190
+ --c2g-theme-on-error-container: #000000;
191
+
192
+ // Success colors - High contrast
193
+ --c2g-theme-success: #006600;
194
+ --c2g-theme-success-container: #ccffcc;
195
+ --c2g-theme-on-success: #ffffff;
196
+ --c2g-theme-on-success-container: #000000;
197
+
198
+ // Warning colors - High contrast
199
+ --c2g-theme-warning: #cc6600;
200
+ --c2g-theme-warning-container: #ffe6cc;
201
+ --c2g-theme-on-warning: #ffffff;
202
+ --c2g-theme-on-warning-container: #000000;
203
+
204
+ // Outline colors - Strong borders
205
+ --c2g-theme-outline: #666666;
206
+ --c2g-theme-outline-variant: #999999;
207
+
208
+ // Enhanced shadows for better depth perception
209
+ --c2g-shadow-color: rgba(0, 0, 0, 0.5);
210
+
211
+ // High contrast specific enhancements
212
+ --c2g-focus-ring: 3px solid #cc5529;
213
+ --c2g-border-width: 2px;
214
+ }
215
+
216
+ // ==========================================================================
217
+ // AUTO THEME (Uses system preference with C2G colors)
218
+ // ==========================================================================
219
+ body.theme-auto {
220
+ @media (prefers-color-scheme: light) {
221
+ // Inherit light theme variables
222
+ --c2g-theme-primary: var(--c2g-color-primary);
223
+ --c2g-theme-primary-hover: var(--c2g-color-primary-dark);
224
+ --c2g-theme-primary-container: var(--c2g-color-primary-container);
225
+ --c2g-theme-on-primary: #ffffff;
226
+ --c2g-theme-on-primary-container: var(--c2g-color-on-primary-container);
227
+ --c2g-theme-secondary: var(--c2g-color-secondary);
228
+ --c2g-theme-secondary-hover: var(--c2g-color-secondary-dark);
229
+ --c2g-theme-secondary-container: var(--c2g-color-secondary-container);
230
+ --c2g-theme-on-secondary: #ffffff;
231
+ --c2g-theme-on-secondary-container: var(--c2g-color-text-primary);
232
+ --c2g-theme-surface: var(--c2g-color-surface);
233
+ --c2g-theme-surface-container-lowest: var(--c2g-color-surface);
234
+ --c2g-theme-surface-container-low: var(--c2g-color-bg-base);
235
+ --c2g-theme-surface-container: var(--c2g-color-bg-secondary);
236
+ --c2g-theme-surface-container-high: var(--c2g-color-bg-tertiary);
237
+ --c2g-theme-surface-container-highest: var(--c2g-color-neutral-300);
238
+ --c2g-theme-on-surface: var(--c2g-color-text-primary);
239
+ --c2g-theme-on-surface-variant: var(--c2g-color-text-secondary);
240
+ --c2g-theme-background: var(--c2g-color-bg-base);
241
+ --c2g-theme-on-background: var(--c2g-color-text-primary);
242
+ --c2g-theme-error: var(--c2g-color-error);
243
+ --c2g-theme-error-container: #fff5f5;
244
+ --c2g-theme-on-error: #ffffff;
245
+ --c2g-theme-on-error-container: #7f1d1d;
246
+ --c2g-theme-success: var(--c2g-color-success);
247
+ --c2g-theme-success-container: #f0fdfa;
248
+ --c2g-theme-on-success: #ffffff;
249
+ --c2g-theme-on-success-container: #134e4a;
250
+ --c2g-theme-warning: var(--c2g-color-warning);
251
+ --c2g-theme-warning-container: #fffbeb;
252
+ --c2g-theme-on-warning: #ffffff;
253
+ --c2g-theme-on-warning-container: #78350f;
254
+ --c2g-theme-outline: var(--c2g-color-outline);
255
+ --c2g-theme-outline-variant: var(--c2g-color-outline-variant);
256
+ --c2g-shadow-color: rgba(31, 28, 25, 0.1);
257
+ }
258
+
259
+ @media (prefers-color-scheme: dark) {
260
+ // Inherit dark theme variables
261
+ --c2g-theme-primary: #ff8c5a;
262
+ --c2g-theme-primary-hover: var(--c2g-color-primary);
263
+ --c2g-theme-primary-container: #4a1800;
264
+ --c2g-theme-on-primary: var(--c2g-color-neutral-900);
265
+ --c2g-theme-on-primary-container: #ffe0d6;
266
+ --c2g-theme-secondary: #7ed8d2;
267
+ --c2g-theme-secondary-hover: var(--c2g-color-secondary-light);
268
+ --c2g-theme-secondary-container: #134e4a;
269
+ --c2g-theme-on-secondary: var(--c2g-color-neutral-900);
270
+ --c2g-theme-on-secondary-container: #a7f3d0;
271
+ --c2g-theme-surface: var(--c2g-color-neutral-900);
272
+ --c2g-theme-surface-container-lowest: #0f0d0b;
273
+ --c2g-theme-surface-container-low: var(--c2g-color-neutral-800);
274
+ --c2g-theme-surface-container: var(--c2g-color-neutral-700);
275
+ --c2g-theme-surface-container-high: var(--c2g-color-neutral-600);
276
+ --c2g-theme-surface-container-highest: var(--c2g-color-neutral-500);
277
+ --c2g-theme-on-surface: var(--c2g-color-neutral-50);
278
+ --c2g-theme-on-surface-variant: var(--c2g-color-neutral-300);
279
+ --c2g-theme-background: #0f0d0b;
280
+ --c2g-theme-on-background: var(--c2g-color-neutral-50);
281
+ --c2g-theme-error: #ff9999;
282
+ --c2g-theme-error-container: #7f1d1d;
283
+ --c2g-theme-on-error: var(--c2g-color-neutral-900);
284
+ --c2g-theme-on-error-container: #fecaca;
285
+ --c2g-theme-success: #a7f3d0;
286
+ --c2g-theme-success-container: #134e4a;
287
+ --c2g-theme-on-success: var(--c2g-color-neutral-900);
288
+ --c2g-theme-on-success-container: #d1fae5;
289
+ --c2g-theme-warning: #fcd34d;
290
+ --c2g-theme-warning-container: #78350f;
291
+ --c2g-theme-on-warning: var(--c2g-color-neutral-900);
292
+ --c2g-theme-on-warning-container: #fde68a;
293
+ --c2g-theme-outline: var(--c2g-color-neutral-600);
294
+ --c2g-theme-outline-variant: var(--c2g-color-neutral-700);
295
+ --c2g-shadow-color: rgba(0, 0, 0, 0.4);
296
+ }
297
+ }
298
+
299
+ // ==========================================================================
300
+ // ACCESSIBILITY ENHANCEMENTS
301
+ // ==========================================================================
302
+ // Enhanced focus indicators for all themes
303
+ body.theme-high-contrast {
304
+ *:focus-visible {
305
+ outline: var(--c2g-focus-ring, 2px solid var(--c2g-theme-primary));
306
+ outline-offset: 2px;
307
+ }
308
+
309
+ // Stronger borders in high contrast mode
310
+ .mat-mdc-button,
311
+ .mat-mdc-card,
312
+ .mat-mdc-menu-panel {
313
+ border: var(--c2g-border-width, 1px) solid var(--c2g-theme-outline);
314
+ }
315
+ }
316
+
317
+ // Reduced motion support
318
+ @media (prefers-reduced-motion: reduce) {
319
+ * {
320
+ animation-duration: 0.01ms !important;
321
+ animation-iteration-count: 1 !important;
322
+ transition-duration: 0.01ms !important;
323
+ }
324
+ }
325
+
326
+ // ==========================================================================
327
+ // THEME TRANSITION ANIMATIONS
328
+ // ==========================================================================
329
+ body {
330
+ transition:
331
+ background-color var(--c2g-transition-medium),
332
+ color var(--c2g-transition-medium);
333
+ }
334
+
335
+ // Smooth transitions for theme-aware components
336
+ .mat-mdc-card,
337
+ .mat-mdc-button,
338
+ .mat-mdc-menu-panel,
339
+ .action-card,
340
+ .dashboard-hero {
341
+ transition:
342
+ background-color var(--c2g-transition-medium),
343
+ color var(--c2g-transition-medium),
344
+ border-color var(--c2g-transition-medium),
345
+ box-shadow var(--c2g-transition-medium);
346
+ }
@@ -0,0 +1,63 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { Provider } from '@angular/core';
3
+
4
+ type ThemeMode = 'light' | 'dark' | 'auto' | 'high-contrast';
5
+ declare class ThemeService {
6
+ private readonly platformId;
7
+ private readonly destroyRef;
8
+ private readonly _currentTheme;
9
+ private readonly _isSystemDark;
10
+ private mediaQueryCleanup?;
11
+ readonly currentTheme: _angular_core.Signal<ThemeMode>;
12
+ readonly isSystemDark: _angular_core.Signal<boolean>;
13
+ readonly effectiveTheme: _angular_core.Signal<ThemeMode>;
14
+ readonly isLightTheme: _angular_core.Signal<boolean>;
15
+ readonly isDarkTheme: _angular_core.Signal<boolean>;
16
+ readonly isHighContrastTheme: _angular_core.Signal<boolean>;
17
+ constructor();
18
+ private initializeBrowserFeatures;
19
+ private getInitialTheme;
20
+ private getInitialSystemPreference;
21
+ private watchSystemPreference;
22
+ private applyThemeToDOM;
23
+ setTheme(theme: ThemeMode): void;
24
+ toggleTheme(): void;
25
+ resetToSystemPreference(): void;
26
+ getCurrentTheme(): ThemeMode;
27
+ getEffectiveTheme(): ThemeMode;
28
+ private cleanup;
29
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemeService, never>;
30
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ThemeService>;
31
+ }
32
+
33
+ declare class ThemeSwitcherComponent {
34
+ protected readonly themeService: ThemeService;
35
+ protected readonly currentTheme: _angular_core.Signal<ThemeMode>;
36
+ protected readonly themeIcon: _angular_core.Signal<string>;
37
+ protected readonly themeOptions: {
38
+ value: ThemeMode;
39
+ label: string;
40
+ icon: string;
41
+ }[];
42
+ protected selectTheme(theme: ThemeMode): void;
43
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemeSwitcherComponent, never>;
44
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThemeSwitcherComponent, "c2g-theme-switcher", never, {}, {}, never, never, true, never>;
45
+ }
46
+
47
+ /**
48
+ * Providers for the C2G Theme system that includes all necessary CDK dependencies
49
+ */
50
+ declare const C2G_THEME_PROVIDERS: Provider[];
51
+ /**
52
+ * Mock providers for testing or SSR environments where CDK might not be needed
53
+ */
54
+ declare const C2G_THEME_MOCK_PROVIDERS: Provider[];
55
+ /**
56
+ * Smart provider factory that chooses appropriate providers based on environment
57
+ */
58
+ declare function getC2GThemeProviders(): Provider[];
59
+
60
+ declare const C2G_TRANSLATIONS: Record<string, Record<string, unknown>>;
61
+
62
+ export { C2G_THEME_MOCK_PROVIDERS, C2G_THEME_PROVIDERS, C2G_TRANSLATIONS, ThemeService, ThemeSwitcherComponent, getC2GThemeProviders };
63
+ export type { ThemeMode };