ngxsmk-datepicker 2.3.1 → 2.4.0

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.
@@ -1,324 +1,324 @@
1
- # Theme Tokens & CSS Custom Properties
2
-
3
- **Last updated:** June 3, 2026 - **Current stable:** v2.3.1
4
-
5
- Complete reference for all CSS custom properties (CSS variables) available in ngxsmk-datepicker.
6
-
7
- ## Overview
8
-
9
- ngxsmk-datepicker uses CSS custom properties for theming, allowing you to customize the appearance without modifying the component's internal styles. All variables are prefixed with `--datepicker-` and can be overridden at any level in your CSS.
10
-
11
- ## Color Tokens
12
-
13
- ### Primary Colors
14
-
15
- | Variable | Default (Light) | Default (Dark) | Description |
16
- |----------|----------------|----------------|-------------|
17
- | `--datepicker-primary-color` | `#6d28d9` | `#8b5cf6` | Primary brand color for selected dates, buttons, and focus states |
18
- | `--datepicker-primary-contrast` | `#ffffff` | `#ffffff` | Text color on primary color background |
19
-
20
- ### Background Colors
21
-
22
- | Variable | Default (Light) | Default (Dark) | Description |
23
- |----------|----------------|----------------|-------------|
24
- | `--datepicker-background` | `#ffffff` | `#1f2937` | Main background color for calendar container |
25
- | `--datepicker-range-background` | `#f5f3ff` | `rgba(139, 92, 246, 0.15)` | Background color for date range selection |
26
- | `--datepicker-hover-background` | `#f3f4f6` | `#374151` | Background color for hover states |
27
-
28
- ### Text Colors
29
-
30
- | Variable | Default (Light) | Default (Dark) | Description |
31
- |----------|----------------|----------------|-------------|
32
- | `--datepicker-text-color` | `#1f2937` | `#f3f4f6` | Primary text color |
33
- | `--datepicker-subtle-text-color` | `#6b7280` | `#9ca3af` | Secondary/subtle text color for labels and hints |
34
-
35
- ### Border Colors
36
-
37
- | Variable | Default (Light) | Default (Dark) | Description |
38
- |----------|----------------|----------------|-------------|
39
- | `--datepicker-border-color` | `#e5e7eb` | `#374151` | Border color for inputs, calendar, and dividers |
40
-
41
- ## Shadow Tokens
42
-
43
- | Variable | Default (Light) | Default (Dark) | Description |
44
- |----------|----------------|----------------|-------------|
45
- | `--datepicker-shadow-sm` | `0 1px 2px 0 rgba(0, 0, 0, 0.05)` | `0 1px 2px 0 rgba(0, 0, 0, 0.3)` | Small shadow for subtle elevation |
46
- | `--datepicker-shadow-md` | `0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)` | `0 4px 6px -1px rgba(0, 0, 0, 0.3), 0 2px 4px -1px rgba(0, 0, 0, 0.2)` | Medium shadow for popover and elevated elements |
47
- | `--datepicker-shadow-lg` | `0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)` | `0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -2px rgba(0, 0, 0, 0.2)` | Large shadow for modal overlays |
48
- | `--datepicker-shadow-xl` | `0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)` | Same as light | Extra large shadow (not used in dark theme) |
49
-
50
- ## Typography Tokens
51
-
52
- | Variable | Default | Description |
53
- |----------|---------|-------------|
54
- | `--datepicker-font-size-base` | `14px` | Base font size for most text |
55
- | `--datepicker-font-size-sm` | `12px` | Small font size for labels and hints |
56
- | `--datepicker-font-size-lg` | `16px` | Large font size for headers |
57
- | `--datepicker-font-size-xl` | `18px` | Extra large font size |
58
- | `--datepicker-line-height` | `1.5` | Line height for text |
59
-
60
- ## Spacing Tokens
61
-
62
- | Variable | Default | Description |
63
- |----------|---------|-------------|
64
- | `--datepicker-spacing-xs` | `4px` | Extra small spacing |
65
- | `--datepicker-spacing-sm` | `8px` | Small spacing |
66
- | `--datepicker-spacing-md` | `12px` | Medium spacing (default) |
67
- | `--datepicker-spacing-lg` | `16px` | Large spacing |
68
- | `--datepicker-spacing-xl` | `20px` | Extra large spacing |
69
- | `--datepicker-spacing-2xl` | `24px` | 2X large spacing |
70
-
71
- ## Border Radius Tokens
72
-
73
- | Variable | Default | Description |
74
- |----------|---------|-------------|
75
- | `--datepicker-radius-sm` | `6px` | Small border radius |
76
- | `--datepicker-radius-md` | `8px` | Medium border radius (default) |
77
- | `--datepicker-radius-lg` | `12px` | Large border radius |
78
- | `--datepicker-radius-xl` | `16px` | Extra large border radius |
79
-
80
- ## Transition Tokens
81
-
82
- | Variable | Default | Description |
83
- |----------|---------|-------------|
84
- | `--datepicker-transition` | `opacity 0.15s cubic-bezier(0.4, 0, 0.2, 1), transform 0.15s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.15s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.15s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.15s cubic-bezier(0.4, 0, 0.2, 1)` | Default transition for animations |
85
-
86
- ## Global CSS Variables Override
87
-
88
- When CSS variables are defined in a global `:root` selector, the ThemeBuilderService will now properly override them with enhanced specificity and `!important` flags to ensure your theme values take precedence.
89
-
90
- ```css
91
- /* When CSS variables are defined in global :root selector */
92
- :root {
93
- --datepicker-primary-color: #ff0000;
94
- --datepicker-primary-contrast: #ffffff;
95
- }
96
-
97
- /* ThemeBuilderService will now properly override these global variables */
98
- ```
99
-
100
- **Note**: If you have CSS variables defined in a global `:root` selector, ThemeBuilderService will now properly override them with enhanced specificity and `!important` flags to ensure your theme values take precedence.
101
-
102
- ## Usage Examples
103
-
104
- ### Basic Theme Override
105
-
106
- ```css
107
- /* Override at component level */
108
- ngxsmk-datepicker {
109
- --datepicker-primary-color: #3b82f6;
110
- --datepicker-primary-contrast: #ffffff;
111
- --datepicker-range-background: #dbeafe;
112
- }
113
- ```
114
-
115
- ### Brand Color Theme
116
-
117
- ```css
118
- /* Blue brand theme */
119
- ngxsmk-datepicker {
120
- --datepicker-primary-color: #2563eb;
121
- --datepicker-primary-contrast: #ffffff;
122
- --datepicker-range-background: #dbeafe;
123
- --datepicker-border-color: #93c5fd;
124
- --datepicker-hover-background: #eff6ff;
125
- }
126
- ```
127
-
128
- ### Green Brand Theme
129
-
130
- ```css
131
- /* Green brand theme */
132
- ngxsmk-datepicker {
133
- --datepicker-primary-color: #10b981;
134
- --datepicker-primary-contrast: #ffffff;
135
- --datepicker-range-background: #d1fae5;
136
- --datepicker-border-color: #6ee7b7;
137
- --datepicker-hover-background: #ecfdf5;
138
- }
139
- ```
140
-
141
- ### Compact Mode
142
-
143
- ```css
144
- /* Compact spacing for dense UIs */
145
- ngxsmk-datepicker {
146
- --datepicker-spacing-xs: 2px;
147
- --datepicker-spacing-sm: 4px;
148
- --datepicker-spacing-md: 6px;
149
- --datepicker-spacing-lg: 8px;
150
- --datepicker-spacing-xl: 12px;
151
- --datepicker-spacing-2xl: 16px;
152
- --datepicker-font-size-base: 12px;
153
- --datepicker-font-size-sm: 10px;
154
- --datepicker-radius-md: 4px;
155
- --datepicker-radius-sm: 2px;
156
- }
157
- ```
158
-
159
- ### High Contrast Theme
160
-
161
- ```css
162
- /* High contrast for accessibility */
163
- ngxsmk-datepicker {
164
- --datepicker-primary-color: #000000;
165
- --datepicker-primary-contrast: #ffffff;
166
- --datepicker-background: #ffffff;
167
- --datepicker-text-color: #000000;
168
- --datepicker-border-color: #000000;
169
- --datepicker-hover-background: #f0f0f0;
170
- --datepicker-range-background: #e0e0e0;
171
- }
172
- ```
173
-
174
- ### Material Design Theme
175
-
176
- ```css
177
- /* Material Design inspired */
178
- ngxsmk-datepicker {
179
- --datepicker-primary-color: #6200ee;
180
- --datepicker-primary-contrast: #ffffff;
181
- --datepicker-range-background: #e1bee7;
182
- --datepicker-border-color: #b39ddb;
183
- --datepicker-hover-background: #f3e5f5;
184
- --datepicker-radius-md: 4px;
185
- --datepicker-shadow-md: 0 2px 4px rgba(0,0,0,0.2);
186
- }
187
- ```
188
-
189
- ### Tailwind Integration
190
-
191
- ```css
192
- /* Using Tailwind CSS variables */
193
- ngxsmk-datepicker {
194
- --datepicker-primary-color: var(--tw-color-blue-600);
195
- --datepicker-primary-contrast: var(--tw-color-white);
196
- --datepicker-background: var(--tw-color-white);
197
- --datepicker-text-color: var(--tw-color-gray-900);
198
- --datepicker-border-color: var(--tw-color-gray-300);
199
- --datepicker-hover-background: var(--tw-color-gray-100);
200
- }
201
- ```
202
-
203
- ### Design System Integration (TokiForge)
204
-
205
- ```css
206
- /* TokiForge design tokens */
207
- ngxsmk-datepicker {
208
- --datepicker-primary-color: var(--toki-color-primary);
209
- --datepicker-primary-contrast: var(--toki-color-on-primary);
210
- --datepicker-background: var(--toki-color-surface);
211
- --datepicker-text-color: var(--toki-color-on-surface);
212
- --datepicker-border-color: var(--toki-color-outline);
213
- --datepicker-hover-background: var(--toki-color-surface-variant);
214
- --datepicker-spacing-md: var(--toki-spacing-md);
215
- --datepicker-radius-md: var(--toki-radius-md);
216
- }
217
- ```
218
-
219
- ## Scoped Theming
220
-
221
- You can apply different themes to different datepicker instances:
222
-
223
- ```css
224
- /* Theme for specific datepicker */
225
- .my-custom-datepicker {
226
- --datepicker-primary-color: #ec4899;
227
- --datepicker-range-background: #fce7f3;
228
- }
229
-
230
- /* Another theme for different datepicker */
231
- .my-other-datepicker {
232
- --datepicker-primary-color: #06b6d4;
233
- --datepicker-range-background: #cffafe;
234
- }
235
- ```
236
-
237
- ```html
238
- <ngxsmk-datepicker class="my-custom-datepicker" mode="single"></ngxsmk-datepicker>
239
- <ngxsmk-datepicker class="my-other-datepicker" mode="range"></ngxsmk-datepicker>
240
- ```
241
-
242
- ## Dark Theme
243
-
244
- The component automatically applies dark theme variables when `[theme]="'dark'"` is set:
245
-
246
- ```html
247
- <ngxsmk-datepicker [theme]="'dark'"></ngxsmk-datepicker>
248
- ```
249
-
250
- You can also override dark theme variables:
251
-
252
- ```css
253
- ngxsmk-datepicker.dark-theme {
254
- --datepicker-primary-color: #a78bfa;
255
- --datepicker-background: #111827;
256
- }
257
- ```
258
-
259
- ## Complete Variable List
260
-
261
- For reference, here's the complete list of all CSS custom properties:
262
-
263
- ```css
264
- /* Colors */
265
- --datepicker-primary-color
266
- --datepicker-primary-contrast
267
- --datepicker-range-background
268
- --datepicker-background
269
- --datepicker-text-color
270
- --datepicker-subtle-text-color
271
- --datepicker-border-color
272
- --datepicker-hover-background
273
-
274
- /* Shadows */
275
- --datepicker-shadow-sm
276
- --datepicker-shadow-md
277
- --datepicker-shadow-lg
278
- --datepicker-shadow-xl
279
-
280
- /* Typography */
281
- --datepicker-font-size-base
282
- --datepicker-font-size-sm
283
- --datepicker-font-size-lg
284
- --datepicker-font-size-xl
285
- --datepicker-line-height
286
-
287
- /* Spacing */
288
- --datepicker-spacing-xs
289
- --datepicker-spacing-sm
290
- --datepicker-spacing-md
291
- --datepicker-spacing-lg
292
- --datepicker-spacing-xl
293
- --datepicker-spacing-2xl
294
-
295
- /* Border Radius */
296
- --datepicker-radius-sm
297
- --datepicker-radius-md
298
- --datepicker-radius-lg
299
- --datepicker-radius-xl
300
-
301
- /* Transitions */
302
- --datepicker-transition
303
- ```
304
-
305
- ## Best Practices
306
-
307
- 1. **Use CSS Variables**: Always use CSS custom properties for theming, not direct style overrides
308
- 2. **Scope Appropriately**: Apply theme variables at the appropriate scope (component, page, or global)
309
- 3. **Maintain Contrast**: Ensure sufficient contrast ratios for accessibility (WCAG AA minimum)
310
- 4. **Test Dark Mode**: Always test your custom themes in both light and dark modes
311
- 5. **Use Design Tokens**: Integrate with your design system's token system when available
312
-
313
- ## Browser Support
314
-
315
- CSS custom properties are supported in all modern browsers:
316
- - Chrome 49+
317
- - Firefox 31+
318
- - Safari 9.1+
319
- - Edge 15+
320
-
321
- For older browsers, consider using a CSS custom properties polyfill or provide fallback values.
322
-
323
-
324
-
1
+ # Theme Tokens & CSS Custom Properties
2
+
3
+ **Last updated:** July 2, 2026 - **Current stable:** v2.4.0
4
+
5
+ Complete reference for all CSS custom properties (CSS variables) available in ngxsmk-datepicker.
6
+
7
+ ## Overview
8
+
9
+ ngxsmk-datepicker uses CSS custom properties for theming, allowing you to customize the appearance without modifying the component's internal styles. All variables are prefixed with `--datepicker-` and can be overridden at any level in your CSS.
10
+
11
+ ## Color Tokens
12
+
13
+ ### Primary Colors
14
+
15
+ | Variable | Default (Light) | Default (Dark) | Description |
16
+ |----------|----------------|----------------|-------------|
17
+ | `--datepicker-primary-color` | `#6d28d9` | `#8b5cf6` | Primary brand color for selected dates, buttons, and focus states |
18
+ | `--datepicker-primary-contrast` | `#ffffff` | `#ffffff` | Text color on primary color background |
19
+
20
+ ### Background Colors
21
+
22
+ | Variable | Default (Light) | Default (Dark) | Description |
23
+ |----------|----------------|----------------|-------------|
24
+ | `--datepicker-background` | `#ffffff` | `#1f2937` | Main background color for calendar container |
25
+ | `--datepicker-range-background` | `#f5f3ff` | `rgba(139, 92, 246, 0.15)` | Background color for date range selection |
26
+ | `--datepicker-hover-background` | `#f3f4f6` | `#374151` | Background color for hover states |
27
+
28
+ ### Text Colors
29
+
30
+ | Variable | Default (Light) | Default (Dark) | Description |
31
+ |----------|----------------|----------------|-------------|
32
+ | `--datepicker-text-color` | `#1f2937` | `#f3f4f6` | Primary text color |
33
+ | `--datepicker-subtle-text-color` | `#6b7280` | `#9ca3af` | Secondary/subtle text color for labels and hints |
34
+
35
+ ### Border Colors
36
+
37
+ | Variable | Default (Light) | Default (Dark) | Description |
38
+ |----------|----------------|----------------|-------------|
39
+ | `--datepicker-border-color` | `#e5e7eb` | `#374151` | Border color for inputs, calendar, and dividers |
40
+
41
+ ## Shadow Tokens
42
+
43
+ | Variable | Default (Light) | Default (Dark) | Description |
44
+ |----------|----------------|----------------|-------------|
45
+ | `--datepicker-shadow-sm` | `0 1px 2px 0 rgba(0, 0, 0, 0.05)` | `0 1px 2px 0 rgba(0, 0, 0, 0.3)` | Small shadow for subtle elevation |
46
+ | `--datepicker-shadow-md` | `0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)` | `0 4px 6px -1px rgba(0, 0, 0, 0.3), 0 2px 4px -1px rgba(0, 0, 0, 0.2)` | Medium shadow for popover and elevated elements |
47
+ | `--datepicker-shadow-lg` | `0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)` | `0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -2px rgba(0, 0, 0, 0.2)` | Large shadow for modal overlays |
48
+ | `--datepicker-shadow-xl` | `0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)` | Same as light | Extra large shadow (not used in dark theme) |
49
+
50
+ ## Typography Tokens
51
+
52
+ | Variable | Default | Description |
53
+ |----------|---------|-------------|
54
+ | `--datepicker-font-size-base` | `14px` | Base font size for most text |
55
+ | `--datepicker-font-size-sm` | `12px` | Small font size for labels and hints |
56
+ | `--datepicker-font-size-lg` | `16px` | Large font size for headers |
57
+ | `--datepicker-font-size-xl` | `18px` | Extra large font size |
58
+ | `--datepicker-line-height` | `1.5` | Line height for text |
59
+
60
+ ## Spacing Tokens
61
+
62
+ | Variable | Default | Description |
63
+ |----------|---------|-------------|
64
+ | `--datepicker-spacing-xs` | `4px` | Extra small spacing |
65
+ | `--datepicker-spacing-sm` | `8px` | Small spacing |
66
+ | `--datepicker-spacing-md` | `12px` | Medium spacing (default) |
67
+ | `--datepicker-spacing-lg` | `16px` | Large spacing |
68
+ | `--datepicker-spacing-xl` | `20px` | Extra large spacing |
69
+ | `--datepicker-spacing-2xl` | `24px` | 2X large spacing |
70
+
71
+ ## Border Radius Tokens
72
+
73
+ | Variable | Default | Description |
74
+ |----------|---------|-------------|
75
+ | `--datepicker-radius-sm` | `6px` | Small border radius |
76
+ | `--datepicker-radius-md` | `8px` | Medium border radius (default) |
77
+ | `--datepicker-radius-lg` | `12px` | Large border radius |
78
+ | `--datepicker-radius-xl` | `16px` | Extra large border radius |
79
+
80
+ ## Transition Tokens
81
+
82
+ | Variable | Default | Description |
83
+ |----------|---------|-------------|
84
+ | `--datepicker-transition` | `opacity 0.15s cubic-bezier(0.4, 0, 0.2, 1), transform 0.15s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.15s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.15s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.15s cubic-bezier(0.4, 0, 0.2, 1)` | Default transition for animations |
85
+
86
+ ## Global CSS Variables Override
87
+
88
+ When CSS variables are defined in a global `:root` selector, the ThemeBuilderService will now properly override them with enhanced specificity and `!important` flags to ensure your theme values take precedence.
89
+
90
+ ```css
91
+ /* When CSS variables are defined in global :root selector */
92
+ :root {
93
+ --datepicker-primary-color: #ff0000;
94
+ --datepicker-primary-contrast: #ffffff;
95
+ }
96
+
97
+ /* ThemeBuilderService will now properly override these global variables */
98
+ ```
99
+
100
+ **Note**: If you have CSS variables defined in a global `:root` selector, ThemeBuilderService will now properly override them with enhanced specificity and `!important` flags to ensure your theme values take precedence.
101
+
102
+ ## Usage Examples
103
+
104
+ ### Basic Theme Override
105
+
106
+ ```css
107
+ /* Override at component level */
108
+ ngxsmk-datepicker {
109
+ --datepicker-primary-color: #3b82f6;
110
+ --datepicker-primary-contrast: #ffffff;
111
+ --datepicker-range-background: #dbeafe;
112
+ }
113
+ ```
114
+
115
+ ### Brand Color Theme
116
+
117
+ ```css
118
+ /* Blue brand theme */
119
+ ngxsmk-datepicker {
120
+ --datepicker-primary-color: #2563eb;
121
+ --datepicker-primary-contrast: #ffffff;
122
+ --datepicker-range-background: #dbeafe;
123
+ --datepicker-border-color: #93c5fd;
124
+ --datepicker-hover-background: #eff6ff;
125
+ }
126
+ ```
127
+
128
+ ### Green Brand Theme
129
+
130
+ ```css
131
+ /* Green brand theme */
132
+ ngxsmk-datepicker {
133
+ --datepicker-primary-color: #10b981;
134
+ --datepicker-primary-contrast: #ffffff;
135
+ --datepicker-range-background: #d1fae5;
136
+ --datepicker-border-color: #6ee7b7;
137
+ --datepicker-hover-background: #ecfdf5;
138
+ }
139
+ ```
140
+
141
+ ### Compact Mode
142
+
143
+ ```css
144
+ /* Compact spacing for dense UIs */
145
+ ngxsmk-datepicker {
146
+ --datepicker-spacing-xs: 2px;
147
+ --datepicker-spacing-sm: 4px;
148
+ --datepicker-spacing-md: 6px;
149
+ --datepicker-spacing-lg: 8px;
150
+ --datepicker-spacing-xl: 12px;
151
+ --datepicker-spacing-2xl: 16px;
152
+ --datepicker-font-size-base: 12px;
153
+ --datepicker-font-size-sm: 10px;
154
+ --datepicker-radius-md: 4px;
155
+ --datepicker-radius-sm: 2px;
156
+ }
157
+ ```
158
+
159
+ ### High Contrast Theme
160
+
161
+ ```css
162
+ /* High contrast for accessibility */
163
+ ngxsmk-datepicker {
164
+ --datepicker-primary-color: #000000;
165
+ --datepicker-primary-contrast: #ffffff;
166
+ --datepicker-background: #ffffff;
167
+ --datepicker-text-color: #000000;
168
+ --datepicker-border-color: #000000;
169
+ --datepicker-hover-background: #f0f0f0;
170
+ --datepicker-range-background: #e0e0e0;
171
+ }
172
+ ```
173
+
174
+ ### Material Design Theme
175
+
176
+ ```css
177
+ /* Material Design inspired */
178
+ ngxsmk-datepicker {
179
+ --datepicker-primary-color: #6200ee;
180
+ --datepicker-primary-contrast: #ffffff;
181
+ --datepicker-range-background: #e1bee7;
182
+ --datepicker-border-color: #b39ddb;
183
+ --datepicker-hover-background: #f3e5f5;
184
+ --datepicker-radius-md: 4px;
185
+ --datepicker-shadow-md: 0 2px 4px rgba(0,0,0,0.2);
186
+ }
187
+ ```
188
+
189
+ ### Tailwind Integration
190
+
191
+ ```css
192
+ /* Using Tailwind CSS variables */
193
+ ngxsmk-datepicker {
194
+ --datepicker-primary-color: var(--tw-color-blue-600);
195
+ --datepicker-primary-contrast: var(--tw-color-white);
196
+ --datepicker-background: var(--tw-color-white);
197
+ --datepicker-text-color: var(--tw-color-gray-900);
198
+ --datepicker-border-color: var(--tw-color-gray-300);
199
+ --datepicker-hover-background: var(--tw-color-gray-100);
200
+ }
201
+ ```
202
+
203
+ ### Design System Integration (TokiForge)
204
+
205
+ ```css
206
+ /* TokiForge design tokens */
207
+ ngxsmk-datepicker {
208
+ --datepicker-primary-color: var(--toki-color-primary);
209
+ --datepicker-primary-contrast: var(--toki-color-on-primary);
210
+ --datepicker-background: var(--toki-color-surface);
211
+ --datepicker-text-color: var(--toki-color-on-surface);
212
+ --datepicker-border-color: var(--toki-color-outline);
213
+ --datepicker-hover-background: var(--toki-color-surface-variant);
214
+ --datepicker-spacing-md: var(--toki-spacing-md);
215
+ --datepicker-radius-md: var(--toki-radius-md);
216
+ }
217
+ ```
218
+
219
+ ## Scoped Theming
220
+
221
+ You can apply different themes to different datepicker instances:
222
+
223
+ ```css
224
+ /* Theme for specific datepicker */
225
+ .my-custom-datepicker {
226
+ --datepicker-primary-color: #ec4899;
227
+ --datepicker-range-background: #fce7f3;
228
+ }
229
+
230
+ /* Another theme for different datepicker */
231
+ .my-other-datepicker {
232
+ --datepicker-primary-color: #06b6d4;
233
+ --datepicker-range-background: #cffafe;
234
+ }
235
+ ```
236
+
237
+ ```html
238
+ <ngxsmk-datepicker class="my-custom-datepicker" mode="single"></ngxsmk-datepicker>
239
+ <ngxsmk-datepicker class="my-other-datepicker" mode="range"></ngxsmk-datepicker>
240
+ ```
241
+
242
+ ## Dark Theme
243
+
244
+ The component automatically applies dark theme variables when `[theme]="'dark'"` is set:
245
+
246
+ ```html
247
+ <ngxsmk-datepicker [theme]="'dark'"></ngxsmk-datepicker>
248
+ ```
249
+
250
+ You can also override dark theme variables:
251
+
252
+ ```css
253
+ ngxsmk-datepicker.dark-theme {
254
+ --datepicker-primary-color: #a78bfa;
255
+ --datepicker-background: #111827;
256
+ }
257
+ ```
258
+
259
+ ## Complete Variable List
260
+
261
+ For reference, here's the complete list of all CSS custom properties:
262
+
263
+ ```css
264
+ /* Colors */
265
+ --datepicker-primary-color
266
+ --datepicker-primary-contrast
267
+ --datepicker-range-background
268
+ --datepicker-background
269
+ --datepicker-text-color
270
+ --datepicker-subtle-text-color
271
+ --datepicker-border-color
272
+ --datepicker-hover-background
273
+
274
+ /* Shadows */
275
+ --datepicker-shadow-sm
276
+ --datepicker-shadow-md
277
+ --datepicker-shadow-lg
278
+ --datepicker-shadow-xl
279
+
280
+ /* Typography */
281
+ --datepicker-font-size-base
282
+ --datepicker-font-size-sm
283
+ --datepicker-font-size-lg
284
+ --datepicker-font-size-xl
285
+ --datepicker-line-height
286
+
287
+ /* Spacing */
288
+ --datepicker-spacing-xs
289
+ --datepicker-spacing-sm
290
+ --datepicker-spacing-md
291
+ --datepicker-spacing-lg
292
+ --datepicker-spacing-xl
293
+ --datepicker-spacing-2xl
294
+
295
+ /* Border Radius */
296
+ --datepicker-radius-sm
297
+ --datepicker-radius-md
298
+ --datepicker-radius-lg
299
+ --datepicker-radius-xl
300
+
301
+ /* Transitions */
302
+ --datepicker-transition
303
+ ```
304
+
305
+ ## Best Practices
306
+
307
+ 1. **Use CSS Variables**: Always use CSS custom properties for theming, not direct style overrides
308
+ 2. **Scope Appropriately**: Apply theme variables at the appropriate scope (component, page, or global)
309
+ 3. **Maintain Contrast**: Ensure sufficient contrast ratios for accessibility (WCAG AA minimum)
310
+ 4. **Test Dark Mode**: Always test your custom themes in both light and dark modes
311
+ 5. **Use Design Tokens**: Integrate with your design system's token system when available
312
+
313
+ ## Browser Support
314
+
315
+ CSS custom properties are supported in all modern browsers:
316
+ - Chrome 49+
317
+ - Firefox 31+
318
+ - Safari 9.1+
319
+ - Edge 15+
320
+
321
+ For older browsers, consider using a CSS custom properties polyfill or provide fallback values.
322
+
323
+
324
+