@keenmate/web-daterangepicker 1.7.0-rc01 → 1.8.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.
@@ -0,0 +1,331 @@
1
+ /* ==============================================================================
2
+ CSS CUSTOM PROPERTIES (:host level)
3
+ ==============================================================================
4
+ This file defines all CSS custom properties at the :host level, making them:
5
+ - Inspectable in browser DevTools
6
+ - Overridable from outside Shadow DOM
7
+ - Self-documenting in compiled CSS
8
+
9
+ Usage from outside Shadow DOM:
10
+ web-daterangepicker {
11
+ --drp-accent-color: #10b981;
12
+ --drp-border-radius: 0.5rem;
13
+ }
14
+ ============================================================================== */
15
+
16
+ :host,
17
+ :root {
18
+ /* ==========================================================================
19
+ BASE REM UNIT
20
+ ==========================================================================
21
+ Internal 10px-based unit for clean math. Override to scale the component.
22
+ Default 10px produces same visual output as standard 16px rem.
23
+ Set to 1rem in Pure Admin (10px base) to scale with document.
24
+
25
+ IMPORTANT: For web components, set --drp-rem on the <web-daterangepicker>
26
+ element itself or on :root. Setting on wrapper divs won't work due to
27
+ shadow DOM encapsulation. */
28
+ --drp-rem: 10px;
29
+
30
+ /* ==========================================================================
31
+ FONT FAMILY (set at :host so all shadow DOM content inherits)
32
+ ========================================================================== */
33
+ font-family: var(--drp-font-family, var(--base-font-family, inherit));
34
+
35
+ /* ==========================================================================
36
+ SPACING SCALE
37
+ ========================================================================== */
38
+ --drp-spacing-xs: calc(0.4 * var(--drp-rem)); /* 4px */
39
+ --drp-spacing-sm: calc(0.8 * var(--drp-rem)); /* 8px */
40
+ --drp-spacing-md: calc(1.6 * var(--drp-rem)); /* 16px */
41
+ --drp-spacing-lg: calc(2.4 * var(--drp-rem)); /* 24px */
42
+ --drp-spacing-xl: calc(3.2 * var(--drp-rem)); /* 32px */
43
+
44
+ /* ==========================================================================
45
+ TYPOGRAPHY SCALE (with theme-designer integration)
46
+ ==========================================================================
47
+ Priority chain: --drp-* → --base-* → calc default
48
+ Theme-designer outputs unitless multipliers (e.g., --base-font-size-sm: 1.4)
49
+ Component computes: calc(1.4 * 10px) = 14px */
50
+
51
+ /* Font Sizes (unitless multipliers × --drp-rem) */
52
+ --drp-font-size-2xs: calc(var(--base-font-size-2xs, 1) * var(--drp-rem)); /* 10px */
53
+ --drp-font-size-xs: calc(var(--base-font-size-xs, 1.2) * var(--drp-rem)); /* 12px */
54
+ --drp-font-size-sm: calc(var(--base-font-size-sm, 1.4) * var(--drp-rem)); /* 14px */
55
+ --drp-font-size-base: calc(var(--base-font-size-base, 1.6) * var(--drp-rem)); /* 16px */
56
+ --drp-font-size-lg: calc(var(--base-font-size-lg, 1.8) * var(--drp-rem)); /* 18px */
57
+ --drp-font-size-xl: calc(var(--base-font-size-xl, 2) * var(--drp-rem)); /* 20px */
58
+ --drp-font-size-2xl: calc(var(--base-font-size-2xl, 2.4) * var(--drp-rem)); /* 24px */
59
+
60
+ /* Font Weights (reference theme-designer base variables) */
61
+ --drp-font-weight-normal: var(--base-font-weight-normal, 400);
62
+ --drp-font-weight-medium: var(--base-font-weight-medium, 500);
63
+ --drp-font-weight-semibold: var(--base-font-weight-semibold, 600);
64
+
65
+ /* Line Heights (reference theme-designer base variables) */
66
+ --drp-line-height-tight: var(--base-line-height-tight, 1.25);
67
+ --drp-line-height-normal: var(--base-line-height-normal, 1.5);
68
+ --drp-line-height-relaxed: var(--base-line-height-relaxed, 1.75);
69
+
70
+ /* ==========================================================================
71
+ COLORS & THEME
72
+ ==========================================================================
73
+ Color variables follow this priority chain:
74
+ 1. External override: --drp-accent-color: #custom
75
+ 2. Base theme value: var(--base-accent-color)
76
+ 3. Hardcoded default fallback */
77
+
78
+ /* Core Colors */
79
+ --drp-dropdown-background: var(--base-dropdown-background, #ffffff);
80
+ --drp-border-color: var(--base-border-color, #e5e7eb);
81
+ --drp-primary-bg: var(--base-primary-bg, #f3f4f6);
82
+ --drp-primary-bg-hover: var(--base-primary-bg-hover, #e5e7eb);
83
+
84
+ /* Accent Colors */
85
+ --drp-accent-color: var(--base-accent-color, #3b82f6);
86
+ --drp-accent-color-hover: var(--base-accent-color-hover, #2563eb);
87
+
88
+ /* Text Colors */
89
+ --drp-text-primary: var(--base-text-color-1, #111827);
90
+ --drp-text-secondary: var(--base-text-color-3, #6b7280);
91
+ --drp-text-on-accent: var(--base-text-on-accent, #ffffff);
92
+ --drp-button-text-color: var(--drp-text-on-accent);
93
+
94
+ /* Tooltip Colors */
95
+ --drp-tooltip-background: var(--base-tooltip-background, #111827);
96
+ --drp-tooltip-text-color: var(--base-tooltip-text-color, #ffffff);
97
+
98
+ /* Loading Overlay */
99
+ --drp-loading-overlay-background: rgba(255, 255, 255, 0.8);
100
+ --drp-loading-spinner-color: var(--drp-border-color);
101
+ --drp-loading-spinner-accent: var(--drp-accent-color);
102
+
103
+ /* ==========================================================================
104
+ BORDER & SHADOW
105
+ ========================================================================== */
106
+ --drp-border-width-base: 1px;
107
+
108
+ /* Border Radius (unitless multipliers from theme-designer, multiplied by --drp-rem) */
109
+ --drp-border-radius-sm: calc(var(--base-border-radius-sm, 0.4) * var(--drp-rem)); /* 4px */
110
+ --drp-border-radius-md: calc(var(--base-border-radius-md, 0.6) * var(--drp-rem)); /* 6px (base) */
111
+ --drp-border-radius-lg: calc(var(--base-border-radius-lg, 0.8) * var(--drp-rem)); /* 8px */
112
+ --drp-border-radius: var(--drp-border-radius-md);
113
+
114
+ --drp-shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
115
+
116
+ /* ==========================================================================
117
+ TRANSITIONS & ANIMATIONS
118
+ ========================================================================== */
119
+ --drp-transition-fast: 150ms;
120
+ --drp-easing-snappy: cubic-bezier(0.4, 0.0, 0.2, 1);
121
+
122
+ /* ==========================================================================
123
+ Z-INDEX LAYERS
124
+ ========================================================================== */
125
+ --drp-z-index-dropdown: 9500;
126
+ --drp-z-index-tooltip: 9999;
127
+
128
+ /* ==========================================================================
129
+ LAYOUT & DIMENSIONS
130
+ ========================================================================== */
131
+ --drp-input-padding-h: calc(1.2 * var(--drp-rem)); /* 12px */
132
+ --drp-grid-columns: 3;
133
+ --drp-grid-rows: 2;
134
+
135
+ /* ==========================================================================
136
+ OPACITY VALUES
137
+ ========================================================================== */
138
+ --drp-opacity-disabled: 0.6;
139
+ --drp-opacity-other-month: 0.5;
140
+ --drp-opacity-hover: 0.8;
141
+ --drp-opacity-dragging: 0.7;
142
+
143
+ /* ==========================================================================
144
+ INPUT FIELD SEMANTIC VARIABLES
145
+ ========================================================================== */
146
+ --drp-input-background: var(--base-input-background, var(--drp-dropdown-background));
147
+ --drp-input-color: var(--base-input-color, var(--drp-text-primary));
148
+ --drp-input-border-color: var(--base-input-border-color, var(--drp-border-color));
149
+ --drp-input-border-color-hover: var(--base-input-border-color-hover, var(--drp-accent-color));
150
+ --drp-input-border-color-focus: var(--base-input-border-color-focus, var(--drp-accent-color));
151
+ --drp-input-placeholder-color: var(--base-input-placeholder-color, var(--drp-text-secondary));
152
+ --drp-input-background-disabled: var(--base-input-background-disabled, var(--drp-primary-bg));
153
+
154
+ /* Input Focus State */
155
+ --drp-input-focus-shadow-color: rgba(59, 130, 246, 0.1);
156
+ --drp-input-focus-shadow-size: 3px;
157
+ --drp-input-icon-opacity: 0.6;
158
+
159
+ /* ==========================================================================
160
+ INPUT SIZE VARIANTS (BASE VALUES)
161
+ ==========================================================================
162
+ Five size variants for the input element (xs, sm, md, lg, xl) */
163
+
164
+ --drp-input-size-xs-font: var(--drp-font-size-xs);
165
+ --drp-input-size-xs-padding-v: var(--drp-spacing-xs);
166
+ --drp-input-size-xs-padding-h: calc(0.8 * var(--drp-rem)); /* 8px */
167
+ --drp-input-size-xs-height: calc(var(--base-input-size-xs-height, 3.1) * var(--drp-rem)); /* 31px */
168
+ --drp-input-size-xs-icon-size: 0.75em;
169
+
170
+ --drp-input-size-sm-font: calc(1.3 * var(--drp-rem)); /* 13px */
171
+ --drp-input-size-sm-padding-v: calc(0.5 * var(--drp-rem)); /* 5px */
172
+ --drp-input-size-sm-padding-h: var(--drp-spacing-sm);
173
+ --drp-input-size-sm-height: calc(var(--base-input-size-sm-height, 3.3) * var(--drp-rem)); /* 33px */
174
+ --drp-input-size-sm-icon-size: 0.875em;
175
+
176
+ --drp-input-size-md-font: calc(1.4 * var(--drp-rem)); /* 14px */
177
+ --drp-input-size-md-padding-v: var(--drp-spacing-sm);
178
+ --drp-input-size-md-padding-h: calc(1.2 * var(--drp-rem)); /* 12px */
179
+ --drp-input-size-md-height: calc(var(--base-input-size-md-height, 3.5) * var(--drp-rem)); /* 35px */
180
+ --drp-input-size-md-icon-size: 1em;
181
+
182
+ --drp-input-size-lg-font: calc(1.6 * var(--drp-rem)); /* 16px */
183
+ --drp-input-size-lg-padding-v: calc(1.0 * var(--drp-rem)); /* 10px */
184
+ --drp-input-size-lg-padding-h: calc(1.4 * var(--drp-rem)); /* 14px */
185
+ --drp-input-size-lg-height: calc(var(--base-input-size-lg-height, 3.8) * var(--drp-rem)); /* 38px */
186
+ --drp-input-size-lg-icon-size: 1.125em;
187
+
188
+ --drp-input-size-xl-font: calc(1.8 * var(--drp-rem)); /* 18px */
189
+ --drp-input-size-xl-padding-v: calc(1.2 * var(--drp-rem)); /* 12px */
190
+ --drp-input-size-xl-padding-h: calc(1.6 * var(--drp-rem)); /* 16px */
191
+ --drp-input-size-xl-height: calc(var(--base-input-size-xl-height, 4.1) * var(--drp-rem)); /* 41px */
192
+ --drp-input-size-xl-icon-size: 1.25em;
193
+
194
+ /* ==========================================================================
195
+ HEADER & NAVIGATION SEMANTIC VARIABLES
196
+ ========================================================================== */
197
+ --drp-header-text-color: var(--drp-text-primary);
198
+ --drp-header-bg-hover: var(--drp-primary-bg);
199
+ --drp-header-bg-active: var(--drp-primary-bg-hover);
200
+
201
+ --drp-nav-text-color: var(--drp-text-primary);
202
+ --drp-nav-border-color: var(--drp-border-color);
203
+ --drp-nav-bg-hover: var(--drp-primary-bg);
204
+ --drp-nav-bg-active: var(--drp-primary-bg-hover);
205
+ --drp-nav-border-hover: var(--drp-accent-color);
206
+
207
+ /* Navigation Button Dimensions */
208
+ --drp-nav-size: calc(3.2 * var(--drp-rem)); /* 32px */
209
+
210
+ /* Rolling Selector */
211
+ --drp-rolling-bg: var(--drp-primary-bg);
212
+ --drp-rolling-border-color: var(--drp-border-color);
213
+ --drp-rolling-scrollbar-width: 6px;
214
+ --drp-rolling-scrollbar-thumb: var(--drp-border-color);
215
+ --drp-rolling-scrollbar-thumb-hover: var(--drp-accent-color);
216
+ --drp-rolling-item-bg-hover: var(--drp-primary-bg);
217
+ --drp-rolling-item-bg-selected: var(--drp-accent-color);
218
+ --drp-rolling-item-color-selected: var(--drp-text-on-accent);
219
+ --drp-rolling-item-bg-selected-hover: var(--drp-accent-color-hover);
220
+ --drp-rolling-item-justify-content: center;
221
+ --drp-rolling-item-min-height: calc(3.2 * var(--drp-rem)); /* 32px */
222
+ --drp-rolling-item-padding-v: var(--drp-spacing-xs);
223
+ --drp-rolling-item-padding-h: var(--drp-spacing-md);
224
+ --drp-rolling-item-font-size: var(--drp-font-size-sm);
225
+ --drp-rolling-item-font-weight-selected: var(--drp-font-weight-semibold);
226
+
227
+ /* ==========================================================================
228
+ CALENDAR GRID & DAY CELLS SEMANTIC VARIABLES
229
+ ========================================================================== */
230
+ --drp-weekday-color: var(--drp-text-secondary);
231
+
232
+ --drp-day-text-color: var(--drp-text-primary);
233
+ --drp-day-bg-hover: var(--drp-primary-bg);
234
+ --drp-day-border-hover: var(--drp-accent-color);
235
+ --drp-day-today-border: var(--drp-accent-color);
236
+ --drp-day-selected-bg: var(--drp-accent-color);
237
+ --drp-day-selected-color: var(--drp-text-on-accent);
238
+ --drp-day-selected-bg-hover: var(--drp-accent-color-hover);
239
+ --drp-day-focused-outline: var(--drp-accent-color);
240
+ --drp-day-disabled-color: var(--drp-text-secondary);
241
+ --drp-day-other-month-color: var(--drp-text-secondary);
242
+ --drp-day-range-bg: var(--drp-accent-color);
243
+ --drp-day-range-color: var(--drp-text-on-accent);
244
+
245
+ /* Day Cell Dimensions & Borders */
246
+ --drp-day-border-width: 2px;
247
+ --drp-day-border-color: transparent;
248
+ --drp-day-focused-outline-width: 2px;
249
+ --drp-day-focused-outline-offset: 2px;
250
+
251
+ /* Day Range Opacity Values */
252
+ --drp-day-in-range-bg-opacity: 0.15;
253
+ --drp-day-in-range-hover-bg-opacity: 0.25;
254
+ --drp-day-drag-preview-bg-opacity: 0.30;
255
+ --drp-day-drag-preview-edge-bg-opacity: 0.60;
256
+
257
+ /* Day Disabled Pattern */
258
+ --drp-day-disabled-pattern-opacity: 0.1;
259
+
260
+ /* Day Dragging */
261
+ --drp-day-dragging-scale: 1.1;
262
+ --drp-day-drag-preview-border-style: dashed;
263
+ --drp-day-drag-invalid-bg: #ef4444;
264
+ --drp-day-drag-invalid-bg-opacity: 0.20;
265
+
266
+ /* Special Date Colors (examples) */
267
+ --drp-holiday-color: #ef4444;
268
+ --drp-holiday-bg-opacity: 0.10;
269
+ --drp-holiday-hover-bg-opacity: 0.20;
270
+ --drp-event-color: #10b981;
271
+ --drp-event-bg-opacity: 0.10;
272
+ --drp-event-hover-bg-opacity: 0.20;
273
+
274
+ /* ==========================================================================
275
+ SUMMARY & ACTIONS SEMANTIC VARIABLES
276
+ ========================================================================== */
277
+ --drp-summary-text-color: var(--drp-text-secondary);
278
+ --drp-summary-border-color: var(--drp-border-color);
279
+ --drp-summary-count-color: var(--drp-accent-color);
280
+
281
+ --drp-button-border-color: var(--drp-border-color);
282
+ --drp-button-bg-hover: var(--drp-primary-bg);
283
+ --drp-button-border-hover: var(--drp-accent-color);
284
+ --drp-button-today-color: var(--drp-accent-color);
285
+ --drp-button-clear-color: var(--drp-text-secondary);
286
+ --drp-button-cancel-color: var(--drp-text-secondary);
287
+ --drp-button-apply-bg: var(--drp-accent-color);
288
+ --drp-button-apply-color: var(--drp-button-text-color);
289
+ --drp-button-apply-border: var(--drp-accent-color);
290
+ --drp-button-apply-bg-hover: var(--drp-accent-color-hover);
291
+
292
+ /* ==========================================================================
293
+ BADGE SYSTEM SEMANTIC VARIABLES
294
+ ========================================================================== */
295
+ --drp-badge-font-size: var(--drp-font-size-2xs);
296
+ --drp-badge-padding-v: 1px;
297
+ --drp-badge-padding-h: 2px;
298
+ --drp-badge-border-radius: 2px;
299
+ --drp-badge-max-height: var(--drp-font-size-base);
300
+ --drp-badge-row-height: var(--drp-badge-max-height);
301
+
302
+ --drp-badge-number-bg: var(--drp-accent-color);
303
+ --drp-badge-number-color: var(--drp-text-on-accent);
304
+ --drp-badge-count-bg: #ef4444;
305
+ --drp-badge-count-color: #ffffff;
306
+ --drp-badge-text-bg: var(--drp-text-secondary);
307
+ --drp-badge-text-color: #ffffff;
308
+
309
+ /* ==========================================================================
310
+ UNIFIED NAV SEMANTIC VARIABLES (Multi-Month)
311
+ ========================================================================== */
312
+ --drp-unified-range-text-color: var(--drp-text-primary);
313
+ --drp-unified-range-bg-hover: var(--drp-primary-bg);
314
+ --drp-unified-range-bg-active: var(--drp-primary-bg-hover);
315
+ --drp-unified-month-color: var(--drp-text-secondary);
316
+ --drp-unified-rolling-disabled-color: var(--drp-text-secondary);
317
+
318
+ /* ==========================================================================
319
+ TOOLTIP DIMENSIONS
320
+ ========================================================================== */
321
+ --drp-tooltip-line-height: 1.4;
322
+ --drp-tooltip-max-width: 200px;
323
+ --drp-tooltip-arrow-size: 8px;
324
+
325
+ /* ==========================================================================
326
+ CALENDAR DIMENSIONS
327
+ ========================================================================== */
328
+ --drp-month-min-width: 280px;
329
+ --drp-month-min-width-inline: 250px;
330
+ --drp-calendar-max-width: calc(100vw - 2rem);
331
+ }
@@ -0,0 +1,29 @@
1
+ /* ==============================================================================
2
+ DATE RANGE PICKER COMPONENT - MAIN ENTRY POINT
3
+ ==============================================================================
4
+
5
+ File structure:
6
+ ├── _variables.css - CSS custom properties at :host level
7
+ ├── _base.css - Base container, input field, calendar popup
8
+ ├── _header-navigation.css - Header, month/year display, nav buttons, rolling selector
9
+ ├── _calendar-grid.css - Weekdays, day cells, all day states
10
+ ├── _badges.css - Badge system for events/markers
11
+ ├── _summary-actions.css - Selection summary and action buttons
12
+ ├── _tooltips.css - Floating UI tooltips
13
+ ├── _loading.css - Loading overlay and spinner for async validation
14
+ ├── _modifiers.css - Transitions, inline mode
15
+ └── main.css - This file (imports all partials)
16
+
17
+ Import order matters - variables must be first, modifiers should be last
18
+
19
+ ============================================================================== */
20
+
21
+ @import './_variables.css';
22
+ @import './_base.css';
23
+ @import './_header-navigation.css';
24
+ @import './_calendar-grid.css';
25
+ @import './_badges.css';
26
+ @import './_summary-actions.css';
27
+ @import './_tooltips.css';
28
+ @import './_loading.css';
29
+ @import './_modifiers.css';
@@ -1,70 +0,0 @@
1
- // ==============================================================================
2
- // DATE RANGE PICKER - BADGES
3
- // ==============================================================================
4
- // Badge system for displaying event markers, counts, and labels on calendar days
5
-
6
- @use 'variables' as *;
7
-
8
- // ==============================================================================
9
- // BADGE ROWS (GRID-BASED SYSTEM)
10
- // ==============================================================================
11
-
12
- .drp-date-picker__badge-row {
13
- display: grid;
14
- grid-template-columns: repeat(7, 1fr);
15
- gap: var(--drp-spacing-xs);
16
- max-height: var(--drp-badge-row-height);
17
- min-height: var(--drp-badge-row-height);
18
- }
19
-
20
- .drp-date-picker__badge-cell {
21
- display: flex;
22
- align-items: center;
23
- justify-content: center;
24
- font-size: var(--drp-font-size-2xs);
25
- padding: $drp-badge-padding-v $drp-badge-padding-h;
26
- border-radius: $drp-badge-border-radius;
27
- cursor: pointer;
28
- height: 100%;
29
- max-height: var(--drp-badge-row-height);
30
-
31
- &:empty {
32
- visibility: hidden;
33
- }
34
-
35
- &:hover:not(:empty) {
36
- transform: scale(1.05);
37
- }
38
- }
39
-
40
- // ==============================================================================
41
- // BADGE TYPE STYLES
42
- // ==============================================================================
43
-
44
- // Number Badge (e.g., day number, count)
45
- .drp-date-picker__badge-cell.badge-number {
46
- background-color: var(--drp-badge-number-bg);
47
- color: var(--drp-badge-number-color);
48
- font-size: calc(1.12 * var(--drp-rem)); // 11.2px (was 0.7rem)
49
- font-weight: 600;
50
- }
51
-
52
- // Count Badge (e.g., number of events)
53
- .drp-date-picker__badge-cell.badge-count {
54
- background-color: var(--drp-badge-count-bg);
55
- color: var(--drp-badge-count-color);
56
- font-size: calc(1.12 * var(--drp-rem)); // 11.2px (was 0.7rem)
57
- font-weight: 700;
58
- }
59
-
60
- // Text Badge (generic)
61
- // Note: Background colors for specific badge types (holiday, event, birthday, etc.)
62
- // should be defined by the application, not the component library.
63
- // See index.html examples for how to customize badge colors for your use case.
64
- .drp-date-picker__badge-cell.badge-text {
65
- background-color: var(--drp-badge-text-bg);
66
- color: var(--drp-badge-text-color);
67
- font-size: calc(1.04 * var(--drp-rem)); // 10.4px (was 0.65rem)
68
- font-weight: 700;
69
- text-transform: uppercase;
70
- }