@keenmate/pure-admin-core 1.1.0 → 1.1.2

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.
@@ -260,6 +260,16 @@ html.font-size-4xl {
260
260
  white-space: nowrap;
261
261
  }
262
262
 
263
+ // Link styling
264
+ .pa-link {
265
+ color: $accent-color;
266
+ text-decoration: none;
267
+
268
+ &:hover {
269
+ text-decoration: underline;
270
+ }
271
+ }
272
+
263
273
  // Component showcase styling
264
274
  .component-showcase {
265
275
  display: flex;
@@ -2,293 +2,20 @@
2
2
  * Maps Pure Admin SCSS variables to web component CSS custom properties
3
3
  *
4
4
  * @keenmate/web-multiselect: Uses --base-* variables from _base-css-variables.scss
5
- * @keenmate/web-daterangepicker: Uses --drp-* variables defined below
6
- */
7
- @use '../variables' as *;
8
- /*
5
+ * @keenmate/web-daterangepicker: Uses --base-* variables from _base-css-variables.scss
6
+ *
7
+ * NOTE: Both components use the --base-* CSS variable system with built-in fallback chains:
8
+ * 1. External override: --ms-accent-color: #custom
9
+ * 2. Theme base value: var(--base-accent-color)
10
+ * 3. Hardcoded default: #3b82f6
11
+ *
12
+ * This means Pure Admin only needs to set --base-* variables (via the
13
+ * output-base-css-variables mixin) and the components will automatically
14
+ * pick up the theme colors.
9
15
  */
10
16
 
11
- /* ========================================
12
- Date Range Picker Variables (--drp-*)
13
- v1.3.0+ Semantic Variable Architecture
14
-
15
- NOTE: Variables set directly on web-daterangepicker
16
- element to pierce shadow DOM (custom properties
17
- cascade into shadow DOM when set on host element)
18
- ======================================== */
19
-
20
- web-daterangepicker {
21
- /* ===== BASE PRIMITIVES ===== */
22
-
23
- /* Colors */
24
- --drp-accent-color: #{$accent-color};
25
- --drp-primary-bg: #{$btn-primary-bg};
26
- --drp-primary-bg-hover: #{$btn-primary-bg-hover};
27
- --drp-text-primary: var(--pa-text-color-1);
28
- --drp-text-secondary: var(--pa-text-color-2);
29
- --drp-border-color: #{$border-color};
30
- --drp-card-bg: var(--pa-card-bg);
31
- --drp-hover-bg: #{$table-hover-bg};
32
-
33
- /* Spacing */
34
- --drp-spacing-xs: #{$spacing-xs};
35
- --drp-spacing-sm: #{$spacing-sm};
36
- --drp-spacing-md: #{$spacing-md};
37
- --drp-spacing-base: #{$spacing-base};
38
- --drp-spacing-lg: #{$spacing-lg};
39
- --drp-spacing-xl: #{$spacing-xl};
40
-
41
- /* Typography */
42
- --drp-font-size-xs: #{$font-size-xs};
43
- --drp-font-size-sm: #{$font-size-sm};
44
- --drp-font-size-base: #{$font-size-base};
45
- --drp-font-size-lg: #{$font-size-lg};
46
- --drp-font-weight-normal: #{$font-weight-normal};
47
- --drp-font-weight-medium: #{$font-weight-medium};
48
- --drp-font-weight-semibold: #{$font-weight-semibold};
49
-
50
- /* Animations */
51
- --drp-transition-fast: #{$transition-fast};
52
- --drp-transition-normal: #{$transition-normal};
53
- --drp-easing-snappy: #{$easing-snappy};
54
- --drp-easing-smooth: #{$easing-smooth};
55
-
56
- /* Shadows */
57
- --drp-shadow-sm: #{$shadow-sm};
58
- --drp-shadow-md: #{$shadow-md};
59
- --drp-shadow-lg: #{$shadow-lg};
60
- --drp-shadow-xl: #{$shadow-xl};
61
-
62
- /* Border radius */
63
- --drp-border-radius: #{$border-radius};
64
- --drp-border-radius-sm: #{$border-radius-sm};
65
- --drp-border-radius-lg: #{$border-radius-lg};
66
-
67
- /* Border width */
68
- --drp-border-width-base: #{$border-width-base};
69
- --drp-border-width-medium: #{$border-width-medium};
70
-
71
- /* ===== INPUT FIELD SEMANTIC VARIABLES ===== */
72
-
73
- /* Input colors */
74
- --drp-input-background: var(--pa-input-bg);
75
- --drp-input-color: var(--pa-text-color-1);
76
- --drp-input-border-color: #{$input-border};
77
- --drp-input-border-color-hover: #{$accent-color};
78
- --drp-input-border-color-focus: #{$accent-color};
79
- --drp-input-placeholder-color: var(--pa-text-color-2);
80
- --drp-input-disabled-background: var(--pa-input-bg);
81
- --drp-input-disabled-color: var(--pa-text-color-2);
82
-
83
- /* Input focus effects */
84
- --drp-input-focus-shadow-color: #{$accent-light};
85
- --drp-input-focus-shadow-size: #{$focus-ring-width};
86
-
87
- /* Input icon */
88
- --drp-input-icon-color: var(--pa-text-color-2);
89
- --drp-input-icon-opacity: 1;
90
-
91
- /* Input size variants - matched to Pure Admin .pa-input sizes (10px base)
92
- Heights: xs=31px, sm=33px, md=35px, lg=38px, xl=41px */
93
-
94
- /* Extra Small (31px) */
95
- --drp-input-size-xs-font: #{$font-size-xs};
96
- --drp-input-size-xs-padding-v: #{$input-padding-v};
97
- --drp-input-size-xs-padding-h: #{$input-padding-h};
98
- --drp-input-size-xs-height: 3.1rem; /* 31px (10px base) */
99
- --drp-input-size-xs-icon-size: 1.2rem; /* 12px (10px base) */
100
-
101
- /* Small (33px - same height as xs, slightly larger icon) */
102
- --drp-input-size-sm-font: #{$font-size-xs};
103
- --drp-input-size-sm-padding-v: #{$input-padding-v};
104
- --drp-input-size-sm-padding-h: #{$input-padding-h};
105
- --drp-input-size-sm-height: 3.3rem; /* 33px (10px base) */
106
- --drp-input-size-sm-icon-size: 1.4rem; /* 14px (10px base) */
107
-
108
- /* Medium/Default (maps to pa-input: 35px) */
109
- --drp-input-size-md-font: #{$font-size-sm};
110
- --drp-input-size-md-padding-v: #{$input-padding-v};
111
- --drp-input-size-md-padding-h: #{$input-padding-h};
112
- --drp-input-size-md-height: 3.5rem; /* 35px (10px base) */
113
- --drp-input-size-md-icon-size: 1.6rem; /* 16px (10px base) */
114
-
115
- /* Large (maps to pa-input--lg: 38px) */
116
- --drp-input-size-lg-font: #{$font-size-base};
117
- --drp-input-size-lg-padding-v: #{$input-padding-v};
118
- --drp-input-size-lg-padding-h: #{$input-padding-h};
119
- --drp-input-size-lg-height: 3.8rem; /* 38px (10px base) */
120
- --drp-input-size-lg-icon-size: 1.8rem; /* 18px (10px base) */
121
-
122
- /* Extra Large (maps to pa-input--xl: 41px) */
123
- --drp-input-size-xl-font: #{$font-size-lg};
124
- --drp-input-size-xl-padding-v: #{$input-padding-v};
125
- --drp-input-size-xl-padding-h: #{$input-padding-h};
126
- --drp-input-size-xl-height: 4.1rem; /* 41px (10px base) */
127
- --drp-input-size-xl-icon-size: 2rem; /* 20px (10px base) */
128
-
129
- /* ===== CALENDAR CONTAINER ===== */
130
-
131
- --drp-calendar-bg: var(--pa-card-bg);
132
- --drp-calendar-border: #{$border-color};
133
- --drp-calendar-shadow: #{$shadow-xl};
134
- --drp-calendar-border-radius: #{$border-radius};
135
- --drp-calendar-padding: #{$spacing-base};
136
- --drp-calendar-z-index: #{$z-index-dropdown};
137
-
138
- /* ===== HEADER ===== */
139
-
140
- --drp-header-padding: #{$spacing-sm} #{$spacing-md};
141
- --drp-header-font-size: #{$font-size-base};
142
- --drp-header-font-weight: #{$font-weight-semibold};
143
- --drp-header-text-color: var(--pa-text-color-1);
144
- --drp-header-bg-hover: #{$accent-hover};
145
- --drp-header-bg-active: #{$accent-light};
146
-
147
- /* ===== NAVIGATION ===== */
148
-
149
- --drp-nav-btn-size: 3.2rem; /* 32px (10px base) */
150
- --drp-nav-text-color: var(--pa-text-color-1);
151
- --drp-nav-border-color: #{$border-color};
152
- --drp-nav-bg-hover: #{$accent-hover};
153
- --drp-nav-bg-active: #{$accent-light};
154
- --drp-nav-border-hover: #{$accent-color};
155
-
156
- /* ===== WEEKDAY HEADER ===== */
157
-
158
- --drp-weekday-font-size: #{$font-size-xs};
159
- --drp-weekday-font-weight: #{$font-weight-semibold};
160
- --drp-weekday-color: var(--pa-text-color-2);
161
- --drp-weekday-padding: #{$spacing-xs};
162
-
163
- /* ===== CALENDAR GRID ===== */
164
-
165
- --drp-day-size: 3.6rem; /* 36px (10px base) */
166
- --drp-day-font-size: #{$font-size-sm};
167
- --drp-day-border-radius: #{$border-radius-sm};
168
-
169
- /* Day states */
170
- --drp-day-text-color: var(--pa-text-color-1);
171
- --drp-day-bg-hover: #{$accent-hover};
172
- --drp-day-border-hover: transparent;
173
-
174
- /* Today indicator */
175
- --drp-day-today-border: #{$accent-color};
176
-
177
- /* Selected state */
178
- --drp-day-selected-bg: #{$accent-color};
179
- --drp-day-selected-color: #ffffff;
180
-
181
- /* Range state */
182
- --drp-day-range-bg: #{$accent-light};
183
- --drp-day-range-text: var(--pa-text-color-1);
184
-
185
- /* Focused state */
186
- --drp-day-focused-outline: #{$accent-color};
187
-
188
- /* Disabled state */
189
- --drp-day-disabled-color: var(--pa-text-color-2);
190
- --drp-day-disabled-opacity: #{$opacity-disabled};
191
-
192
- /* Other month */
193
- --drp-day-other-month-color: var(--pa-text-color-2);
194
- --drp-day-other-month-opacity: #{$opacity-muted};
195
-
196
- /* ===== BADGES ===== */
197
-
198
- /* Dot badges (original style) */
199
- --drp-badge-size: 0.6rem; /* 6px (10px base) */
200
- --drp-badge-primary: #{$btn-primary-bg};
201
- --drp-badge-success: #{$success-bg};
202
- --drp-badge-warning: #{$warning-bg};
203
- --drp-badge-danger: #{$danger-bg};
204
- --drp-badge-info: #{$info-bg};
205
-
206
- /* Number badges */
207
- --drp-badge-number-bg: #{$danger-bg};
208
- --drp-badge-number-color: #ffffff;
209
-
210
- /* Count badges */
211
- --drp-badge-count-bg: #{$accent-color};
212
- --drp-badge-count-color: #ffffff;
213
-
214
- /* Text badges */
215
- --drp-badge-text-bg: #{$accent-light};
216
- --drp-badge-text-color: var(--pa-text-color-1);
217
-
218
- /* ===== SUMMARY BAR ===== */
219
-
220
- --drp-summary-bg: #{$card-header-bg};
221
- --drp-summary-border-color: #{$border-color};
222
- --drp-summary-text-color: var(--pa-text-color-1);
223
- --drp-summary-count-color: #{$accent-color};
224
- --drp-summary-padding: #{$spacing-sm} #{$spacing-md};
225
- --drp-summary-font-size: #{$font-size-sm};
226
- --drp-summary-font-weight: #{$font-weight-medium};
227
-
228
- /* ===== BUTTONS ===== */
229
-
230
- /* Today button */
231
- --drp-button-today-bg: #{$btn-secondary-bg};
232
- --drp-button-today-bg-hover: #{$btn-secondary-bg-hover};
233
- --drp-button-today-color: #{$btn-secondary-text};
234
- --drp-button-today-border: #{$border-color};
235
-
236
- /* Clear button */
237
- --drp-button-clear-bg: #{$btn-secondary-bg};
238
- --drp-button-clear-bg-hover: #{$btn-secondary-bg-hover};
239
- --drp-button-clear-color: #{$btn-secondary-text};
240
- --drp-button-clear-border: #{$border-color};
241
-
242
- /* Cancel button */
243
- --drp-button-cancel-bg: #{$btn-secondary-bg};
244
- --drp-button-cancel-bg-hover: #{$btn-secondary-bg-hover};
245
- --drp-button-cancel-color: #{$btn-secondary-text};
246
- --drp-button-cancel-border: #{$border-color};
247
-
248
- /* Apply button */
249
- --drp-button-apply-bg: #{$btn-primary-bg};
250
- --drp-button-apply-bg-hover: #{$btn-primary-bg-hover};
251
- --drp-button-apply-color: #{$btn-primary-text};
252
- --drp-button-apply-border: #{$btn-primary-bg};
253
-
254
- /* Button sizing */
255
- --drp-button-padding: #{$btn-padding-sm-v} #{$btn-padding-sm-h};
256
- --drp-button-font-size: #{$font-size-sm};
257
- --drp-button-border-radius: #{$border-radius};
258
- --drp-button-gap: #{$spacing-sm};
259
-
260
- /* ===== UNIFIED NAVIGATION ===== */
261
-
262
- /* Range selectors in unified nav */
263
- --drp-unified-range-text-color: var(--pa-text-color-1);
264
- --drp-unified-range-bg-hover: #{$accent-hover};
265
- --drp-unified-range-bg-active: #{$accent-light};
266
-
267
- /* Month/Year display */
268
- --drp-unified-month-color: var(--pa-text-color-1);
269
-
270
- /* Rolling selector disabled state */
271
- --drp-unified-rolling-disabled-color: var(--pa-text-color-2);
272
-
273
- /* ===== ROLLING SELECTOR ===== */
274
-
275
- --drp-rolling-bg: var(--pa-card-bg);
276
- --drp-rolling-border: #{$border-color};
277
- --drp-rolling-shadow: #{$shadow-md};
278
- --drp-rolling-item-hover-bg: #{$accent-hover};
279
- --drp-rolling-item-selected-bg: #{$accent-color};
280
- --drp-rolling-item-selected-text: #ffffff;
281
- --drp-rolling-font-size: #{$font-size-sm};
282
- --drp-rolling-item-text-color: var(--pa-text-color-1);
283
- --drp-rolling-item-disabled-color: var(--pa-text-color-2);
284
-
285
- /* ===== LOADING OVERLAY ===== */
286
-
287
- --drp-loading-bg: rgba(255, 255, 255, 0.8);
288
- --drp-loading-spinner-color: #{$accent-color};
289
- --drp-loading-spinner-size: #{$spinner-size};
290
-
291
- /* ===== MULTIPLE MONTHS ===== */
292
-
293
- --drp-months-gap: #{$spacing-lg};
17
+ /* Web Multiselect - Group label styling */
18
+ web-multiselect {
19
+ --ms-group-label-color: var(--base-text-color-1);
20
+ --ms-group-label-font-weight: 600;
294
21
  }
@@ -92,6 +92,35 @@
92
92
  font-size: $font-size-lg;
93
93
  }
94
94
 
95
+ // Textarea Sizes - height sets initial size, min-height prevents shrinking below that
96
+ .pa-textarea--xs {
97
+ height: 4rem;
98
+ min-height: 4rem;
99
+ padding: $input-padding-xs-v $input-padding-h;
100
+ font-size: $font-size-xs;
101
+ }
102
+
103
+ .pa-textarea--sm {
104
+ height: 6rem;
105
+ min-height: 6rem;
106
+ padding: $input-padding-v $input-padding-h;
107
+ font-size: $font-size-sm;
108
+ }
109
+
110
+ .pa-textarea--lg {
111
+ height: 12rem;
112
+ min-height: 12rem;
113
+ padding: $input-padding-v $input-padding-h;
114
+ font-size: $font-size-base;
115
+ }
116
+
117
+ .pa-textarea--xl {
118
+ height: 16rem;
119
+ min-height: 16rem;
120
+ padding: $input-padding-v $input-padding-h;
121
+ font-size: $font-size-lg;
122
+ }
123
+
95
124
  // Dark mode: invert native date/time picker icons for visibility
96
125
  .pa-mode-dark {
97
126
  input[type="date"],
@@ -86,4 +86,30 @@
86
86
  &--success {
87
87
  color: var(--pa-success-bg);
88
88
  }
89
+
90
+ &--warning {
91
+ color: var(--pa-warning-bg);
92
+ }
93
+ }
94
+
95
+ // Theme Color Variants for Help Text (color-1 through color-9)
96
+ @for $i from 1 through 9 {
97
+ .pa-form-help--color-#{$i} {
98
+ color: var(--pa-color-#{$i});
99
+ }
100
+ }
101
+
102
+ // Theme Color Variants for Inputs (color-1 through color-9)
103
+ // These use theme-customizable colors from --pa-color-* CSS variables
104
+ @for $i from 1 through 9 {
105
+ .pa-input--color-#{$i},
106
+ .pa-select--color-#{$i},
107
+ .pa-textarea--color-#{$i} {
108
+ border-color: var(--pa-color-#{$i});
109
+
110
+ &:focus {
111
+ border-color: var(--pa-color-#{$i});
112
+ box-shadow: 0 0 0 $focus-ring-width color-mix(in srgb, var(--pa-color-#{$i}) 25%, transparent);
113
+ }
114
+ }
89
115
  }